为什么我无法通过表达式语言找到静态方法

时间:2013-11-27 05:07:12

标签: java jsp el static-methods

我有一个MyClass类,带有静态方法getmyStaticMethod() 在尝试通过我的jsp中的EL访问此方法时:
$ {MyClass.myStaticMethod}

这让我无法在MyClass类的对象中找到“myStaticMethod”的值 是因为静态方法是在类级别 EL仅查看对象级别无法找到它????

提前致谢。 :)

1 个答案:

答案 0 :(得分:2)

JSP EL无法访问类的静态方法。

${MyClass.myStaticMethod}表示:在页面范围中找到名为“MyClass”的属性,然后在请求范围内,然后在会话范围中,然后在应用程序范围内,如果找到,则获取名为“myStaticMethod”的属性“(即在此对象上调用getter getMyStaticMethod()。)

因此,如您所见,它不会查找名为MyClass的类,也不会调用任何静态方法。使用JSP EL无法做到这一点。

编辑:

从表达式语言规范3.0版(Java EE 7的一部分)开始,可以通过

访问静态字段和方法
    JSP中的
  • importing the class(或包)和
  • 使用类名后跟方法:

    ${MyClass.myStaticMethod()}