Struts2笔记四之Ognl
来源:互联网 发布:河北网络电视台官网 编辑:程序博客网 时间:2024/06/05 23:57
1、ognl(Object Graph Navigation Language)表达式是<s:property value="username"/>中value里面的username这个表达式
在Action类中定义private String username;并配上set/get方法,则username这个会存放在值栈中。
而ognl表达式就是取值栈中的值得表达式。
user.xxx只有传,才会构造,想初始化domain model,可以自己new, 也可以传参数值,但是这时候需要保持空的构造方法
2、Action类中有一个对象属性Cat cat,Cat中有一个对象属性Dog dog, dog有name属性
在页面中访问dog的name的ognl表达式为:<s:property value="cat.dog.name" />
3、访问对象中的普通方法<s:property value="cat.dog.name.length()" />,name是字符串,有length方法,直接调用
4、访问Action类中的方法,假设Action类中有方法public String m(){return "hello"},
在页面上用ognl表达式调用为<s:property value="m()" />
5、ognl访问静态方法和属性
访问方式@包加类名@方法名或者属性名
访问静态方法:<s:property value="@com.edifier.struts2.ognl.S@s()"/>要访问静态方法需要在struts.xml中配置一句话
<constant name="struts.ognl.allowStaticMethodAccess" value="true"></constant>
访问静态属性:<s:property value="@com.edifier.struts2.ognl.S@STR"/>
访问Math类的静态方法:<s:property value="@@max(2,3)" />@@指定访问Math类
6、ognl访问普通类的构造方法
访问普通类的构造方法:<s:property value="new com.edifier.struts2.ognl.User(8)"/>返回的是toString方法
7、ognl访问List
List<User> users = new ArrayList<User>();
users.add(new User(1));
users.add(new User(2));
users.add(new User(3));
访问List:<s:property value="users"/>
访问List中某个元素:<s:property value="users[1]"/>
访问List中元素某个属性的集合:<s:property value="users.{age}"/>就是取出所有user的age放在一个新的集合中
访问List中元素某个属性的集合中的特定值:<s:property value="users.{age}[0]"/> | <s:property value="users[0].age"/>
8、ognl访问Set
Set<Dog> dogs = new HashSet<Dog>();
dogs.add(new Dog("dog1"));
dogs.add(new Dog("dog2"));
dogs.add(new Dog("dog3"));
访问Set:<s:property value="dogs"/>
访问Set中某个元素:<s:property value="dogs[1]"/><!-- 这种访问是访问不到的,因为Set是无序的,无法根据下标访问某一个元素 -->
9、ognl访问Map
Map<String,Dog> dogMap = new HashMap<String,Dog>();
dogMap.put("dog100", new Dog("dog100"));
dogMap.put("dog101", new Dog("dog101"));
dogMap.put("dog102", new Dog("dog102"));
访问Map:<s:property value="dogMap"/>
访问Map中某个元素:<s:property value="dogMap.dog101"/> | <s:property value="dogMap['dog101']"/> | <s:property value="dogMap[\"dog101\"]"/>
访问Map中所有的key:<s:property value="dogMap.keys"/>
访问Map中所有的value:<s:property value="dogMap.values"/>
访问容器(集合)的大小:<s:property value="dogMap.size()"/> | <s:property value="users.size"/>
10、ognl的投影(过滤)
<!-- 这里的this是循环users中的所有对象中的每一个对象,获得他们的age去做判断,这句话就是找出users中user的age=1的那个user,但是有可能不止一个,所以返回的是一个集合 -->
投影(过滤):<s:property value="users.{?#this.age==1}[0]"/>
投影:<s:property value="users.{^#this.age>1}.{age}"/><!-- ^表示users中age大于1的集合中开头的那一个user -->
投影:<s:property value="users.{$#this.age>1}.{age}"/><!-- ^表示users中age大于1的集合中结尾的那一个user -->
投影:<s:property value="users.{$#this.age>1}.{age} == null"/><!-- 判断返回的集合中是否为空-->
在Action类中定义private String username;并配上set/get方法,则username这个会存放在值栈中。
而ognl表达式就是取值栈中的值得表达式。
user.xxx只有传,才会构造,想初始化domain model,可以自己new, 也可以传参数值,但是这时候需要保持空的构造方法
2、Action类中有一个对象属性Cat cat,Cat中有一个对象属性Dog dog, dog有name属性
在页面中访问dog的name的ognl表达式为:<s:property value="cat.dog.name" />
3、访问对象中的普通方法<s:property value="cat.dog.name.length()" />,name是字符串,有length方法,直接调用
4、访问Action类中的方法,假设Action类中有方法public String m(){return "hello"},
在页面上用ognl表达式调用为<s:property value="m()" />
5、ognl访问静态方法和属性
访问方式@包加类名@方法名或者属性名
访问静态方法:<s:property value="@com.edifier.struts2.ognl.S@s()"/>要访问静态方法需要在struts.xml中配置一句话
<constant name="struts.ognl.allowStaticMethodAccess" value="true"></constant>
访问静态属性:<s:property value="@com.edifier.struts2.ognl.S@STR"/>
访问Math类的静态方法:<s:property value="@@max(2,3)" />@@指定访问Math类
6、ognl访问普通类的构造方法
访问普通类的构造方法:<s:property value="new com.edifier.struts2.ognl.User(8)"/>返回的是toString方法
7、ognl访问List
List<User> users = new ArrayList<User>();
users.add(new User(1));
users.add(new User(2));
users.add(new User(3));
访问List:<s:property value="users"/>
访问List中某个元素:<s:property value="users[1]"/>
访问List中元素某个属性的集合:<s:property value="users.{age}"/>就是取出所有user的age放在一个新的集合中
访问List中元素某个属性的集合中的特定值:<s:property value="users.{age}[0]"/> | <s:property value="users[0].age"/>
8、ognl访问Set
Set<Dog> dogs = new HashSet<Dog>();
dogs.add(new Dog("dog1"));
dogs.add(new Dog("dog2"));
dogs.add(new Dog("dog3"));
访问Set:<s:property value="dogs"/>
访问Set中某个元素:<s:property value="dogs[1]"/><!-- 这种访问是访问不到的,因为Set是无序的,无法根据下标访问某一个元素 -->
9、ognl访问Map
Map<String,Dog> dogMap = new HashMap<String,Dog>();
dogMap.put("dog100", new Dog("dog100"));
dogMap.put("dog101", new Dog("dog101"));
dogMap.put("dog102", new Dog("dog102"));
访问Map:<s:property value="dogMap"/>
访问Map中某个元素:<s:property value="dogMap.dog101"/> | <s:property value="dogMap['dog101']"/> | <s:property value="dogMap[\"dog101\"]"/>
访问Map中所有的key:<s:property value="dogMap.keys"/>
访问Map中所有的value:<s:property value="dogMap.values"/>
访问容器(集合)的大小:<s:property value="dogMap.size()"/> | <s:property value="users.size"/>
10、ognl的投影(过滤)
<!-- 这里的this是循环users中的所有对象中的每一个对象,获得他们的age去做判断,这句话就是找出users中user的age=1的那个user,但是有可能不止一个,所以返回的是一个集合 -->
投影(过滤):<s:property value="users.{?#this.age==1}[0]"/>
投影:<s:property value="users.{^#this.age>1}.{age}"/><!-- ^表示users中age大于1的集合中开头的那一个user -->
投影:<s:property value="users.{$#this.age>1}.{age}"/><!-- ^表示users中age大于1的集合中结尾的那一个user -->
投影:<s:property value="users.{$#this.age>1}.{age} == null"/><!-- 判断返回的集合中是否为空-->
0 0
- Struts2笔记四之Ognl
- Struts2框架学习之四:OGNL表达式
- struts2学习笔记----OGNL
- struts2之OGNL
- Struts2之Ognl用法
- 八、Struts2之OGNL
- struts2之ognl表达式
- Struts2之ognl
- Struts2之OGNL
- struts2.x之OGNL
- struts2之OGNL
- Struts2之Ognl详解
- struts2之OGNL表达式
- Struts2之OGNL
- struts2之ognl表达式
- struts2之OGNL表达式
- struts2 - ognl表达式 学习笔记
- struts2 - ognl表达式 学习笔记
- 快逸V5数据源配置
- 黑马程序员 java学习笔记(day09)
- hdu 4939 Stupid Tower Defense DP
- 大律法(OTSU法)
- 学习v$sql,v$sqlarea,v$sqltext,v$sqlstats和v$sql_plan
- Struts2笔记四之Ognl
- linux内核线程对信号的处理过程
- Struts2笔记五之Struts标签
- Eclipse自动生成方法的注释格式
- AutoCompleteTextView和MultiAutoCompleteTextView使用详解
- dwz框架---(1)如何学习dwz框架
- Centos6/RHEL6 11.2.0.3rac添加节点
- 我的第一篇博客
- STM32学习笔记——利用通用定时器TIM2进行精确延时