Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Webwork with OGNL

Webwork uses a standard naming context to evaluate OGNL expressions. The top level object dealing with OGNL is a map (usually referred as a context map). OGNL has a concept of a root object (in webwork terms, this is the OGNLValueStack). Along with the root, other objects are placed in the context map (referred as in the context) including your session/application/request/attr maps. These objects have nothing to do with the root, they just exist along side it in the context map. So, to access these objects, the # is used telling ognl not to look in the root object, but within the rest of the context

Code Block

        |             

                     |-- request
                     |
                     |--application
                     |
       context map---|--OgnlValueStack(root)
                     |
                     |--session
                     |
                     |--attr
                     |
                     |--parameters

Note that their are other objects in the context map, I'm just referring to a few for this example. Now, your actions instances are placed in the OGNLValueStack so you can refer to your bean properties without the #.

Code Block
xml
xml

<ww: property value="myBean.myProperty"/>

For sessions,request, and the rest that lie in the context map:

Code Block
java
java

ActionContext.getContext().getSession().put("mySessionPropKey", mySessionObject);
Code Block
xml
xml

<ww: property value="#session.mySessionPropKey"/> or
<ww: property value="#session\['mySessionPropKey'\]"/>

<ww: property value="#attr.mySessionPropKey"/>

Collections (Maps, Lists, Sets)

...