rica: tabla de datos y ampliable columna con Internet Explorer
-
20-09-2019 - |
Pregunta
He creado una solución simple para las columnas / filas con una rica expandibles: tabla de datos y rica: columna, que es similar al siguiente: mejor manera de hacer una subtabla expansible / colapsable con una rica: dataTable
El código facelets está (simplificado) como sigue:
<rich:dataTable id="detailtable"
value="#{bean.model}"
var="row"
columns="2">
<rich:column id="detail-check">
<f:facet name="header">
<h:selectBooleanCheckbox value="#{bean.expandAll}">
<a4j:support event="onchange" action="#{bean.expandAllAction}"
reRender="detailtable" />
</h:selectBooleanCheckbox>
</f:facet>
<h:selectBooleanCheckbox value="#{row.expanded}">
<a4j:support event="onchange" reRender="detailtable" />
</h:selectBooleanCheckbox>
</rich:column>
<!-- actual data column -->
<rich:column id="detail-column"
rendered="#{row.expanded}"
breakBefore="true"
colspan="2">
<!-- detail column content -->
</rich:column>
</rich:dataTable>
Esto proporciona una tabla con la columna expandida cuando se hace clic en un cuadro de detalle, la columna de datos-se hace debajo de la fila actual. expandAllAction sobre copias de frijol sólo itera sobre las filas y fija su atributo ampliado para el mismo que en la copia de la haba, de este modo la expansión / unexpanding todas las filas.
Sin embargo, esto no funciona correctamente con Internet Explorer (IE7 o IE8), aunque funciona con FF y Chrome. Si el usuario hace clic en casilla de verificación, nada se hace hasta que se hace clic en cualquier otro lugar en la página. Copia de frijol y los objetos están siendo actualizadas, pero no re-representación hasta que se hace clic en algún otro elemento.
Es esto algo malvado de nuevo con IE o simplemente un error con RichFaces? He encontrado algún problema similar con IE y tbody, pero que debería haber sido fijado. Me puede presentar un informe de error, pero hasta que eso, ¿hay alguna solución sencilla?
RichFaces versión es 3.3.1 y está ejecutado en Jboss 4.2.1GA y liado Sun RI.
Solución
Trate de usar otro evento como onclick
De tldoc de selectBooleanCheckBox : onchange
es "código Javascript cuando este elemento pierde el foco y su valor se ha modificado desde que obtuvo el foco." y onclick
es "código Javascript ejecuta cuando un botón del puntero se hace clic sobre este elemento."
homóloga pregunta . Un comentario de BalusC podría confirmar mi suposición de "en el caso de las radios / casillas de verificación del evento de cambio está en ciertos navegadores única disparados si hace clic en 2 veces"