双击JSF2中的Richfaces extendedDataTable时获取所选项目

时间:2014-01-02 14:52:43

标签: jsf-2 datatable richfaces selection

在我的JSF 2应用程序中,我有一个Richfaces extendedDataTable。当我双击一行时,我想离开此页面,我将在另一页上显示所选表条目的详细信息。我在表格页面中尝试了以下内容:

<rich:extendedDataTable 
    value="#{bean.loadedAnfragen}" var="anfrage"
    selection="#{bean.selectedAnfrage}" id="anfragenTable"
    selectionMode="single" 
    onrowdblclick="showAnfrage();">

    ... here are my columns ...

</rich:extendedDataTable>

<a4j:jsFunction name="showAnfrage"  action="#{bean.showAnfrage}" />

调用bean中的方法,但选择(我双击的行)为null。这是适当方法的代码:

public void showAnfrage() {

    UIExtendedDataTable table = ( UIExtendedDataTable )FacesContext.getCurrentInstance().getViewRoot().findComponent( "mainForm:anfragenTable" );

    if( table != null ) {
        for( Object selection : table.getSelection() ) {
            System.out.println( "Thats the selected object: " + selection );
        }
    }
}

我也试过一些ajax的东西。我希望在f:setPropertyActionListener标记内使用a4j:ajax传递选择,但这是不可能的,因为数据表本身不是动作源,因此无法调用setPropertyActionListener标记。 Doeas有人在双击extendedDataTable行后有一个获取所选项目的解决方案吗?

1 个答案:

答案 0 :(得分:2)

我用onrowclick实现了它:

    <a4j:jsFunction name="selectRow" action="#{chAction.selectClient}">
        <a4j:param name="selectedClientId" assignTo="#{chAction.selectedClientId}" />
    </a4j:jsFunction>

    <rich:dataTable id="chTable"
        rows="#{referenceData.recordsPerPage}" style="width: 100%"
        value="#{chAction.clients}" var="res" sortMode="single"
        rowClasses="oddrow, evenrow"
        onrowclick="selectRow('#{res.clientId}')"
        rowKeyVar="currRow" >

您可以将事件更改为双击。