Jsf richfaces数据表排序与rowclick事件

Jsf richfaces数据表排序与rowclick事件,jsf,datatable,richfaces,javabeans,richdatatable,Jsf,Datatable,Richfaces,Javabeans,Richdatatable,排序后,Richfaces datatable为rowclick事件返回错误的行。 例如:test.xhtml <rich:dataTable id="testId" value="#{testBean.names}" var="name"> <a4j:ajax event="rowclick" listener="#{testBean.selectName(name)}" /> <rich:column id="name" sortBy="#{name}"

排序后,Richfaces datatable为rowclick事件返回错误的行。 例如:test.xhtml

<rich:dataTable id="testId" value="#{testBean.names}" var="name">
  <a4j:ajax event="rowclick" listener="#{testBean.selectName(name)}" />
  <rich:column id="name" sortBy="#{name}" sortOrder="#{testBean.nameOrder}">
    <f:facet name="header">
      <a4j:commandLink value="Name" execute="@this" render="testId" action="#{testBean.sortByName}" />
    </f:facet>
    <h:outputText value="#{name}" />
  </rich:column>
</rich:dataTable>
TestBean.java

public class TestBean {

    private List<String> names;
    private SortOrder nameOrder = SortOrder.unsorted;

    public TestBean() {
        names = new ArrayList<>(Arrays.asList("BBBB", "AAAA", "DDDD", "CCCC"));
    }

    public List<String> getNames() {
        return names;
    }

    public void selectName(final String name){
        System.out.println(name);
    }

    public void sortByName() {
        if (nameOrder.equals(SortOrder.ascending)) {
            setNameOrder(SortOrder.descending);
        } else {
            setNameOrder(SortOrder.ascending);
        }
    }

    public SortOrder getNameOrder() {
        return nameOrder;
    }

    public void setNameOrder(SortOrder nameOrder) {
        this.nameOrder = nameOrder;
    }
}
如果您运行上面的代码,您将看到每当您单击第一行AAAA时,它将打印控制台BBBB。 当我在firebug上检查它时,我注意到行索引与单元格索引不匹配

<tr id="**page:testId:0**" class="rf-dt-r rf-dt-fst-r" onclick="RichFaces.ajax(this,event,{"parameters":{"javax.faces.behavior.event":"rowclick","org.richfaces.ajax.component":"page:testId"} ,"sourceId":this} )">
    <td id="**page:testId:1:name**" class="rf-dt-c">AAAA</td>
</tr>

这是一只脸上的虫子吗?有人能帮我解决这个问题吗?

刚刚注意到这是这个问题的重复:我通过使用jquery的客户端排序解决了我的问题。有关更多详细信息,请查看: