struts2中OGNL的具体用法

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中的一个属性...

相关文章
相关标签/搜索