Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在排序的rich:dataTable中选择一行_Java_Ajax_Jsf 2_Richfaces_Richdatatable - Fatal编程技术网

Java 在排序的rich:dataTable中选择一行

Java 在排序的rich:dataTable中选择一行,java,ajax,jsf-2,richfaces,richdatatable,Java,Ajax,Jsf 2,Richfaces,Richdatatable,我有一个丰富的:数据表组件(RF 4.2.2.最终版)。我为表添加了rowclick侦听器,以根据行选择更新详细视图。一切正常。 但现在我正试图让我的dataTable具有可排序的标题。我跟踪了RF showcase,发现如果dataTable中的数据不是按自然顺序排列的,则行选择无法正常工作—这意味着数据在appQueryBean列表中的顺序。 但我相信类似的情况在RF 3.X中也可以 我的页面: <h:form id="appFormId"> <div>

我有一个丰富的:数据表组件(RF 4.2.2.最终版)。我为表添加了rowclick侦听器,以根据行选择更新详细视图。一切正常。 但现在我正试图让我的dataTable具有可排序的标题。我跟踪了RF showcase,发现如果dataTable中的数据不是按自然顺序排列的,则行选择无法正常工作—这意味着数据在appQueryBean列表中的顺序。 但我相信类似的情况在RF 3.X中也可以

我的页面:

<h:form id="appFormId">
    <div>
        <rich:dataTable id="appListTableId" value="#{appQuery.applicationList}" 
                        var="row" rendered="#{!empty appQuery.applicationList}"
                        rows="50" styleClass="styledTable">
            <a:ajax 
               listener="#{appQuery.actionListener(row.id)}"
                event="rowclick" render=":applistform:appViewId"/> 
            <rich:column style="width:10%">
                <f:facet name="header">#{msg['ID']}</f:facet>
                <h:outputText value="#{row.id}" />
            </rich:column>
            <rich:column style="width:20%" sortBy="#{row.code}" 
                  sortOrder="#{applicationSortManager.sortOrder}">
                <f:facet name="header">
                    <a:commandLink 
                        value="#{msg['APPLICATION.CODE']}" render="appListTableId" 
                        action="#{applicationSortManager.sortByCode}" /></f:facet>
                <h:outputText value="#{row.code}" />
            </rich:column>
            <rich:column style="width:50%">
                <f:facet name="header">#{msg['APPLICATION.NAME']}</f:facet>
                <h:outputText value="#{row.name}" />
            </rich:column>
            <f:facet name="footer">
                <rich:dataScroller id="appBottomScroller" for="appListTableId" 
                        renderIfSinglePage="false" immediate="true" align="left"/>
        </f:facet>    
        </rich:dataTable>
    <div>
</h:form>
AppQuery是具有test actionListener实现的ViewScope组件:

public void actionListener(Long _idApplication){
System.out.println("Action listener - appId: " + _idApplication);
}
无论dataTable中的实际顺序是什么-当我在第一行中单击时,我总是得到appId:1,当第二行单击时,得到appId:2


如果dataTable已排序,如何从我单击的行中获取数据?

让我忘记richfaces表,但请记住它为myform:mytable:1:keyValue等元素生成的ID。在表的td上创建“onclick”侦听器,并使用一些智能jquery选择器或纯js从事件源获取所需的行元素。然后按行调用的键值加载/显示行的详细信息。可能吗?让我忘记richfaces表,但请记住它为myform:mytable:1:keyValue等元素生成的ID。在表的td上创建“onclick”侦听器,并使用一些智能jquery选择器或纯js从事件源获取所需的行元素。然后按行调用的键值加载/显示行的详细信息。可能的
public void actionListener(Long _idApplication){
System.out.println("Action listener - appId: " + _idApplication);
}