Details

    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 1.2.12-core
    • Fix Version/s: 1.2.12-core
    • Component/s: Components
    • Labels:
      None
    • Environment:
      IE7, Trinidad 1.2.11, JSF ri 1.2_12

      Description

      <tr:iterator id="itr" value="#

      {bean.valueList}

      ">

      <f:subview id="subPage">
      <jsp:include page="subPage1.jsp" />
      </f:subview>

      </tr:iterator>

      subPage1.jsp
      -------------------
      <tr:commandLink id="command" ...>

      All the comandLink IDs in the generated html are the same: itr:subPage.command
      Suppose the valueList has 10 elements, 10 commandLinks will be generated. if any command link is clicked, all the 10 bound methods will be executed in server side.

      Indice need to be add to component id under <tr:iterator>. For the example above. IDs should be

      itr:0:subPage.command
      itr:1:subPage.command
      itr:2:subPage.command
      itr:3:subPage.command
      itr:4:subPage.command
      itr:5:subPage.command
      itr:6:subPage.command
      itr:7:subPage.command
      itr:8:subPage.command
      itr:9:subPage.command

      <tr:iterator> inside <tr:iterator> has the same problem.

        Activity

        Hide
        arobinson74 Andrew Robinson added a comment - - edited

        That is not a bug. The include only happens once, and then the include will stamp out the component the include builds once per iteration. There is only one link component in your example, not several. You can also use f:setPropertyActionListener to set data based on the index or use the event passed into the actionListener to determine which loop is executing as the action event will be executed in context.

        You can go to the demo here:
        http://www.irian.at/trinidad-demo/faces/components/iterator.jspx

        See _idJsp10:0:_idJsp12 vs _idJsp10:1:_idJsp12

        To see that client ID's correctly get the index. If you have a use case otherwise, then submit a test case that shows when the client ID is not different per component stamp.

        Show
        arobinson74 Andrew Robinson added a comment - - edited That is not a bug. The include only happens once, and then the include will stamp out the component the include builds once per iteration. There is only one link component in your example, not several. You can also use f:setPropertyActionListener to set data based on the index or use the event passed into the actionListener to determine which loop is executing as the action event will be executed in context. You can go to the demo here: http://www.irian.at/trinidad-demo/faces/components/iterator.jspx See _idJsp10:0:_idJsp12 vs _idJsp10:1:_idJsp12 To see that client ID's correctly get the index. If you have a use case otherwise, then submit a test case that shows when the client ID is not different per component stamp.
        Hide
        arobinson74 Andrew Robinson added a comment - - edited

        Okay, I was able to reproduce the problem. The links are not getting the correct client ID inside the include with Trinidad 1.2.11.

        I'll upload the test case.

        Show
        arobinson74 Andrew Robinson added a comment - - edited Okay, I was able to reproduce the problem. The links are not getting the correct client ID inside the include with Trinidad 1.2.11. I'll upload the test case.
        Hide
        arobinson74 Andrew Robinson added a comment -

        Test case

        Show
        arobinson74 Andrew Robinson added a comment - Test case
        Hide
        arobinson74 Andrew Robinson added a comment -

        Work-around, remove the f:subview, the stamps are correctly created when the subview is not there.

        Show
        arobinson74 Andrew Robinson added a comment - Work-around, remove the f:subview, the stamps are correctly created when the subview is not there.
        Hide
        arobinson74 Andrew Robinson added a comment -

        Changed the code so that client IDs get reset for all UIXCollection children, not just EditableValueHolder, UIXCollection and UIXShowDetail components

        Show
        arobinson74 Andrew Robinson added a comment - Changed the code so that client IDs get reset for all UIXCollection children, not just EditableValueHolder, UIXCollection and UIXShowDetail components
        Hide
        arobinson74 Andrew Robinson added a comment -

        Found a use case where this still does not work

        Show
        arobinson74 Andrew Robinson added a comment - Found a use case where this still does not work

          People

          • Assignee:
            arobinson74 Andrew Robinson
            Reporter:
            javaone9 Dave
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development