Ich hoffe, dass ich in diesem Beitrag die Meinung der Leute zu Best Practices für die Schnittstelle zwischen JSF-Seiten und Backing Beans einholen kann.
Eine Sache, auf die ich mich nie festlegen kann, ist die Struktur meiner Backing Beans. Außerdem habe ich nie einen guten Artikel zu diesem Thema gefunden.
Welche Eigenschaften gehören zu welchen Backing Beans? Wann ist es angebracht, einer bestimmten Bean mehr Eigenschaften hinzuzufügen, als eine neue Bean zu erstellen und die Eigenschaften hinzuzufügen? Ist es für einfache Anwendungen sinnvoll, nur eine einzige Backing Bean für die gesamte Seite zu haben, wenn man bedenkt, wie komplex es ist, eine Bean in eine andere zu injizieren? Sollte die Backing Bean eine tatsächliche Geschäftslogik enthalten oder sollte sie ausschließlich Daten enthalten?
Fühlen Sie sich frei, diese und andere Fragen zu beantworten.
Um die Kopplung zwischen der JSF-Seite und der Backing-Bean zu verringern, erlaube ich der JSF-Seite niemals, auf die Eigenschaften einer Backing-Bean-Eigenschaft zuzugreifen. Zum Beispiel erlaube ich niemals etwas wie:
<h:outputText value="#{myBean.anObject.anObjectProperty}" />
Ich brauche immer so etwas wie:
<h:outputText value="#{myBean.theObjectProperty}" />
mit einem Backing Bean-Wert von:
public String getTheObjectProperty()
{
return anObject.getAnObjectProperty();
}
Wenn ich eine Sammlung durchlaufe, verwende ich eine Wrapper-Klasse, um beispielsweise einen Drilldown in ein Objekt in einer Datentabelle zu vermeiden.
Im Allgemeinen fühlt sich dieser Ansatz für mich "richtig" an. Es wird jegliche Kopplung zwischen der Ansicht und den Daten vermieden. Bitte korrigieren Sie mich, wenn ich falsch liege.