JSF-Komponente ohne Bindung bean-Eigenschaft
Wie genau funktioniert der folgende code funktioniert:
#{aaa.id}
<h:inputText id="txt1" binding="#{aaa}"/>
Ich meine, in der Regel die Komponente, die Bindung funktioniert, indem Sie eine Eigenschaft (vom Typ UIComponent) in einer Bohne. Hier gibt es keine bean-noch Sachschäden sind, aber dennoch den Namen "aaa" bekommt gebunden korrekt (Anzeige der Modul-id - "txt1"). Wie funktioniert es/wo wird es angegeben?
Dank
UPDATE: Der JSF2.0 Spec [pdf] (Kapitel 3.1.5) sagt:
"Ein-Komponente-Bindung ist eine spezielle Wert-Ausdruck verwendet werden können, zu erleichtern "Verkabelung" eine Komponenteninstanz zu einem
entsprechenden Eigenschaft einer JavaBean... Die angegebene ValueExpression müssen Punkt-zu-Lesen-schreiben JavaBeans-property vom Typ UIComponent (oder
entsprechende Unterklasse)."
InformationsquelleAutor jarek.jpa | 2011-11-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist in der Standard-EL-Umfang beim Bau der view-Baum (das ist, wenn alle
binding
Attribute -- und Attribute der tag-Handler wie JSTL<c:xxx>
- und JSF<f:xxx>
-- bewertet). Es ist durch normalen EL bedeutet, dass beim Rendern des view-Baumes. Rendering der view-Baum passiert nach Gebäude der view-Baum, so dass es funktioniert auf diese Weise. Es ist nicht so, dass dieser code ausgeführt wird "Zeile für Zeile", wie Sie schien zu erwarten, dass von der Quelle.Ich kann nicht Sie zeigen einen einzigen Hinweis, wo es angegeben ist, gibt es keine. Sie würde Lesen müssen, um sowohl die EL spec und JSF-spec getrennt und eine 1+1=2.
Durch die Art und Weise, um Verwirrung zu vermeiden, unter den neuen Entwicklern und zu vermeiden Kollisionen mit existierenden Variablen in der EL Bereiche, die Sie verwenden können, eine
java.util.HashMap
in der Anforderung Umfang erklärt wurde, folgt imfaces-config.xml
:und ist verwendet worden wie folgt
welche mehr selbst dokumentieren.
Siehe auch:
Sie können auch interpretieren EL als "eine große virtuelle javabean". Auf
binding
JSF zu untersuchen, ob die Eigenschaft bereits existiert und wenn dem so ist, dann bekommen Sie die Komponente aus (die MÜSSEN ja eine Instanz der richtigen Unterklasse) und wenn nicht, dann nur autocreate die Komponente und dort eingelagert. Beachten Sie, dass die Eigenschaft type kannObject
oder jede andere Oberklasse die Instanz der Komponente.OK, ich mag diese interpretation. So die Schlussfolgerung ist, dass die "Bindung" Attribut dient als eine Möglichkeit, zu sparen sth (in diesem Fall die Komponente) im Rahmen der EL. Interessant.
einfach nur zu erwähnen, weil ich noch (Teil -) merke es an mir selbst: z.B. #{Komponenten.aaa} ist ein schlechtes Beispiel. Besser wäre #{Komponenten[myAbsolutelyUniqueId]} - einzigartig, weil wenn Sie haben, sagen wir 2 panelGrids oder datatables, die gleiche Id gültig seit jsf-Präfixe. Es gilt in verschiedenen Formen als gut.
h:inputText mit binding="#{var}" wirft eine Ausnahme, wenn die Eingabe ein numerischer Wert. Gibt es irgendwelche erstrictions für zahlen? Die Art der Objekte können verwendet werden?
InformationsquelleAutor BalusC