集合的投影(只输出部分属性)用法 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.