JSTL Expression Language Zugriff auf Objekt Eigenschaften
War ich nach einem tutorial heute, dass hatte mir meinen Kopf kratzen für eine Stunde. Bedenken Sie:
public class MyClass {
public int getTotal() {
amount = 100;
return amount;
}
}
und ein Auszug aus der JSP:
<p>Total: ${objectOfTypeMyClass.total}</p> //object instantiated elsewhere
Nirgendwo im code war eine Instanz-variable namens "insgesamt" immer deklariert oder verwendet werden. Der einzige Verweis auf das Wort "Summe" in das gesamte Projekt (anders als in den JSP) wurde die Methode getTotal().
Also nach einigen verzweifelten letzten verzweifelten Experimente, es scheint, dass die Expression Language wertet ${someObject.var} wie "rufen Sie die getVar() Methode der someObject Objekt.
Arbeitete ich mit diesem langen tutorial für über eine Woche zu denken, dass ${someObject.var} schon sagte "direkt abrufen der gespeicherten Instanz-variable "var" von someObject.
Habe ich es falsch die ganze Zeit und ist meine Beobachtung richtig, dass um den Verweis auf eine Instanz-variable mit EL, Sie haben vor, eine entsprechende getter-Methode namens " getVarname() wo "Varname" ist der name der Instanz Variablen?
Auch, EL scheint zu sein, groß- /Kleinschreibung in dieser Hinsicht. In meinem Beispiel oben, "Gesamt" in ${objectOfTypeMyClass.insgesamt} alle Kleinbuchstaben in denen die Methode getTotal() hat ein großes "T".
Und wenn wir schon dabei sind, warum tun wir das nicht müssen, instanziieren Sie die variable "total"? Ich denke EL ist nicht der Bezug auf eine Instanz-variable,...einfach eine get-Methode?
Was gibt?
- Betrachten Sie die Registrierung Ihres Kontos. Ihre anderes Konto ist jetzt vollständig entkoppelt. Nicht registrierte Kunden können nur zugegriffen werden/verwendet mit dem selben PC/webbrowser solange die cookies nicht gelöscht.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Richtig. EL haftet die JavaBeans-Spezifikation, wie beschrieben in der EL-Spezifikation.
Nein, es ist sicherlich nicht groß-und Kleinschreibung. Er spezifiziert Verhalten.
${bean.Total}
würde nicht gearbeitet haben.Es ist, weil es angeblich die Einhaltung der Javabean-Spezifikation.
Alles, Lesen Sie die beiden Spezifikationen und alles wird klar 🙂
Siehe auch:
Den
.
imobjectOfTypeMyClass.total
ist die JSTL EL Dot-Operator. Es können ein paar verschiedene Dinge. Inklusive:map.key
Zugriff auf einen Wert ausmap
gespeichert unterkey
. oderobject.property
Zugriffeproperty
ausobject
mit "JavaBeans" - Konventionen.Sollte dies funktionieren: