AddAttributeTag only uses the first "value" ever set
----------------------------------------------------
Key: TILES-338
URL: https://issues.apache.org/struts/browse/TILES-338
Project: Tiles
Issue Type: Bug
Components: tiles-jsp (jsp support)
Affects Versions: 2.1.0
Reporter: Zach Bailey
In AddAttributeTag#doAfterBody:
/**
* Save the body content of this tag (if any).
*
* @return It returns <code>SKIP_BODY</code>.
*/
public int doAfterBody() {
if (value == null && bodyContent != null) { //bug here
value = bodyContent.getString();
type = "string";
}
return (SKIP_BODY);
}
The value of this tag is only being updated if there is not already a value
set. So, when this tag is used twice in succession on a page, it will always
only use the first "value" ever set!!!
I looked back at the older Tiles 2.0.6 version we were using and the code is
correct in that version - there is no "value == null" check. So, it looks as
though someone added this little check at some point in the 2.1 release, but it
seems to severely break things (at least for me!)
I see two ways of fixing this -
1.) Simply remove the value == null check, or if this check is in place for a
reason,
2.) Reset value to null after each execution of the tag in doEndTag, or
doFinally() from the TryCatchFinally interface:
http://java.sun.com/j2ee/1.4/docs/api/javax/servlet/jsp/tagext/TryCatchFinally.html
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.