2013-11-27 88 views
0

我是有一個靜態方法getmyStaticMethod() 類MyClass的靜態方法雖然試圖通過EL在我的JSP訪問此方法:
$ {} MyClass.myStaticMethod
爲什麼我不能夠找到通過表達式語言

這是給我無法找到「myStaticMethod」的值在MyClass類 的對象是不是因爲靜態方法是在類級別EL僅在對象級別期待無法找到它?

在此先感謝。 :)

+0

您無法使用EL調用靜態方法。 –

+0

爲什麼?那是我的問題 – user2131465

+0

這是這項技術的一個特點。 [見這裏的替代品。](http://stackoverflow.com/questions/6395621/how-to-call-a-static-method-in-jsp-el) –

回答

2

JSP EL無法訪問類的靜態方法。

${MyClass.myStaticMethod}表示:發現在頁面範圍內名爲「MyClass的」的屬性,然後在要求範圍內,則在會話範圍,然後在應用範圍,如有發現,得到其屬性命名爲「myStaticMethod」(即在這個對象上調用getter getMyStaticMethod())。

因此,如您所見,它不會查找名爲MyClass的類,也不會調用任何靜態方法。 JSP EL無法做到這一點。

編輯:

當表達式語言規範(Java EE的7的一部分),訪問靜態字段和方法的3.0版本可以通過

  • 在JSP importing the class(或包),並使用類名,接着該方法
  • ${MyClass.myStaticMethod()} 
    
+1

這個答案不再像EL 3.0那樣正確,它增加了對靜態方法的支持,靜態字段。 EL 3.0是Java EE 7的一部分,因此您需要一個支持EL 3.0的容器,例如Tomcat 8. –

+0

@MarkThomas:感謝您的信息。我錯過了EE 7中的這一變化。我編輯了我的答案。 –

+0

這將很方便地顯示如何導入完成。 –

相關問題