Uploaded image for project: 'MyFaces Core'
  1. MyFaces Core
  2. MYFACES-1010

Extended Data Table: Action Event delivered more than one time

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Won't Fix
    • 1.1.1
    • 1.1.2
    • General
    • None
    • Apache Tomcat 5.5.12 or OC4j 10.1.3 DP4, Win Xp, Sun RI 1.1.01 , JDK 1.5

    Description

      Hi,
      I'm trying using Tomahawk t:dataTable and it seems to me that its behaviour is very different from the standard JSF h:dataTable.
      Consider a column which contains a command button and a table with two rows. When the user clicks on the button of the first row, two action events are generated!

      For example, look at this very simple code:

      <f:view>
      <h:form>
      <h:dataTable value="#

      {testBean.persons}" var="item" binding="#{testBean.uiData}">
      <h:column>
      <h:commandButton value="Test" action="#{testBean.test}"></h:commandButton>
      </h:column>
      <h:column>
      <h:outputText value="#{item.name}"></h:outputText>
      </h:column>
      <h:column>
      <h:outputText value="#{item.surname}"></h:outputText>
      </h:column>
      </h:dataTable>
      <t:dataTable value="#{testBean.persons}

      " var="item" binding="#

      {testBean.htmlDataTable}

      " preserveDataModel="false">
      <t:column>
      <h:commandButton value="Test" action="#

      {testBean.test2}

      "></h:commandButton>
      </t:column>
      <t:column>
      <h:outputText value="#

      {item.name}

      "></h:outputText>
      </t:column>
      <t:column>
      <h:outputText value="#

      {item.surname}

      "></h:outputText>
      </t:column>
      </t:dataTable>
      </h:form>
      </f:view>

      When the user clicks the "Test" button of the h:dataTable, the "testBean.test" method is executed just one time.
      But when the user clicks the "Test" button of the t:dataTable the "testBean.test2" method is executed twice ( or three times if the table has 3 rows, and so on...).

      I suppose that the problem is that the elements of t:dataTable which belongs to differnt rows have the same ID, and during the processDecode phase the same event is broadcasted more than one time.
      In fact, this is the html code which is generated by Tomahawk extended datatable:

      <table>
      <tbody id="_id0:_id8:tbody_element">
      <tr>
      <td><input type="submit" name="_id0:_id8:_id10" value="Test" /></td>
      <td>John</td>
      <td>Smith</td>
      </tr>
      <tr><td><input type="submit" name="_id0:_id8:_id10" value="Test" /></td>
      <td>Mark</td>
      <td>Greene</td>
      </tr></tbody>
      </table>

      and this is the html code which is generated by RI h:dataTable:

      <table>
      <tbody>
      <tr>
      <td><input type="submit" name="_id0:_id1:0:_id3" value="Test" /></td>
      <td>John</td>
      <td>Smith</td>
      </tr>
      <tr>
      <td><input type="submit" name="_id0:_id1:1:_id3" value="Test" /></td>
      <td>Mark</td>
      <td>Greene</td>
      </tr>
      </tbody>
      </table>

      Attachments

        Issue Links

          Activity

            People

              mbroekelmann Mathias Broekelmann
              tassoc Claudio Tasso
              Votes:
              2 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: