Verwendung von # (Pfundzeichen)
OGNL wird verwendet, um auf Objekte im ActionContext wie folgt zu verweisen:
objectName
: Objekt im ValueStack (Standard- / Stammobjekt im OGNL-Kontext), z. B. eine Action-Eigenschaft
#objectName
: Objekt im ActionContext, aber außerhalb des ValueStack, speziell ...
#objectName
: ActionContext-Objekt, das mit den Struts2-Daten-Tags mit dem Standardaktionsbereich erstellt wurde (z. B. <s:set name="foo" value="'Testing'" />
referenziert von <s:property value="#foo" />
)
#parameters.objectName
: Anforderungsparameter
#request.objectName
: Attribut mit Anforderungsbereich
#session.objectName
: Attribut mit Sitzungsbereich
#application.objectName
: Attribut mit Anwendungsbereich
#attr.objectName
: Attribut in Seite, Anforderung, Sitzung oder Anwendungsbereich (in dieser Reihenfolge gesucht)
Die oben genannten Kartenreferenzen mit Gültigkeitsbereich (Parameter, Anforderung, Sitzung und Anwendung) können auf zwei Arten erstellt werden:
#scopeName.objectName
oder
#scopeName['objectName']
Verwendung von% (Prozentzeichen)
%{ OGNL expression }
wird verwendet, um die OGNL-Auswertung eines Attributs zu erzwingen, das normalerweise als String-Literal interpretiert wird.
Beispiel: <s:property value="myProperty" default="%{myDynamicDefaultValue}" />
Verwendung von @ (am Zeichen)
Das @ -Symbol wird verwendet, um auf statische Eigenschaften und Methoden zu verweisen. Beachten Sie, dass Sie dies möglicherweise in Ihren Struts2-Eigenschaften aktivieren müssen:struts.ognl.allowStaticMethodAccess=true
Beispiele:
@my.package.ClassName@MY_STATIC_PROPERTY
@my.package.ClassName@myStaticMethod
Verwendung von $ (Dollarzeichen)
Struts2 OGNL verwendet das Dollarzeichen nicht besonders. Es kann jedoch verwendet werden, um normale JSTL-Ausdrücke auszuwerten. Zum Beispiel:
Struts2: <h1><s:property value="#pageTitle" /></h1>
(entspricht ...)
JSTL:<h1>${pageTitle}</h1>
<s:property>
xss hack sicher ist, während${}
es nicht ist. Verwenden Sie${}
mit Vorsicht!allowStaticMethodAccess
es bald aus dem Struts-Das Framework verwendet einen Standard-Namenskontext, um OGNL-Ausdrücke auszuwerten. Das Objekt der obersten Ebene, das sich mit OGNL befasst, ist eine Karte (normalerweise als Kontextkarte oder Kontext bezeichnet). OGNL hat die Vorstellung, dass sich im Kontext ein Stammobjekt (oder ein Standardobjekt) befindet. Im Ausdruck können die Eigenschaften des Stammobjekts ohne einen speziellen "Marker" -Begriff referenziert werden. Verweise auf andere Objekte sind mit einem Nummernzeichen (#) gekennzeichnet.
Das Framework legt den OGNL-Kontext als unseren ActionContext und den Wertestapel als das OGNL-Stammobjekt fest. (Der Wertestapel besteht aus mehreren Objekten, für OGNL scheint es sich jedoch um ein einzelnes Objekt zu handeln.) Zusammen mit dem Wertestapel platziert das Framework andere Objekte im ActionContext, einschließlich Maps, die den Anwendungs-, Sitzungs- und Anforderungskontext darstellen. Diese Objekte existieren im ActionContext neben dem Wertestapel (unserem OGNL-Stamm).
| |--application | |--session context map---| |--value stack(root) | |--request | |--parameters | |--attr (searches page, request, session, then application scopes)
Weitere Informationen finden Sie hier
OGNL-Basis
Im Grunde genommen setzt struts2 den Objektwert Stack als oberstes Objekt und OGNL wird verwendet, um auf sie zu verweisen. Das Wurzelobjekt kann ohne spezielle "Markierung" oder mit
%
referenziert werden, während Verweise auf andere Objekte mit einem Nummernzeichen (#) gekennzeichnet sind. # wird grundsätzlich verwendet, um Objekte / Werte aus Anwendung / Sitzung usw. zu referenzieren.quelle
Nur um das @Devon Biere zu vervollständigen ...
Verwendung von $ (Dollarzeichen)
Sie können auch
${}
in Ihren Ressourcendateien verwenden. Die Streben verwenden automatisch OGNL zum Parsen${}
. Zum Beispielsample.foo.bar=This is some ${someProperty} //If the someProperty is in valueStack sample.welcome.message=Welcome dear ${#session.CurrentUser.farsiFirstName}
Bitte beachten Sie, dass das
$
Zeichen hier nur ein Auslöser ist, der die Streben auffordert, die Zeichenfolge anhand von OGNL zu bewerten. Verwechseln Sie sie bitte nicht mit${}
JSTLStruts 2 Dynamische Nachricht mit OGNL
quelle