struts框架将ActionContext和value stack 作为OGNL的根对象。
| |--application | |--session context map---| |--value stack(root) | |--action (the current action) | |--request | |--parameters | |--attr (searches page, request, session, then application scopes) |
每个action的实例都会被放到value stack里,在value stack中的不需要使用#符号就能访问
例如:
获取action中的一个property
<s:property value="postalCode"/>
获取session、request中的值
<s:property value="#session.mySessionPropKey"/> or <s:property value="#session['mySessionPropKey']"/> or <s:property value="#request['myRequestPropKey']"/>也可以通过ActionContext对象获得
ActionContext.getContext().getSession().get("mySessionPropKey");
也可以使用EL表达式
<c:set var="foo" value="bar" scope="request"/>
<s:textfield name="username" label="%{#request.foo}" />
表示集合的方法
list:格式{e1,e2,e3}
<s:select label="label" name="name" list="{'name1','name2','name3'}" value="%{'name2'}" />
map:格式
#{key1:value1,key2:value2}
<s:select label="label" name="name" list="#{'foo':'foovalue', 'bar':'barvalue'}" />
可以用in和not in判断元素是否在集合中
<s:if test="'foo' in {'foo','bar'}"> muhahaha </s:if> <s:else> boo </s:else> <s:if test="'foo' not in {'foo','bar'}"> muhahaha </s:if> <s:else> boo </s:else>