在我的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行后有一个获取所选项目的解决方案吗?
答案 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" >
您可以将事件更改为双击。