ognl表达式标记符号的用法

“#”的用法

集合的投影(只输出部分属性)用法 collectionName.{expression}<br>

<s:iterator value="#request.personList.{name}">

       <s:property>

</s:iterator>

----------------------------------------------

 

用法2集合的过滤

 

"?#" 过滤所有符合条件的集合

"^#" 过滤第一个符合条件都元素

"$#" 过滤最后一个符合条件的元素

 

<s:iterator value="#request.personList.{?#this.age>25}" var="perspon">

 

       <s:property value="name">

       <s:property value="age">

</s:iterator>

 

personList里边放了许多个person

 

var关键字 在循环的时候把每一个Person对象放到map栈,this代表每一个person

 

所以用#this ,而?表示选择

---------------------------------------------

 

<s:iterator value="#request.personList.{?#this.age>25}.{name}" var="perspon">

 

       <s:property/>

      

</s:iterator>

"%"符号的用法

 

在标签的属性值被理解为字符串类型的时候,告诉执行环境

 

用法1.

%{}里的是ognl表达式

 

<s:textfield name="xxx" id="xxx" value="%{#request.username}"/>

 

备注:因给value引号里边的值 含有井号,解析不出来, 所以用%{} 括起来,告诉编译器,

 

{}里边内容的是ognl表达式。

 

用法2.

{}中的内容 加上'',解析成一个字符串

 

<s:textfield name="xxx" id="xxx" value="%{'#request.username'}"/>

------------------------------------------------------------------------------------------------------------

“$”符号的用法

Struts2配置文件中,使用ognl表达式

 -------------------------------------------

OgnlAction中,把"msgxxx_request"这个值放到request作用域里边。

 

ServletActionContext.getRequest().setAttribute("msgxxx","msgxxx_request");

 

下边是struts_ognl.xml文件

<package name="ognl" namespace="/ognl" extends="struts-default">

      

       <action name="ognlAction_*" class="cn.itcast.j_ognl.OgnlAction"

 

method="{1}">

 

              <result name="success">/ognl/ognl.jsp?msg=${#request.msgxxx}</result>

       </action>

</package>

-----------------------------------

当跳转到ognl.jsp的时候,要想要获取 "msgxxx_request"这个值,可以通过request得到,

 

对应的键是"msgxxx"<s:property value=”#request.msgxxx”>

------------------------------------

我也可以通过msg得到这个值

 

<result name="success">/ognl/ognl.jsp?msg=${#request.msgxxx}</result>

 

在配置文件中,先从request作用域中得到这个值,然后在使用msg作为参数名,使用参数传递这个值。可以看出 参数和参数值是放到parameters里边了

 

就可以这样得到值 <s:property value=”#parameters.msg”>

 

这个用法,可以解决重定向的问题,这个重定向到一个Action中,request作用域失效,可以在struts.xml文件中再传递一次request.

 

 

 

展开阅读全文

没有更多推荐了,返回首页