OGNL表达式详解:Struts2中的使用示例
需积分: 1 68 浏览量
更新于2024-09-11
收藏 64KB DOC 举报
"这篇文档是关于Struts2框架中OGNL(Object-Graph Navigation Language)的详尽总结,主要涵盖了OGNL表达式的各种用法,包括访问对象属性、方法、静态方法以及构造方法,并且提到了如何初始化模型和操作列表。"
OGNL(Object-Graph Navigation Language)是Struts2框架中一个强大的表达式语言,用于访问和操作对象图。以下是对标题和描述中提及的OGNL知识点的详细解释:
1. 访问值栈中的属性:
- OGNL可以访问Action中的普通属性,如`<s:property value="username"/>`,这里的`username`是OGNL表达式,用于获取值栈中Action的`username`属性。
- 对于私有属性如`PrivateString username`,OGNL可以通过getter和setter方法进行访问,例如`<s:property value="user.age"/>`。
2. 访问嵌套对象的属性:
- 当Action中有一个`private User user`属性,且User类中有`private int age`时,可以使用`<s:property value="user.age"/>`来获取`age`值。此外,OGNL支持使用数组或Map的键值访问方式,如`<s:property value="user['age']"/>`和`<s:property value="user[\"age\"]"/>`。
3. 访问方法:
- OGNL不仅可以获取属性,还能调用对象的普通方法,如`<s:property value="password.length()"/>`来获取字符串`password`的长度。
- 如果Action中有方法`m()`,则可以通过`<s:property value="m()"/>`来执行这个方法。
- 对于嵌套对象的方法调用,如`Action`中有`private Cat cat`,而`Cat`类中有`public void miaomiao()`,则可以使用`<s:property value="cat.miaomiao()"/>`。
4. 静态方法和属性访问:
- 为了允许访问静态方法和属性,需要在`Struts.xml`配置文件中添加`<constant name="struts.ognl.allowStaticMethodAccess" value="true"></constant>`。
- 静态方法的访问,如`<s:property value="@com.bjsxt.struts2.ognl.S@s()"/>`,其中`@com.bjsxt.struts2.ognl.S@s()`是调用`S`类的静态方法`s`。
- 访问静态属性,如`<s:property value="@com.bjsxt.struts2.ognl.S@STR"/>`,这里的`@com.bjsxt.struts2.ognl.S@STR`是获取`S`类的静态属性`STR`。
- 调用Java内置类的静态方法,如`<s:property value="@@max(2,3)"/>`,这将调用`Math`类的`max`方法。
5. 构造方法:
- OGNL还可以用来创建新对象,如`<s:property value="new com.bjsxt.struts2.ognl.User(8)"/>`,这会实例化一个新的`User`对象并传入参数`8`。
6. 访问列表:
- 访问列表通常涉及到迭代,例如`<s:property value="u">`会遍历列表`u`并显示其元素。可以结合Struts2的迭代标签`<s:iterator>`来进一步操作列表中的元素。
OGNL是Struts2框架中强大的数据绑定和表达式语言,能够灵活地处理对象、属性、方法以及复杂的数据结构,为开发提供了极大的便利。
2011-10-19 上传
2022-09-19 上传
2024-07-11 上传
2019-04-02 上传
2011-09-09 上传
2008-10-24 上传
2014-12-20 上传
2020-08-29 上传
2019-08-08 上传
凝月冰影
- 粉丝: 0
- 资源: 8
最新资源
- Aspose资源包:转PDF无水印学习工具
- Go语言控制台输入输出操作教程
- 红外遥控报警器原理及应用详解下载
- 控制卷筒纸侧面位置的先进装置技术解析
- 易语言加解密例程源码详解与实践
- SpringMVC客户管理系统:Hibernate与Bootstrap集成实践
- 深入理解JavaScript Set与WeakSet的使用
- 深入解析接收存储及发送装置的广播技术方法
- zyString模块1.0源码公开-易语言编程利器
- Android记分板UI设计:SimpleScoreboard的简洁与高效
- 量子网格列设置存储组件:开源解决方案
- 全面技术源码合集:CcVita Php Check v1.1
- 中军创易语言抢购软件:付款功能解析
- Python手动实现图像滤波教程
- MATLAB源代码实现基于DFT的量子传输分析
- 开源程序Hukoch.exe:简化食谱管理与导入功能