[
http://www.stripesframework.org/jira/browse/STS-618?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=11556#action_11556
]
Nick Yantikov commented on STS-618:
-----------------------------------
Frederic, I do not want to pollute JIRA with my theoretical reasoning. In short
what I was trying to say is that I think Stripes should not be nulling those
properties. In my opinion the fix is in removing these lines as you suggested
but I am going to leave it up to you to decide.
It would also be great if you guys could verify that other Stripes tags do not
follow the same pattern.
> options-collection tag is rendering incorrectly when inside the loop
> --------------------------------------------------------------------
>
> Key: STS-618
> URL: http://www.stripesframework.org/jira/browse/STS-618
> Project: Stripes
> Issue Type: Bug
> Components: Tag Library
> Affects Versions: Release 1.5
> Environment: JDK 1.6.0_07, Resin 3.1.2
> Reporter: Nick Yantikov
> Assignee: Frederic Daoud
>
> Code in question (class InputOptionsCollectionTag, method doEndTag(), lines
> 345,346) :
> this.value = null;
> this.label = null;
> Problem description:
> I have the following JSP code:
> <c:forEach ...>
> ...
> <stripes:select ...>
> <stripes:options-collection collection="some_collection_here"
> label="name" value="id" />
> </stripes:select>
> ...
> </c:forEach>
> As a result of the JSP translation Resin generates the following java code:
> while (_jsp_iter_269.hasNext()) {
> ...skip...
> if (_jsp_InputOptionsCollectionTag_18 == null) {
> _jsp_InputOptionsCollectionTag_18 = new
> net.sourceforge.stripes.tag.InputOptionsCollectionTag();
> _jsp_InputOptionsCollectionTag_18.setPageContext(pageContext);
>
> _jsp_InputOptionsCollectionTag_18.setParent((javax.servlet.jsp.tagext.Tag)
> _jsp_InputSelectTag_17);
> _jsp_InputOptionsCollectionTag_18.setLabel("name");
> _jsp_InputOptionsCollectionTag_18.setValue("id");
> }
>
> _jsp_InputOptionsCollectionTag_18.setCollection(_caucho_expr_5.evalObject(_jsp_env));
> _jsp_InputOptionsCollectionTag_18.doStartTag();
> _jsp_InputOptionsCollectionTag_18.doEndTag();
> ...skip...
> }
> As you can see setLabel(), setValue() are only called once in the loop right
> after tag instance is lazily instantiated inside "if" statement.
> Once doEndTag() method is executed during the first iteration "value" and
> "label" properties are nulled and then the next iteration results in
> incorrect HTML rendering.
> Apparently Resin applies the same paradigm of tag initialization to every jsp
> tag, so this particular problem may potentially exist with other stripes's
> tags if they have similar "clean up" code at the end of the doEndTag().
> It appears that Stripes 1.4.3 does not have this problem and problem only
> appeared in 1.5
> I have not tested this particular test case with other web containers, and
> not sure if this sort of the "optimization" performed by Resin is
> appropriate, but on the other hand from the pure theoretical point of view
> since we do not control initialization of the tag properties shouldn't we be
> cleaning them ourselves?
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://www.stripesframework.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Stripes-development mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/stripes-development