struts2_ognl表达式符号的使用方法

1. #的使用
<1>代表ActionContext.getContext()上下文

<s:property value="#request.name" />  ------------>  ActionContext().getContext().getRequest().get("name");

//获取各个域
#request
#session
#application
#attr
#parameters

<2>不写# 默认在 值栈中root中进行查找

<s:property value="name" /> 在root中查找name属性 
    * 查询元素时,从root的栈顶元素 开始查找, 如果访问指定栈中元素

<s:property value="[1].name" />  访问栈中第二个元素name属性 
    * 访问第二个元素对象 <s:property value="[1].top" />

<3>进行投影映射(结合复杂对象遍历)

1)集合的投影(只输出部分属性
    <h1>遍历集合只要name属性</h1>
    <s:iterator value="products.{name}" var="pname"> 
            <s:property value="#pname"/>
    </s:iterator>
2)遍历时,对数据设置条件 
    <h1>遍历集合只要price大于1500商品</h1>
    <s:iterator value="products.{?#this.price>1500}" var="product"> 
            <s:property value="#product.name"/> --- <s:property value="#product.price"/>    
    </s:iterator>
3)综合
<h1>只显示价格大于1500 商品名称</h1>
    <s:iterator value="products.{?#this.price>1500}.{name}" var="pname"> 
            <s:property value="#pname"/>
    </s:iterator>

<4>使用#构建map集合

经常结合 struts2 标签用来生成 select、checkbox、radio
<h1>使用#构造map集合 遍历</h1>
<s:iterator value="#{'name':'aaa','age':'20', 'hobby':'sport' }" var="entry">
    key : <s:property value="#entry.key"/> , 
    value:  <s:property value="#entry.value"/> <br/>
</s:iterator>

2. %的使用
 %作用:就是用于设定当前是否要解析其为 ognl表达式。所有表达式如果想要让其是ognl:%{表达式}

%{表达式} 当前表达式会被做为ognl解析.
%{‘表达式’} 当前表达式不会被做为ognl解析。

<s:property value=”表达式”> 对于s:property标签,它的value属性会被默认做为ognl
3. $的使用
 $作用:就是在配置文件中使用ognl表达式来获取valueStack中数据.

1.struts.xml
<result type="stream">
        <param name="contentType">${contentType}</param>
</result>

2.在校验文件中使用
${min}  ${max}
${minLength} ${maxLength}

3.在国际化文件中使用

在properties文件中
        username=${#request.username}
在jsp页面
        <s:text name="username">

总结:#就是用于获取数据 %就是用于设置是否是ognl表达式 $就是在配置文件中使用ognl。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值