Uploaded image for project: 'Tiles'
  1. Tiles
  2. TILES-338

AddAttributeTag only uses the first "value" ever set when value is body content

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 2.1.0
    • 2.1.1
    • None

    Description

      In AddAttributeTag#doAfterBody:

      /**

      • Save the body content of this tag (if any).
        *
      • @return It returns <code>SKIP_BODY</code>.
        */
        public int doAfterBody()
        Unknown macro: { 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

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              znbailey Zach Bailey
              Votes:
              1 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: