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

UIData.getClientId() should not append rowIndex, instead use UIData.getContainerClientId()

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 2.0.0
    • 2.0.1
    • JSR-314
    • None

    Description

      from: [jsr-314-open] Ajax inside a DataTable

      Cagatay Civici

      I've faced with an issue in our app I'd like to share when trying to update the datatable itself from a command element located inside a column. Case is to select a row, execute logic and update the datatable. Basic code:

      <h:dataTable id="cars" var="car" value="#

      {tableBean.carsSmall}

      ">
      <h:column>
      <f:facet name="header">
      Model
      </f:facet>
      <h:outputText value="#

      {car.model}

      " />
      </h:column>

      <h:column>
      <f:facet name="header">
      Action
      </f:facet>
      <h:commandButton value="Some Action" actionListener="#

      {tableBean.handleRowAction(car)}

      ">
      <f:ajax render="cars" />
      </h:commandButton>
      </h:column>
      </h:dataTable>

      As datatable has a rowIndex >= 0 during rendering of commandButton f:ajax defines the component id to render as cars:

      {rowIndex}

      where I should expect "cars" only. This is due to UIData.getClientId implementation as UIData
      adds rowIndex for unique row ids. This causes an issue with a nested f:ajax case.

      Martin Marinschek

      We should never include the row-index in the client-id of the table
      itself. For this, we need to revise the client-id generation
      algorithm.

      Without actually having tried it, I think that it is easy to do so, as
      we have a UIComponentBase.getContainerClientId() to create the
      client-id of the children - when this method is called, we append the
      row-index, if getClientId() itself is called, we donĀ“t.

      Attachments

        Issue Links

          Activity

            People

              jakobkorherr Jakob Korherr
              lu4242 Leonardo Uribe
              Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: