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!