在JSF 1.2中通过EL调用具有参数的方法

我正在使用一个数据表,每行我有两个button,一个“编辑”和一个“删除”。

我需要这些button是只读的,即禁用,如果某个条件符合所述行。 我在JSF 2中看到,可以将parameter passing给方法调用。 JSF 1.2中有什么等价的东西吗?

理想情况下,我想要的东西就像(循环variables是循环 ,还有另一个bean, 助手 ,其中包含我想要调用的方法):

<h:commandButton value="Edit" disabled="#{helper.isEditable(loop.id)}" /> 

在这种情况下,向bean中添加isEditable属性并没有语义上的意义,并且在bean周围创build一个包装对象是不现实的。

提前致谢。

我在JSF 2中看到,可以将parameter passing给方法调用。 JSF 1.2中有什么等价的东西吗?

将parameter passing给方法调用不是特定于JSF 2.它是EL 2.2的特定部分,而它是JSP 2.2 / Servlet 3.0 / Java EE 6的一部分.JSF 2恰好也是Java EE 6的一部分。 换句话说,如果您将JSF 1.2 Web应用程序部署到像Tomcat 7,Glassfish 3等Servlet 3.0兼容容器,并且您的web.xml声明符合Servlet 3.0规范版本,那么它将只是为JSF 1.x也是如此。

但是,如果您仍然定位一个较旧的Servlet版本的容器,那么您需要提供一个不同的EL实现,该实现支持使用参数调用方法。 其中一个实现是JBoss-EL ,您可以通过将jboss-el.jar文件放在/WEB-INF/lib jboss-el.jar程序的/WEB-INF/lib中,并将以下上下文参数添加到web.xml 。 这是一个Mojarra特定的例子( Mojarra是JSF RI的代号):

 <context-param> <param-name>com.sun.faces.expressionFactory</param-name> <param-value>org.jboss.el.ExpressionFactoryImpl</param-value> </context-param> 

如果您使用MyFaces作为JSF实现,则需要使用以下上下文参数:

 <context-param> <param-name>org.apache.myfaces.EXPRESSION_FACTORY</param-name> <param-value>org.jboss.el.ExpressionFactoryImpl</param-value> </context-param> 

也可以看看:

  • 在EL中调用带有参数/variables/参数的直接方法或方法