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!