在EL中使用参数/变量/参数调用直接方法或方法

在EL中使用参数/变量/参数调用直接方法或方法

如何在JSF2.0中使用EL中的参数/变量/参数调用直接方法或方法?

例如,在EL中获取列表大小:

<h:outputText value="#{bean.list.size()}" />

或调用带有参数的动作方法:

<h:commandButton value="edit" action="#{bean.edit(item)}" />

这在我的环境中似乎行不通。它似乎不喜欢括号。

异常:错误解析:#{bean.list.size()}
parser.ParseException:偶遇“(”


繁华开满天机
浏览 690回答 2
2回答

ibeautiful

在标准的EL之前EL 2.2来自Java EE 6不能直接调用以下方法#{bean.method()}也不调用具有如下参数的方法#{bean.method(arg1, arg2).如果升级到符合EL 2.2/JavaEE 6的容器(Tomcat 7、GlassFish 3、JBossAS 6等)不是一个选项,而且您目前正在使用EL 2.1/JavaEE 5(Tomcat 6、GlassFish 2、JBossAS 4等),那么最好的选择是安装杰博斯·埃尔..JBossEL是一个符合EL 2.1标准的实现,它支持与EL 2.2相同的特性。安装JBossEl需要将jboss-el.jar在……里面/WEB-INF/lib并将以下内容添加到web.xml,假设您使用的是mojarra:<context-param>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;<param-name>com.sun.faces.expressionFactory</param-name> &nbsp;&nbsp;&nbsp;&nbsp;<param-value>org.jboss.el.ExpressionFactoryImpl</param-value>&nbsp;&nbsp;&nbsp;</context-param>或者,当你使用MyFaces时:<context-param>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;<param-name>org.apache.myfaces.EXPRESSION_FACTORY</param-name> &nbsp;&nbsp;&nbsp;&nbsp;<param-value>org.jboss.el.ExpressionFactoryImpl</param-value>&nbsp;&nbsp;&nbsp;</context-param>替代你的特殊情况是使用JSTL的fn:length:<h:outputText&nbsp;value="#{fn:length(bean.list)}"&nbsp;/>另一种选择是向返回的bean中添加一个getter。List#size()或在某些特定情况下自定义EL函数.因此,请注意,在EL中使用参数调用方法并不是JSF2.0特有的特性。这是EL 2.2的特性。EL 2.2是JavaEE 6的一部分,JSF2.0也是其中的一部分。所以它看起来像JSF2.0是一个特定于JSF2.0的特性,但事实并非如此。JSF2.0向后兼容Servlet2.5/El2.1,后者缺乏此特性。另一方面,JSF 1.x与Servlet3.0/El2.2向前兼容,因此也可以在JSF1.x中使用此特性,也可以在Servlet 2.5/El 2.1上使用JBossEL。

吃鸡游戏

然而,BalusC的答案是正确的,但是,当您使用maven时,您应该排除像下面这样的el-api 1.0传递依赖关系:<dependency> &nbsp;&nbsp;&nbsp;&nbsp;<groupId>org.jboss.seam</groupId> &nbsp;&nbsp;&nbsp;&nbsp;<artifactId>jboss-el</artifactId> &nbsp;&nbsp;&nbsp;&nbsp;<version>2.0.0.GA</version> &nbsp;&nbsp;&nbsp;&nbsp;<!--&nbsp;exclude&nbsp;el-api&nbsp;1.0&nbsp;transitive&nbsp;dependency&nbsp;--> &nbsp;&nbsp;&nbsp;&nbsp;<exclusions> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<exclusion> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<groupId>javax.el</groupId> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<artifactId>el-api</artifactId> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</exclusion> &nbsp;&nbsp;&nbsp;&nbsp;</exclusions></dependency>
打开App,查看更多内容
随时随地看视频慕课网APP