You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@myfaces.apache.org by "Leonardo Uribe (JIRA)" <de...@myfaces.apache.org> on 2015/04/01 01:21:52 UTC

[jira] [Commented] (MYFACES-3962) Duplicate ID exception thrown while iterating with c:forEach

    [ https://issues.apache.org/jira/browse/MYFACES-3962?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14389650#comment-14389650 ] 

Leonardo Uribe commented on MYFACES-3962:
-----------------------------------------

I have notice the issue dissapear if you do something to change id according to the row like this:

    <c:forEach var="x" items="#{fn:split('a b c d e', ' ')}">
        <h:outputText id="some-id#{x}" value="#{x}"/>,
    </c:forEach>

The problem with generate new ids here is the state. If you add a value in the middle of the c:forEach items, the state will not be correctly assigned to the row, because since start there is no association between the element and the state.

Enforce the syntax to add something else to the id is preferred, because the state and the ids are consistent. There is also a performance problem, because to generate new ids, if they are duplicated requires check the duplicate for every component id, and that kind of calculation does not scale well. It degrades the algorithm from linear to exponential, not to mention the other nasty issues related to the state.

There is also the consideration for tags like f:ajax, which points to the id of a component. If you generate an id in that part, f:ajax stops working, because the right component will not be found.

I personally prefer a duplicate id exception, because there is a workaround that is just trivial and it is compatible with both implementations. I'll close this issue as won't fix. Thanks for the report.

> Duplicate ID exception thrown while iterating with c:forEach
> ------------------------------------------------------------
>
>                 Key: MYFACES-3962
>                 URL: https://issues.apache.org/jira/browse/MYFACES-3962
>             Project: MyFaces Core
>          Issue Type: Bug
>          Components: General
>    Affects Versions: 2.2.7
>            Reporter: Mircea Toma
>         Attachments: test.war
>
>
> A duplicate ID exception is thrown when iterating over a collection/array with c:forEach. The exception occurs only when the enclosed components have an ID assigned.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)