tengo esta sencilla página:Primefaces DataTable, la carga diferida y CommandButton por fila
<h:form id="form">
<p:dataTable value="#{testBean.unitTypeModel}" var="elem" lazy="true" rows="10">
<p:column headerText="class">#{elem.class.simpleName}</p:column>
<p:column headerText="code">#{elem.code}</p:column>
<p:column headerText="description">#{elem.description}</p:column>
<p:column headerText="action">
<p:commandButton action="test2" icon="ui-icon ui-icon-wrench" value="edit">
<f:setPropertyActionListener target="#{testBean.selection}" value="#{elem}"/>
</p:commandButton>
</p:column>
</p:dataTable>
<p:commandButton action="test2" icon="ui-icon ui-icon-wrench"/>
</h:form>
y la CommandButton
dentro DataTable
no funciona, tan solo se actualiza la página. pero el exterior está funcionando.
si cambio value
y lazy
esta manera:
<h:form id="form">
<p:dataTable value="#{testBean.unitTypeModel.load(0, 10, null, null, null)}" var="elem" lazy="false" rows="10">
<p:column headerText="class">#{elem.class.simpleName}</p:column>
<p:column headerText="code">#{elem.code}</p:column>
<p:column headerText="description">#{elem.description}</p:column>
<p:column headerText="action">
<p:commandButton action="test2" icon="ui-icon ui-icon-wrench" value="edit">
<f:setPropertyActionListener target="#{testBean.selection}" value="#{elem}"/>
</p:commandButton>
</p:column>
</p:dataTable>
<p:commandButton action="test2" icon="ui-icon ui-icon-wrench"/>
</h:form>
la CommanButton
dentro DataTable
funciona como un encanto.
alguien sabe por qué?
¿es un error?
estoy en
- Glassfish 3.1.2
- JSF 2.1.11 (Mojarra)
- PrimeFaces 3.4-SNAPSHOT
Esto no es del todo cierto: es útil si la misma instancia de 'LazyDataModel' se encuentra en el sesión mediante el uso de '@ ViewScoped', pero también puede usar' @ RequestScoped'. El punto es que el método 'isRowAvailable()' debe devolver verdadero cuando se evalúa en 'APPLY_REQUEST_VALUES' y el campo' pageSize' debe contener un valor mayor que cero. Logré esto extendiendo 'LazyDataModel' mientras sobrecargaba dos métodos:' isRowAvailable() ', aquí llamo' load (...) 'y aplico el resultado a' setWrappedData() 'y el segundo método' setRowIndex (int rowIndex) 'donde establecí el' pageSize' en mi valor predeterminado – uvo