ho questa semplice pagina:primefaces DataTable, il caricamento pigro e CommandButton per riga
<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>
e CommandButton
all'interno DataTable
non funziona, si aggiorna la pagina. ma quello esterno sta funzionando.
se cambio value
e lazy
in questo modo:
<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>
il CommanButton
all'interno DataTable
funziona come un fascino.
qualcuno sa perché?
è un bug?
io sono sul
- Glassfish 3.1.2
- JSF 2.1.11 (Mojarra)
- primefaces 3.4-snapshot
Questo non è del tutto vero: è utile se la stessa istanza di 'LazyDataModel' si trova nel sessione con l'uso di '@ ViewScoped', ma puoi anche usare' @ RequestScoped'. Il punto è che il metodo 'isRowAvailable()' deve restituire true quando viene valutato in 'APPLY_REQUEST_VALUES' e il campo' pageSize' deve contenere un valore maggiore di zero. Ho raggiunto questo risultato estendendo 'LazyDataModel' mentre sovraccarico due metodi:' isRowAvailable() ', qui chiamo' load (...) 'e applichiamo il risultato a' setWrappedData() 'e il secondo metodo' setRowIndex (int rowIndex) 'dove ho impostato' pageSize' sul mio valore predefinito – uvo