条件运算符适用于许多属性,如“已渲染”,“值”等。
但它在行动中不起作用?或者我做错了吗?
<h:commandLink action="#{true ? bean.methodTrue() : bean.methodFalse()}"/>
错误:javax.el.ELException:不是有效的方法表达式
(我用primefaces ajax action属性实现了它)
答案 0 :(得分:49)
不支持此功能。 action
属性应该是MethodExpression
,但条件运算符使其成为ValueExpression
语法。我不认为EL中的MethodExpression
会支持这种情况。
你基本上有两个选择:
创建一个委派作业的动作方法。
<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}" />