在标准的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