OGNL使用详解:Struts2中的属性访问与操作
需积分: 15 35 浏览量
更新于2024-09-18
1
收藏 4KB TXT 举报
"该资源主要介绍了OGNL(Object Graph Navigation Language)在Struts框架中的使用,特别是`s:property`标签的各种用法。"
在Struts框架中,`s:property`标签用于在视图层展示模型数据,它能够方便地访问和显示Action对象、属性以及复杂的对象结构。以下是对给定文件中提到的`property`用法的详细解释:
1. 基本用法:`<s:property value="attrName"/>` 这种用法可以直接显示Action对象中的`attrName`属性值。例如,如果Action中有`String attrName`,这个标签会显示对应的字符串。
2. 访问对象属性:`<s:property value="obj.attrName"/>` 这个用法可以访问Action对象内的嵌套属性,如`obj`对象的`attrName`属性。这需要`obj`有一个`getAttrName()`方法供访问。
3. 调用方法:`<s:property value="obj.methodName()"/>` 这表示调用对象`obj`的方法`methodName()`并显示其返回值。如果`methodName`没有返回值,此标签可能不会显示任何内容。
4. Action方法调用:`<s:property value="methodName()"/>` 类似于上一种情况,但直接在Action级别调用`methodName()`。这意味着Action类需要有该方法,并且方法应返回一个可显示的值。
5. 静态方法调用:`<s:property value="@com.softeem.LoginAction@methodName()"/>` 这种情况用于调用静态方法,如`LoginAction`类的`methodName()`。在OGNL表达式中,`@类名@方法名`用于调用静态方法。
6. 开启OGNL表达式:`struts.ognl.allow=true` 在配置文件中设置此选项后,可以使用OGNL表达式,如`<s:property value="@com.softeem.LoginAction@attrName"/>`来直接访问Action类的静态属性。
7. 内置函数调用:`<s:property value="@@min(9,7)"/>` OGNL支持内置函数,`@@min`是其中一个,可以计算两个数值的最小值。这里的`@@`前缀表示调用OGNL的内置函数。
8. 创建新对象:`<s:property value="new com.softeem.User(2)"/>` OGNL允许动态创建对象,这里创建了一个新的`User`对象,传入参数2。
9. 处理列表:
- `<s:property value="listName"/>` 显示整个列表对象。
- `<s:property value="listName[1]"/>` 访问列表中的第二个元素(数组索引从0开始)。
- `<s:property value="listName.{field}"/>` 遍历列表中的每个对象的`field`属性。
- `<s:property value="listName.{field}[0]"/>` 访问列表中每个对象的`field`属性的第一个元素。
10. 设置集合:
- `<s:property value="setName"/>` 显示整个集合对象。
- `<s:property value="setName[0]"/>` 访问集合的第一个元素。
11. 处理Map:
- `<s:property value="mapName"/>` 显示整个Map对象。
- `<s:property value="mapName.username"/>` 访问Map中键为`username`的值。
- `<s:property value="mapName['username']"/>` 同上,使用单引号包围键名。
- `<s:property value="mapName[\"username\"]"/>` 使用双引号包围键名,当键名包含特殊字符时需要这样做。
- `<s:property value="mapName.keys"/>` 获取Map的所有键。
- `<s:property value="mapName.values"/>` 获取Map的所有值。
- `<s:property value="mapName.size()"/>` 计算Map中元素的数量。
以上就是`s:property`标签在Struts中的一些常见用法,通过这些用法,开发者可以灵活地在视图层展现和操作各种类型的Java对象和数据结构。
2020-10-19 上传
2010-06-28 上传
2023-06-01 上传
2023-07-28 上传
2023-03-22 上传
2023-04-09 上传
2023-05-19 上传
2023-05-19 上传
2023-06-08 上传
lxftc6534
- 粉丝: 1
- 资源: 33
最新资源
- 深入理解23种设计模式
- 制作与调试:声控开关电路详解
- 腾讯2008年软件开发笔试题解析
- WebService开发指南:从入门到精通
- 栈数据结构实现的密码设置算法
- 提升逻辑与英语能力:揭秘IBM笔试核心词汇及题型
- SOPC技术探索:理论与实践
- 计算图中节点介数中心性的函数
- 电子元器件详解:电阻、电容、电感与传感器
- MIT经典:统计自然语言处理基础
- CMD命令大全详解与实用指南
- 数据结构复习重点:逻辑结构与存储结构
- ACM算法必读书籍推荐:权威指南与实战解析
- Ubuntu命令行与终端:从Shell到rxvt-unicode
- 深入理解VC_MFC编程:窗口、类、消息处理与绘图
- AT89S52单片机实现的温湿度智能检测与控制系统