在JSF 1.2中使用EL调用带参数的方法

6
我正在使用数据表,对于每一行,我都有两个按钮,一个是“编辑”,另一个是“删除”。
如果满足某些特定条件,则需要将这些按钮设置为只读(即禁用)。在JSF 2中,我看到可以将参数传递给方法调用。在JSF 1.2中是否有相当的方法?
理想情况下,我希望通过以下方式实现(循环变量为loop,另一个bean名为helper,其中包含我想要调用的方法):
<h:commandButton value="Edit"
                   disabled="#{helper.isEditable(loop.id)}" />

在这种情况下,向bean添加isEditable属性并不具有语义上的意义,创建一个包装对象也不切实际。感谢您的提前考虑。
1个回答

8
我在JSF 2中看到可以向方法调用传递参数,那么在JSF 1.2中有相应的功能吗?
向方法调用传递参数不是JSF 2特有的功能,它是EL 2.2特有的功能,而EL 2.2又是JSP 2.2 / Servlet 3.0 / Java EE 6的一部分。JSF 2恰好也是Java EE 6的一部分。换句话说,如果您将JSF 1.2 Web应用程序部署到Servlet 3.0兼容的容器(如Tomcat 7、Glassfish 3等),并且您的web.xml符合Servlet 3.0规范版本声明,则JSF 1.x也可以直接使用。

如果你仍然在使用较早版本的Servlet容器,则需要提供一个支持带参数调用方法的不同EL实现。其中之一是JBoss-EL,你可以通过将jboss-el.jar文件放入Web应用程序的/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>

另请参阅:


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接