OGNL在Struts2中的应用:操作集合与标签使用

需积分: 0 0 下载量 16 浏览量 更新于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的表达式语言和处理集合数据有着重要的参考价值。