Was mache ich nicht richtig?
@Named("utilityController")
@RequestScoped
public class UtilityController {
public DataModel<Result> getResultSample() {
Result[] resultSample = new Result[11];
//Populate the array
return new ArrayDataModel<>(resultSample);
}
}
In der JSF:
<h:dataTable id="sampleResult" value="#{utilityController.resultSample}" var="item" styleClass="table table-bordered table-striped table-hover table-condensed" >
<h:column>
<f:facet name="header">SN</f:facet>
#{utilityController.resultSample.rowIndex}
</h:column>
<h:column>
<f:facet name="header">Subject</f:facet>
#{item.subject.name}
</h:column>
....
</h:dataTable>
Der rowIndex gibt immer 0 zurück, wie oben zu sehen ist. Bitte können mir einige helfen, herauszufinden, was ich falsch mache
Was mache ich nicht richtig?
Erstellen des Modells in einer Getter-Methode. TU das niemals. Alle Getter-Methoden sollten folgendermaßen aussehen:
public DataModel<Result> getResultSample() {
return resultSample;
}
Die Getter-Methode wird bei jeder Iterationsrunde aufgerufen. Grundsätzlich löschen Sie das Modell aus der vorherigen Iterationsrunde und geben ein brandneues Modell zurück, wobei alle Status (z. B. der aktuelle Zeilenindex) auf den Standardwert zurückgesetzt werden.
Verschieben Sie diesen Job in die Bean- @PostConstruct
Methode.
private DataModel<Result> resultSample;
@PostConstruct
public void init() {
Result[] results = new Result[11];
// ...
resultSample = new ArrayDataModel<Result>(results);
}
public DataModel<Result> getResultSample() {
return resultSample;
}
In Bezug auf Ihre konkreten funktionalen Anforderungen können Sie auch nur referenzieren, UIData#getRowIndex()
ohne den Wert in a zu verpacken DataModel
.
public Result[] getResults() { // Consider List<Result> instead.
return results;
}
<h:dataTable binding="#{table}" value="#{bean.results}" var="result">
<h:column>#{table.rowIndex + 1}</h:column>
<h:column>#{result.subject.name}</h:column>
</h:dataTable>
Beachten Sie, dass ich es mit 1 erhöht habe, da es auf 0 basiert, während Menschen einen 1-basierten Index erwarten.
Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.
Bei Verstößen wenden Sie sich bitte [email protected] Löschen.
Lass mich ein paar Worte sagen