是否可以在action属性中使用EL条件运算符?

时间:2012-05-06 19:53:11

标签: jsf action el conditional-operator

条件运算符适用于许多属性,如“已渲染”,“值”等。

但它在行动中不起作用?或者我做错了吗?

<h:commandLink action="#{true ? bean.methodTrue() : bean.methodFalse()}"/>

错误:javax.el.E​​LException:不是有效的方法表达式

(我用primefaces ajax action属性实现了它)

1 个答案:

答案 0 :(得分:49)

不支持此功能。 action属性应该是MethodExpression,但条件运算符使其成为ValueExpression语法。我不认为EL中的MethodExpression会支持这种情况。

你基本上有两个选择:

  1. 创建一个委派作业的动作方法。

    <h:commandButton ... action="#{bean.method}" />
    

    public String method() {
        return condition ? methodTrue() : methodFalse();
    }
    

    如有必要,请通过#{bean.method(condition)} 将其作为方法参数传递。

  2. 或者,有条件地渲染2个按钮。

    <h:commandButton ... action="#{bean.methodTrue}" rendered="#{bean.condition}" />
    <h:commandButton ... action="#{bean.methodFalse}" rendered="#{not bean.conditon}" />