OGNL在Struts2中的应用:操作集合与标签使用
需积分: 0 9 浏览量
更新于2024-08-18
收藏 181KB PPT 举报
"这篇文档主要介绍了OGNL语言在Struts2框架中的应用,特别是操作集合以及Struts2的常用标签。通过示例展示了如何使用OGNL创建数组和List,并将其存储到上下文中,同时讲解了如何通过OGNL获取对象属性的值,包括从上下文获取值的方法。此外,文档还提及了Struts2.x的类型转换器,但未提供具体细节。"
Struts2是一个流行的Java Web应用程序框架,它广泛使用OGNL(Object-Graph Navigation Language)作为其核心表达式语言。OGNL允许开发者方便地访问和修改Java对象的属性,类似于JSP的EL表达式。在Struts2中,OGNL不仅用于视图层的展示,还在控制器和模型之间起到了桥梁作用。
**OGNL操作集合**
在提供的代码示例中,我们看到了如何使用OGNL创建和操作集合:
1. 创建数组:
```java
int[] intArray = (int[]) Ognl.getValue("new int[]{1,2,3}", context, root);
```
这行代码通过OGNL表达式动态创建了一个包含1、2、3的整数数组,并将其赋值给了`intArray`。
2. 创建List:
```java
List list = (List) Ognl.getValue("{‘张三’,‘李四’,‘王五'}", context, root);
```
此代码创建了一个包含三个字符串元素的List,并将其存储在上下文`context`中,键为`listvalue`。
**OGNL获取和设置值**
OGNL可以方便地访问和修改对象的属性,包括基本类型和复杂类型的属性。例如:
- 获取基本类型属性值:
```java
String str = (String) Ognl.getValue("username", u);
```
这里从`User`对象`u`中获取`username`属性的值。
- 获取复杂类型属性值:
```java
String str = (String) Ognl.getValue("person.name", u);
```
这行代码从`User`对象`u`的`person`属性(假设是`Person`类型)中获取`name`属性的值。
- 使用`#root`获取根对象属性:
```java
String str = (String) Ognl.getValue("#root.person.name", u);
```
`#root`表示当前上下文的根对象,可以用来访问根对象的属性。
**从上下文中获取值**
当值存储在上下文`context`中时,可以通过`#`符号引用它们:
```java
String str = (String) Ognl.getValue("#p1.name + '*******' + #p2.name", context);
```
这里的表达式将`p1`和`p2`从上下文中取出,获取它们的`name`属性并拼接。
**Struts2.x常用标签**
虽然文档没有详细介绍Struts2的标签,但通常这些标签包括表单处理、数据展示、控制流等。例如:
- `s:textfield`:用于创建输入字段,与Action中的属性绑定。
- `s:submit`:创建提交按钮,用于触发Action的执行。
- `s:if`和`s:else`:条件控制标签,根据表达式的值决定是否渲染子元素。
- `s:iterator`:迭代标签,常用于遍历集合数据。
**类型转换器**
Struts2提供了类型转换器功能,允许自定义对象属性的输入值转换。例如,如果你有一个日期字段,可以创建一个转换器确保输入的字符串能够正确转换为日期类型。转换器通过实现`Converter`接口或者注解`@Conversion`来定义。
这篇文档介绍了OGNL在Struts2框架中的基本操作,对于理解Struts2的表达式语言和处理集合数据有着重要的参考价值。
2014-11-02 上传
2010-08-05 上传
2010-04-24 上传
2009-06-01 上传
2010-09-27 上传
2009-09-14 上传
2010-10-14 上传
2012-12-16 上传
2010-01-20 上传
昨夜星辰若似我
- 粉丝: 49
- 资源: 2万+
最新资源
- MATLAB新功能:Multi-frame ViewRGB制作彩色图阴影
- XKCD Substitutions 3-crx插件:创新的网页文字替换工具
- Python实现8位等离子效果开源项目plasma.py解读
- 维护商店移动应用:基于PhoneGap的移动API应用
- Laravel-Admin的Redis Manager扩展使用教程
- Jekyll代理主题使用指南及文件结构解析
- cPanel中PHP多版本插件的安装与配置指南
- 深入探讨React和Typescript在Alias kopio游戏中的应用
- node.js OSC服务器实现:Gibber消息转换技术解析
- 体验最新升级版的mdbootstrap pro 6.1.0组件库
- 超市盘点过机系统实现与delphi应用
- Boogle: 探索 Python 编程的 Boggle 仿制品
- C++实现的Physics2D简易2D物理模拟
- 傅里叶级数在分数阶微分积分计算中的应用与实现
- Windows Phone与PhoneGap应用隔离存储文件访问方法
- iso8601-interval-recurrence:掌握ISO8601日期范围与重复间隔检查