首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

《研磨struts2》第七章 值栈跟OGNL 之 7.3 使用OGNL访问复杂对象

2012-08-25 
《研磨struts2》第七章 值栈和OGNL 之 7.3 使用OGNL访问复杂对象7.3??使用OGNL访问复杂对象7.3.1??访问域对

《研磨struts2》第七章 值栈和OGNL 之 7.3 使用OGNL访问复杂对象

7.3??使用OGNL访问复杂对象

7.3.1??访问域对象

通过ognl访问域对象,这件事情其实在好早以前,我们就已经做过了,只是那个时候不知道罢了,还是来示例一下。

(1)先来准备一个域对象,很简单,只有两个属性,代码示例如下:

?

图7.4? 新增页面

点击提交按钮过后,会跳转到结果页面,如下图所示:

?


《研磨struts2》第七章 值栈跟OGNL 之 7.3 使用OGNL访问复杂对象

图7.5? 新增后的结果页面

此时后台输出如下所示:

?

"userMap['umtest'].name"/>??

(4)去运行测试看看,结果页面和后台应该都能正确地获取到值了。

(5)还可以访问Map的方法,比如:

  • OGNL表达式为:map.size,就表示访问map这个Map的size()方法
  • OGNL表达式为:map.isEmpty,就表示访问map这个Map的isEmpty()方法

    (6)也可以直接在OGNL中构建Map,比如:

    • OGNL表达式为:#{'one':'aa','two':'bb'},就表示构建一个包含2组值的Map,key值分别是one和two,对应的值分别是aa和bb
    • OGNL表达式为:#{'one':'aa','two':'bb'}['one'],就表示构建一个包含2组值的Map,key值分别是one和two,对应的值分别是aa和bb,然后获取key为one的值,也就是aa了。

      7.3.4? 组合使用

      通过前面的讲述,你可以发现,OGNL可以访问不同的对象、属性和方法,那么可不可以把这些复杂的对象结构组合起来,让OGNL去访问呢?

      假如在Session中,有一个List作为Session的属性,对应的key值是“users”,List里面放的全是UserModel类型的对象,现在要访问其中的第3个元素的userId属性,应该怎样用OGNL去访问呢?

      ?????? 回答这个问题需要层层分解,一步一步来:

      • 要获取Session中一个key值为“users”的List,对应的OGNL应为#session[‘users’],或者#session.users
      • 要操作这个List的第3个元素,对应的OGNL应为#session[‘users’][2],或者#session.users[2]
      • 要操作这个对象的userId属性,对应的OGNL应为#session[‘users’][2].userId,或者#session.users[2].userId

        这样,就得到了最终的OGNL,可以去测试一下,看看好用不。

        ?????? OGNL本身有很多的知识,这里只是介绍了OGNL中最常用的知识,更多的知识可以去http://www.ognl.org查看,那里有很详细的文档。

        ?

        私塾在线网站原创《研磨struts2》系列

        转自请注明出处:【http://sishuok.com/forum/blogPost/list/0/4070.html】

        欢迎访问http://sishuok.com获取更多内容

热点排行