Struts2 OGNL表达式详解
需积分: 3 200 浏览量
更新于2024-09-13
收藏 18KB DOCX 举报
"这篇学习笔记主要探讨了Struts2框架中OGNL(Object Graph Navigation Language)的使用,包括访问Action值栈中的属性、对象属性、方法,以及静态方法和属性,同时还涉及了对集合如list、set和map的操作方法。"
在Java Web开发中,Struts2是一个非常流行的MVC框架,而OGNL是它内部用于表达式语言,用于在视图层动态地获取或设置对象的属性。以下是对笔记中提及的OGNL用法的详细解释:
1. 访问Action值栈中的普通属性:`<s:property value="attrName"/>` 这个语句用于显示Action类中名为"attrName"的属性值。
2. 访问Action值栈中的对象属性:`<s:property value="obj.attrName"/>` 和 `<s:property value="obj1.obj2.attrName"/>` 分别表示访问对象"obj"和"obj2"的属性"attrName",要求对象必须有对应的getter和setter方法。
3. 访问值栈中对象属性的方法:`<s:property value="obj.methodName()"/>` 这里调用了对象"obj"的"methodName()"方法。
4. 访问Action的普通方法:`<s:property value="methodName()"/>` 直接调用Action类中的方法"methodName()"。
5. 访问静态方法:`<s:property value="@com.softeem.LoginAction@methodName()"/>` 使用`@类名@方法名()`的方式调用指定类的静态方法。
6. 访问静态属性:要允许OGNL访问静态属性,需要在配置中设置`struts.ognl.allow=true`,然后使用`<s:property value="@com.softeem.LoginAction@attrName"/>`来访问。
7. 访问Math类的静态方法:`<s:property value="@@min(9,7)"/>` `@@`前缀用于调用静态方法,这里调用了Math类的min方法。
8. 访问普通类的构造方法:`<s:property value="new com.softeem.User(2)"/>` 通过`new`关键字创建一个User类的新实例,并传递参数2。
9. 访问集合:
- ①`<s:property value="listName"/>` 显示list集合对象本身。
- ②`<s:property value="listName[1]"/>` 访问list的第二个元素(数组索引从0开始)。
- ③`<s:property value="listName.{field}"/>` 访问list中所有对象的"field"属性。
- ④`<s:property value="listName.{field}[0]"/>` 获取list中第一个对象的"field"属性的值。
- ⑤`<s:property value="setName"/>` 显示set集合对象。
- ⑥`<s:property value="setName[0]"/>` 访问set的第一个元素。
- ⑦`<s:property value="mapName"/>` 显示map对象。
- ⑧`<s:property value="mapName.username"/>` 和 `<s:property value="mapName['username']"/>` 分别通过key "username" 访问Map中的元素,两种写法等价。
以上就是Struts2中使用OGNL进行数据绑定和表达式操作的关键点,它们在构建动态页面时起着至关重要的作用,使得开发者可以灵活地控制视图层的数据展示。了解并熟练掌握这些用法,能够极大地提升开发效率和代码的可维护性。
2012-04-20 上传
2011-12-13 上传
2012-10-14 上传
2010-11-30 上传
2024-11-07 上传
2024-11-07 上传
2024-11-07 上传
2024-11-07 上传
lijieqianqian
- 粉丝: 0
- 资源: 6
最新资源
- 探索数据转换实验平台在设备装置中的应用
- 使用git-log-to-tikz.py将Git日志转换为TIKZ图形
- 小栗子源码2.9.3版本发布
- 使用Tinder-Hack-Client实现Tinder API交互
- Android Studio新模板:个性化Material Design导航抽屉
- React API分页模块:数据获取与页面管理
- C语言实现顺序表的动态分配方法
- 光催化分解水产氢固溶体催化剂制备技术揭秘
- VS2013环境下tinyxml库的32位与64位编译指南
- 网易云歌词情感分析系统实现与架构
- React应用展示GitHub用户详细信息及项目分析
- LayUI2.1.6帮助文档API功能详解
- 全栈开发实现的chatgpt应用可打包小程序/H5/App
- C++实现顺序表的动态内存分配技术
- Java制作水果格斗游戏:策略与随机性的结合
- 基于若依框架的后台管理系统开发实例解析