Ich programmiere in JSF2 und NetBeans erstellt viele Seiten #{}
, die einen Ausdruck enthalten. Allerdings habe ich manchmal im Web ${}
für das gleiche gefunden!
Gibt es Unterschiede? Was sind Sie?
#{}
sind für verzögerte Ausdrücke (sie werden abhängig vom Lebenszyklus der Seite aufgelöst) und können zum Lesen oder Schreiben von oder in eine Bean oder zum Ausführen eines Methodenaufrufs verwendet werden .${}
sind Ausdrücke für eine sofortige Lösung , sobald sie angetroffen werden, werden sie aufgelöst. Sie sind schreibgeschützt.Weitere Informationen finden Sie hier: http://docs.oracle.com/javaee/6/tutorial/doc/bnahr.html
Eine Google-Suche nach "Java Server Faces Dollar Pound" ergab das folgende Ergebnis aus den häufig gestellten Fragen zur JBoss Expression Language :
Warum beginnen einige Ausdrücke mit Pfund und andere mit Dollarzeichen?
Für die EL-Spezifikation selbst gibt es keinen Unterschied. Es liegt an der Technologie, die die EL verwendet, um zu entscheiden, was sie bedeutet. Sowohl für JSP als auch für JSF bedeuten Ausdrücke, die mit einem Pfundzeichen beginnen, eine verzögerte Bewertung und ein Dollarzeichen eine sofortige Bewertung. Dies alles hat damit zu tun, wann der Ausdruck während der Anforderungsverarbeitung tatsächlich ausgewertet wird. Das Nummernzeichen wird in JSF-Komponenten verwendet, da der Ausdruck vom JSF-Lebenszyklus und nicht von der JSP- oder Facelets-Engine ausgewertet werden soll.
Das ist eine gute Frage! Ich habe es einmal gesehen und hatte wie Sie große Probleme, die Antwort zu finden ... bis ich auf diese Dokumentation stieß :
quelle
JSF EL verwendet einen Hash (#), wobei die JSP EL in jsf1.2 das Dollarzeichen ($) verwendet. Beide Syntaxen wurden vereinheitlicht
quelle
Die Java-Dokumentation enthält die folgende Erklärung:
Lesen Sie hier mehr: Wertausdrücke
quelle