条件运算符适用于许多属性,例如“渲染”“值”等。
但它在行动中不起作用?还是我做错了?
<h:commandLink action="#{true ? bean.methodTrue() : bean.methodFalse()}"/>
错误:javax.el.ELException:不是有效的方法表达式
(我使用 primefaces ajax 动作属性实现了它)
条件运算符适用于许多属性,例如“渲染”“值”等。
但它在行动中不起作用?还是我做错了?
<h:commandLink action="#{true ? bean.methodTrue() : bean.methodFalse()}"/>
错误:javax.el.ELException:不是有效的方法表达式
(我使用 primefaces ajax 动作属性实现了它)
这是不支持的。该action
属性应该是 a MethodExpression
,但条件运算符使其成为一种ValueExpression
语法。我认为MethodExpression
EL 中的 s 永远不会支持这一点。
你基本上有2个选择:
创建一个委托作业的单个操作方法。
<h:commandButton ... action="#{bean.method}" />
和
public String method() {
return condition ? methodTrue() : methodFalse();
}
如有必要,将其作为方法参数传递给#{bean.method(condition)}
.
或者,有条件地渲染 2 个按钮。
<h:commandButton ... action="#{bean.methodTrue}" rendered="#{bean.condition}" />
<h:commandButton ... action="#{bean.methodFalse}" rendered="#{not bean.conditon}" />