You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@tiles.apache.org by "Antonio Petrelli (JIRA)" <ji...@apache.org> on 2008/12/09 10:00:37 UTC

[jira] Commented: (TILES-338) AddAttributeTag only uses the first "value" ever set when value is body content

    [ https://issues.apache.org/struts/browse/TILES-338?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=45190#action_45190 ] 

Antonio Petrelli commented on TILES-338:
----------------------------------------

Oh dear you're right!
In the release method docs I read:

Called on a Tag handler to release state. The page compiler guarantees that JSP page implementation objects will invoke this method on all tag handlers, but there may be multiple invocations on doStartTag and doEndTag in between. 

This essentially means that *all* the tags are flawed!

> AddAttributeTag only uses the first "value" ever set when value is body content
> -------------------------------------------------------------------------------
>
>                 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.