jsf 2 - remote - Obtenga el elemento seleccionado al hacer doble clic en Richfaces extendedDataTable en JSF2
richfaces showcase (1)
En mi aplicación JSF 2 tengo una Richfaces extendedDataTable. Cuando hago doble clic en una fila, quiero salir de esta página y mostraré los detalles de la entrada de la tabla seleccionada en esta otra página. Intenté lo siguiente en la página de la tabla:
<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}" />
Se llama al método en el bean pero la selección (la fila donde hice doble clic) es nula. Este es el código para el método apropiado:
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 );
}
}
}
También probé algunas cosas de Ajax. Quería pasar la selección con f:setPropertyActionListener
dentro de una etiqueta a4j:ajax
pero esto es imposible porque la tabla de datos en sí no es una fuente de acción, por lo que no se puede llamar a la etiqueta setPropertyActionListener. ¿Alguien tiene una solución para obtener el artículo seleccionado después de poner en duda la fila extendedDataTable?
Lo he implementado con 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" >
Puede cambiar el evento para hacer doble clic.