Struts 2支持以下几种表达式语言:
Struts 2默认的表达式语言是OGNL,原因是它相对其它表达式语言具有下面几大优势:
OGNL的用法
OGNL是通常要结合Struts 2的标志一起使用,如<s:property value="xx" />等。经常遇到的问题是#、%和$这三个符号的使用。
“#”主要有三种用途:
| 名称 | 作用 | 例子 |
| parameters | 包含当前HTTP请求参数的Map | #parameters.id[0]作用相当于request.getParameter("id") |
| request | 包含当前HttpServletRequest的属性(attribute)的Map | #request.userName相当于request.getAttribute("userName") |
| session | 包含当前HttpSession的属性(attribute)的Map | #session.userName相当于session.getAttribute("userName") |
| application | 包含当前应用的ServletContext的属性(attribute)的Map | #application.userName相当于application.getAttribute("userName") |
| attr | 用于按request > session > application顺序访问其属性(attribute) | #attr.userName相当于按顺序在以上三个范围(scope)内读取userName属性,直到找到为止 |
“%”符号的用途是在标志的属性为字符串类型时,计算OGNL表达式的值:
如:<s:set name="foobar" value="#{'foo1':'bar1', 'foo2':'bar2'}" />
<p><s:url value="#foobar['foo1']" /></p>
<p><s:url value="%{#foobar['foo1']}" /></p>
则值分别为:#foobar['foo1'] bar1
“$”有两个主要的用途
<action name="AddPhoto" class="addPhoto">
<interceptor-ref name="fileUploadStack" />
<result type="redirect">ListPhotos.action?albumId=${albumId}</result>
</action>
发表评论