在標準的EL之前EL 2.2 from Java EE 6你不能直接調用等
#{bean.method()}
方法也不調用與參數的方法等#{bean.method(arg1, arg2)
。
如果升級到EL 2.2/Java EE 6的兼容的容器(Tomcat的7,Glassfish的3,JBoss應用服務器6等)是不一個選項,你目前正在使用EL 2.1/Java EE 5(Tomcat 6,Glassfish 2,JBoss AS 4等),那麼你最好的選擇是安裝JBoss EL。 JBoss EL是符合EL 2.1的實現,它支持與EL 2.2相同的功能。安裝JBoss EL是把jboss-el.jar
在/WEB-INF/lib
並添加以下到web.xml
的問題,假設你使用鑽嘴魚科:
<context-param>
<param-name>com.sun.faces.expressionFactory</param-name>
<param-value>org.jboss.el.ExpressionFactoryImpl</param-value>
</context-param>
或者,當你使用的MyFaces:
<context-param>
<param-name>org.apache.myfaces.EXPRESSION_FACTORY</param-name>
<param-value>org.jboss.el.ExpressionFactoryImpl</param-value>
</context-param>
爲你的具體情況另一種方法是使用JSTL的fn:length
:
<h:outputText value="#{fn:length(bean.list)}" />
另一種方法是一個吸氣劑添加到返回List#size()
豆或在某些特定情況下一個custom EL function。
請注意,因此在EL中調用具有參數的方法不是JSF 2.0的特定功能。這是EL 2.2特有的功能。 EL 2.2是Java EE 6的一部分,它也是JSF 2.0的一部分。因此,它看起來像一個 JSF 2.0特定功能,但事實並非如此。 JSF 2.0向後兼容Servlet 2.5/EL 2.1,它缺乏這種功能。另一方面,JSF 1.x向前兼容Servlet 3.0/EL 2.2,因此也可以在JSF 1.x中使用此功能,然後在Servlet 2.5/EL 2.1上也使用JBoss EL。
複製? HTTP://計算器。com/questions/206161/ – 2010-07-19 19:26:18