使用ognl时的一个特殊需求是到application中读取一个配置量。而这个配置是一个hashmap。其存放于application的attribute是“type”。
所以用#application['type']可以取到该hashMap。
接下来想取一个key为“1”的对象。
此处可以使用
#application['type']["1"]得到,注意此处如果key只有一个字母或数字,最好用",告诉系统这是一个字符串。否则可能取不到,如果此时的"1"是在一个变量中,还可以写为:
#application[”type“][variable_name].
2由于【】是哈希和数组同时使用的。所以当哈希的key是integer时,就比较容易混,系统也处理不了。此时对与integerkey的hash应该用get方法,而不是【】;此种情况出错时会打印堆栈,可以找到源码看看,顺便理解源码!
ognl中变量的存放
ognl表达式访问的变量都存放在ValueStack变量中,该对象又存放与request的struts.valueStack变量中。valueStack中的变量分为两类,1. root对象中,该对象是一个堆栈。2.存放于该对象中的values变量中,该对象是一个hashMap。所以当要访问的对象存在于values对象中时,需要“#”来访问,而存放于root中的对象则可以直接用名字访问。
阅读(757) | 评论(0) | 转发(0) |