28

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

但它在行动中不起作用?还是我做错了?

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

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

(我使用 primefaces ajax 动作属性实现了它)

4

1 回答 1

51

这是不支持的。该action属性应该是 a MethodExpression,但条件运算符使其成为一种ValueExpression语法。我认为MethodExpressionEL 中的 s 永远不会支持这一点。

你基本上有2个选择:

  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}" />
    
于 2012-05-28T19:46:33.777 回答