Struts2 OGNL表达式详解

需积分: 3 2 下载量 200 浏览量 更新于2024-09-13 收藏 18KB DOCX 举报
"这篇学习笔记主要探讨了Struts2框架中OGNL(Object Graph Navigation Language)的使用,包括访问Action值栈中的属性、对象属性、方法,以及静态方法和属性,同时还涉及了对集合如list、set和map的操作方法。" 在Java Web开发中,Struts2是一个非常流行的MVC框架,而OGNL是它内部用于表达式语言,用于在视图层动态地获取或设置对象的属性。以下是对笔记中提及的OGNL用法的详细解释: 1. 访问Action值栈中的普通属性:`<s:property value="attrName"/>` 这个语句用于显示Action类中名为"attrName"的属性值。 2. 访问Action值栈中的对象属性:`<s:property value="obj.attrName"/>` 和 `<s:property value="obj1.obj2.attrName"/>` 分别表示访问对象"obj"和"obj2"的属性"attrName",要求对象必须有对应的getter和setter方法。 3. 访问值栈中对象属性的方法:`<s:property value="obj.methodName()"/>` 这里调用了对象"obj"的"methodName()"方法。 4. 访问Action的普通方法:`<s:property value="methodName()"/>` 直接调用Action类中的方法"methodName()"。 5. 访问静态方法:`<s:property value="@com.softeem.LoginAction@methodName()"/>` 使用`@类名@方法名()`的方式调用指定类的静态方法。 6. 访问静态属性:要允许OGNL访问静态属性,需要在配置中设置`struts.ognl.allow=true`,然后使用`<s:property value="@com.softeem.LoginAction@attrName"/>`来访问。 7. 访问Math类的静态方法:`<s:property value="@@min(9,7)"/>` `@@`前缀用于调用静态方法,这里调用了Math类的min方法。 8. 访问普通类的构造方法:`<s:property value="new com.softeem.User(2)"/>` 通过`new`关键字创建一个User类的新实例,并传递参数2。 9. 访问集合: - ①`<s:property value="listName"/>` 显示list集合对象本身。 - ②`<s:property value="listName[1]"/>` 访问list的第二个元素(数组索引从0开始)。 - ③`<s:property value="listName.{field}"/>` 访问list中所有对象的"field"属性。 - ④`<s:property value="listName.{field}[0]"/>` 获取list中第一个对象的"field"属性的值。 - ⑤`<s:property value="setName"/>` 显示set集合对象。 - ⑥`<s:property value="setName[0]"/>` 访问set的第一个元素。 - ⑦`<s:property value="mapName"/>` 显示map对象。 - ⑧`<s:property value="mapName.username"/>` 和 `<s:property value="mapName['username']"/>` 分别通过key "username" 访问Map中的元素,两种写法等价。 以上就是Struts2中使用OGNL进行数据绑定和表达式操作的关键点,它们在构建动态页面时起着至关重要的作用,使得开发者可以灵活地控制视图层的数据展示。了解并熟练掌握这些用法,能够极大地提升开发效率和代码的可维护性。