1.“#”用于声明OGNL表达式,有3种用途:java
一.可以访问OGNL的上下文和ActionContext资源,至关于ActionContext.getContext();session
1.#parameters,表明request.getParameterValues("id");返回String[]类型,通常使用#parameters.id[i];app
2.#request,表明request.getAttribute("account");至关于#request.account;this
3.#session,表明session.getAttribute("account");至关于#session.account;xml
4.#application,表明application.getAttribute("account");至关于#application.account;资源
5.#attr,表明request,session,application里面全部的属性,#attr.account至关于EL表达式中的${account},依次查看request,session,application,找到为止.get
二.用于过滤或筛选集合,例如:books.{?#this.price<20};it
三.构造Map,如#{‘foo1’:‘bar1’,‘foo2’:‘bar2’};io
例子:class
maganize是javabean类,里面有属性{String name,int price};
Action中有List<maganize> maganizeList = new ArrayList(){····};
<s:property value=“maganizeList.{?#this.price>18}.size()” />
<s:property value=“maganizeList.{?#this.name.contains(‘XXX’)}.size()” />
<s:iterator value=“maganizeList.{?#this.price>18}”/>
<s:property value=“name”/><s:property value=“price”/>
</s:iterator>
2.“%”显示声明OGNL表达式:用于某些标签中既可以接受字符,又可以接受OGNL表达式:
例如:<s:label label="#request.account" /> 会直接显示:#request.account出来
若是是:<s:label label="%{#request.account}" />就会是显示出account的值
3.“$”使用在配置文件中:AAA.xml都行
例如在struts.xml中:
<action name="" >
<result>·······?id=${id}</result>
</action>
额外的增长一点<s:if>的用法:
<s:if test="#parameters.name[0]==‘yao’">···</s:if>
<s:if test="name==‘yao’">···</s:if> 此处的name必须是action中的一个属性...