Struts2中Ognl语言的深入应用:获取对象值与上下文操作
需积分: 0 141 浏览量
更新于2024-08-18
收藏 181KB PPT 举报
Ognl语言在Struts2框架中的应用十分广泛,它是一种强大的对象-图形导航语言,用于在Java对象模型中动态地获取和设置属性值。在Struts2中,Ognl被用于JSP标签和类型转换器中,简化了动态页面开发的复杂性。
首先,我们来看如何在Struts2中利用Ognl获取对象的基本属性值。例如,当你创建一个`User`对象,为其`username`属性赋值后,可以直接通过Ognl表达式获取该值:
```java
User u = new User();
u.setUsername("noble");
String str = (String) Ognl.getValue("username", u);
System.out.println(str);
```
这段代码展示了如何通过`Ognl.getValue()`方法获取`User`对象的`username`属性,并将其转换为字符串类型。
接着,如果属性值是一个引用类型,比如`User`对象有一个`Person`类型的`person`属性,可以通过链式访问获取该属性的子属性:
```java
Person p = new Person();
p.setName("张三");
u.setPerson(p);
String str = (String) Ognl.getValue("person.name", u);
System.out.println(str);
```
这行代码表明即使对象的属性嵌套,Ognl也能穿透到内部,获取深层次的属性值。
在更复杂的场景中,Ognl允许直接访问根对象。通过`#root`关键字,可以明确指定要操作的是整个应用域或请求域的对象。例如:
```java
String str = (String) Ognl.getValue("#root.person.name", u);
```
这里的`#root`表示当前的上下文对象,即应用域或请求域,所以可以获取到`User`对象中`person`属性的`name`值。
此外,Ognl还可以从更广泛的上下文中取值。例如,如果你在Action中维护了一个包含多个`Person`对象的`Map`,可以通过Ognl表达式访问其中的元素:
```java
Map<String, Person> context = new HashMap<>();
context.put("p1", p1);
context.put("p2", p2);
String str = (String) Ognl.getValue("#p1.name + '*' + #p2.name", context);
```
这段代码演示了如何通过键名(如`p1`和`p2`)从`context`中获取对应的`Person`对象的`name`值,并进行拼接。
总结来说,Ognl语言在Struts2中是实现动态页面逻辑和数据绑定的重要工具,它简化了开发者处理复杂对象结构和上下文数据的操作,使得编写动态页面更加灵活高效。熟练掌握Ognl的使用对于理解和开发Struts2应用至关重要。
2022-09-23 上传
2011-01-20 上传
2019-03-24 上传
点击了解资源详情
2012-10-25 上传
2014-05-14 上传
2011-09-09 上传
149 浏览量
点击了解资源详情
涟雪沧
- 粉丝: 23
- 资源: 2万+
最新资源
- 关于perl教程perl教程perl教程
- 线性代数-同济版第四版
- 经典著作The C Programming Language (2nd Edition)清晰版
- C++ GUI Programming with Qt 4 中文版.pdf
- as3.0 cookbook
- HSSF:纯java的Excel解决方案
- scjp题库部分题目绝对真实有用
- Learningjquery
- 选区划分模型及快速分类算法
- 软件工程课程设计指导书
- YD-T_1363.4-2005_通信局(站)电源、空调及环境集中监控管理系统第4部分:测试方法.pdf
- YD-T_1363.1-2005_通信局(站)电源、空调及环境集中监控管理系统第1部分:系统技术要求.pdf
- Thinking in C++ Vol 2
- wincc PDF资料
- Using JAAS in Java EE and SOA Environments
- IBM 认证 SOA 解决方案设计师认证考试准备-SOA 最佳实践