在primefaces数据表中设置来自辅助bean的选定行

Kar*_*k_B 8 primefaces jsf-2

我正在使用带有可点击行的primefaces数据表,我需要找到如何从支持bean设置选定行的方法.

有我的数据表定义:

<p:dataTable id="cablePathTable" var="cablePath" value="#{commonTableBean.cableLazyModel}" rows="100"
         selectionMode="single" selection="#{commonTableBean.selectedCablePathTblRow}" 
         rowIndexVar="rowIndex"  widgetVar="datatableVar"
         emptyMessage="---">  
<p:ajax event="rowSelect" process="@this" update=":form:portFieldset" />

<p:column headerText="No">  
    <h:outputText value="#{cablePath.column1}" />  
</p:column>
<p:column headerText="Port A">  
    <h:outputText value="#{cablePath.column4}" />  
</p:column>
<p:column headerText="Port B">  
    <h:outputText value="#{cablePath.column5}" />  
</p:column>
Run Code Online (Sandbox Code Playgroud)

我尝试了以下方法,但没有成功.在支持bean中我添加了方法:

public void test(){
    DataTable dataTable = (DataTable) FacesContext.getCurrentInstance().getViewRoot().findComponent("form:cablePathTable");
    dataTable.setRowIndex(2);
}
Run Code Online (Sandbox Code Playgroud)

我在XHTML页面添加了测试按钮:

<p:commandButton process="@this" update=":form:cablePathTable" value="set2row" action="commonTableBean.test"/>
Run Code Online (Sandbox Code Playgroud)

但是nothig在数据表上有所改变,选择没有改变......

请任何想法如何解决这个问题?

Bal*_*usC 8

只需设置值selection="#{commonTableBean.selectedCablePathTblRow}".

public void test(){
    selectedCablePathTblRow = cablepath;
}
Run Code Online (Sandbox Code Playgroud)