Struts-OGNL-3

JSP中

<%--注意该项在Struts2.5中不能生效,在struts2.1.6中可以  显示age=8--%>
<%--http://localhost:8080/hello/ognl/ognl   在User类中重写toString()即可--%>
<li>访问普通属性的构造方法:</li>
<s:property value="new dto.User(8)"></s:property><br>
<%--http://localhost:8080/hello/ognl/ognl--%>
<li>访问List:</li>
<s:property value="users"/><br/>
访问List中某个元素:<s:property value="users[1]"/><br/>
访问List中元素某个属性的集合:<s:property value="users.{age}"/><br/>
访问List中元素某个属性的集合中的特定值:
<s:property value="users.{age}[0]"/> | <s:property value="users[0].age"/><br/>
访问Set:<s:property value="dogs"/><br/>
<%--set中是无顺序的,所以不能取到下标值--%>
访问Set中某个元素:<s:property value="dogs[1]"/><br/>
访问Map:<s:property value="dogMap"/><br/>
访问Map中某个元素:<s:property value="dogMap.dog101"/> | <s:property value="dogMap['dog101']"/> | <s:property value="dogMap[\"dog101\"]"/><br/>
访问Map中所有的key:<s:property value="dogMap.keys"/><br/>
访问Map中所有的value:<s:property value="dogMap.values"/><br/>
访问容器的大小:<s:property value="dogMap.size()"/> | <s:property value="users.size"/> <br/>


<%--它的结果是集合--%>
投影(过滤):<s:property value="users.{?#this.age==1}.{age}"></s:property><br/>
<%--^代表开头的那个  是2--%>
投影:<s:property value="users.{^#this.age>1}.{age}"></s:property><br/>
<%--$代表结尾的那个  是2--%>
投影:<s:property value="users.{$#this.age>1}.{age}"></s:property><br/>
投影:<s:property value="users.{$#this.age>1}.{age}==null"></s:property><br/>
投影:<s:property value="users.{$#this.age>1}.{age}.size"></s:property><br/>

<%--使用中括号访问元素   用于代表ValueStack中的Object对象--%>
<%--什么时候会存在多个action   当struts.xml中result使用type=chain跳转时  会存在多个action存入栈中--%>
<%--[0]代表从第0个位置一直向下找,所以会打印2个对象  []:[com.ognl.OgnlAction@4f046661, com.opensymphony.xwork2.DefaultTextProvider@b02d3a6]--%>
[]:<s:property value="[0]"></s:property>

Action中

    private List<User> users = new ArrayList<User>();
    private Set<Dog> dogs = new HashSet<Dog>();
    private Map<String, Dog> dogMap = new HashMap<String, Dog>();

    public OgnlAction() {
        users.add(new User("1"));
        users.add(new User("2"));
        users.add(new User("3"));

        dogs.add(new Dog("dog1"));
        dogs.add(new Dog("dog2"));
        dogs.add(new Dog("dog3"));

        dogMap.put("dog100", new Dog("dog100"));
        dogMap.put("dog101", new Dog("dog101"));
        dogMap.put("dog102", new Dog("dog102"));
    }

效果:这里写图片描述
这里写图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值