Wie binden primefaces datatable aus der managedbean
Wie binden primefaces datatable im managedbean? Wie setzen Sie die Daten, und wie setzen Sie Spalten?
Meine bean-Klasse:
public class BeanTest implements Serializable{
private String name;
private String email;
private int age;
//getters and setters
}
Mein managed bean:
public class TestTable implements Serializable{
private DataTable tabela;
private List<BeanTest> lista;
@PostConstruct
public void init() {
int age= 18;
this.lista = new ArrayList<>();
this.lista.add(new BeanTest("name1", "email1", age));
this.lista.add(new BeanTest("name2", "email2", age++));
this.lista.add(new BeanTest("name3", "email3", age++));
this.tabela = new DataTable();
Column column1 = new Column();
column1.setHeaderText("Nome");
Column column2 = new Column();
column2.setHeaderText("Email");
Column column3 = new Column();
column3.setHeaderText("Idade");
this.getTabela().getChildren().add(column1);
this.getTabela().getChildren().add(column2);
this.getTabela().getChildren().add(column3);
this.getTabela().setValue(this.lista);
}
}
JSF-Seite:
<p:dataTable id="datalist" binding="#{testeTabela.tabela}">
</p:dataTable>
Diese Anzeige der Tabelle mit drei Spalten (richtig, die Anzahl und die überschriften) und drei Zeilen(die richtigen zahlen), aber es gibt keine Daten in meine Zeilen. Leerer Tisch nur mit den Grenzen der Zellen.
Was ist passiert? Wie konnte ich das binden von Spalten und Daten?
- Vermeiden
binding
und langweilig Java-code-Möglichkeiten, bis/es sei denn, absolut notwendig, einige (sehr) spezielle Fälle, die in diesem Fall zu sein scheint, absolut überflüssig. Schauen Sie sich Beispiele auf der Schaufenster. (Vergessen Sie nicht, klicken Sie auf die jeweiligen links auf dieser Seite).
Du musst angemeldet sein, um einen Kommentar abzugeben.
Im Allgemeinen, eine JSF-Komponente hat 3 Teile: einen tag, eine Komponente der Klasse und einem renderer.
Den tag verantwortlich ist für die Konfiguration der Komponente. Es wird die Instantiierung der Komponente und stellen Sie die entsprechenden Attribute, Listener und Facetten. Einmal konfiguriert, wird die Komponente auf die Komponente Baum.
Mit Ihrem Beispiel, der code der Seite wird wie folgt Aussehen:
Es ist einfacher so. Jedoch, wenn Sie wollen, um im code, müssen Sie einige Komponenten in den Säulen, damit es funktioniert.
Zunächst die var Attribut der datatable. Die Komponente (datatable) iteriert über Ihre Artikel und binden Sie den aktuellen Eintrag zu diesem Namen, so dass die Kind-Komponenten können einen Ausdruck verwenden, um dynamisch Holen Sie sich diesen Wert.
Zweiten, fügen Sie ein Kind UIOutput auf die Spalte, und fügen Sie einen Ausdruck, der seine Wert Eigenschaft. Für die name-Spalte, es wäre so etwas wie dieses:
Für die anderen Spalten, es ist die gleiche Idee, außer für den Typ des Dritten UIOutput Wert:
Da kann man wahrscheinlich sehen, das kann schwer sein, Sie zu pflegen.
Verwendung von tags ist sauberer und einfacher zu Lesen.