Ich habe diese einfache Seite:Primefaces Datatable, verzögertes Laden und Befehl pro Zeile
<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>
und die CommandButton
innerhalb DataTable
nicht funktioniert, nur Seite aktualisiert. aber der eine draußen funktioniert.
wenn ich value
und lazy
diese Art und Weise zu ändern:
<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>
die CommanButton
innerhalb DataTable
funktioniert wie ein Zauber.
jemand weiß warum?
ist es ein Fehler?
ich bin auf
- Glassfish 3.1.2
- JSF 2.1.11 (Mojarra)
- PrimeFaces 3.4-SNAPSHOT
Das ist nicht ganz richtig: Es ist hilfreich, wenn die gleiche Instanz von 'LazyDataModel' in die gefunden wird Sitzung mit '@ ViewScoped', aber Sie können auch' @ RequestScoped' verwenden. Der Punkt ist, dass die Methode 'isRowAvailable()' True zurückgeben muss, wenn sie in 'APPLY_REQUEST_VALUES' ausgewertet wird und das Feld 'pageSize' einen Wert größer als Null enthalten muss. Ich habe dies erreicht, indem ich 'LazyDataModel' beim Überladen zweier Methoden erweitert habe:' isRowAvailable() ', hier lade ich' load (...) 'und verwende das Ergebnis auf' setWrappedData() 'und die zweite Methode' setRowIndex (int rowIndex) 'wo ich die' pageSize' auf meinen Standard setze – uvo