论坛首页 Java企业应用论坛

在struts2.1.2中不能使用ognl访问静态方法的原因

浏览 8420 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-09-03  

使用struts, 在jsp页面中,可以通过ognl访问类的静态方法。

 

表达式的格式为@[类全名(包括包路径)]@[方法名 |  值名],例如:@java.lang.String@format('foo %s', 'bar') 。页面的输出结果就是:foo bar

 

在目前的项目中,我们使用了struts最新的版本2.1.2,当我在jsp页面中使用ognl访问类的静态方法时,发现不起作用。也没报错信息,找不到原因。网上搜了一下,也未发现相同经历的人。当我把struts的版本降到2.0.11时,发现是可以访问静态方法的,困惑!

 

最后终于发现了原因,原来是在2.1.2中,如果要通过ognl访问静态方法,必须在struts.properties或者struts.xml中将选项struts.ognl.allowStaticMethodAccess设置为true .

 

问题解决,记录备忘!

 

 

   发表时间:2008-09-03  
我以前在<s:property/>等一些struts2的标签里面通过ognl调用静态方法是不需要设置的,不知楼主是在哪里调用的
0 请登录后投票
   发表时间:2008-09-03  
kino 写道
网上搜了一下,也未发现相同经历的人。

偶发现很多问题不是搜不到,而是不会搜,你用google搜索:
struts2 ognl static method
第一条就是:
http://www.nabble.com/Struts2---OGNL-Calling-static-method-td18190358.html

别告诉偶你是用百度的...
技术问题用google,八卦问题用百度
1 请登录后投票
   发表时间:2008-09-03  
hsy537 写道
我以前在<s:property/>等一些struts2的标签里面通过ognl调用静态方法是不需要设置的,不知楼主是在哪里调用的

我是在jsp页面里调用的,在使用struts2.1.2之前的版本是不需要设置的。但在struts2.1.2中是要设置的。
0 请登录后投票
   发表时间:2008-09-03  
Readonly 写道
kino 写道
网上搜了一下,也未发现相同经历的人。

偶发现很多问题不是搜不到,而是不会搜,你用google搜索:
struts2 ognl static method
第一条就是:
http://www.nabble.com/Struts2---OGNL-Calling-static-method-td18190358.html

别告诉偶你是用百度的...
技术问题用google,八卦问题用百度


不会搜,这一点我承认 ,我是百度和google都使用,优先用google,但关键词的选择有一个过程,我一开始用的是“struts2 ognl"、"struts2 ognl 静态方法“,这种关键词是在baidu或google.cn里搜不出什么的。我最后还是在google.com搜到的,关键词和你用的简直一样:"struts2.1.2 ognl static method",我把版本号写具体了,因为目前只有这个版本有这个问题。

ps:搜索是门学问,加强学习,特别是关键词的选择!技术问题,最好去google.com用英文关键词搜!
0 请登录后投票
   发表时间:2008-12-04  
哈哈,谢谢LZ,我用“struts2 ognl 静态方法”搜到你了
0 请登录后投票
   发表时间:2009-04-11  
我也遇到这样的问题,用你的方法解决,谢谢
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics