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

时间:2011-11-30 11:36:58

标签: jsf el jsf-1.2

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

如果所讨论的行符合某个条件,我需要这些按钮是只读的,即禁用。我在 JSF 2 中看到,可以将参数传递给方法调用。在JSF 1.2中有什么相同的东西吗?

理想情况下我喜欢它(循环变量是 loop ,还有另一个bean, helper ,它包含我想要调用的方法):

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

在这种情况下,向bean添加 isEditable 属性并不具有语义意义,并​​且在bean周围创建包装器对象是不切实际的。

提前致谢。

1 个答案:

答案 0 :(得分:8)

  

我在JSF 2中已经看到可以将参数传递给方法调用。在JSF 1.2中有什么相同的东西吗?

将参数传递给方法调用特定于JSF 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文件放在webapp的/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>

另见: