The conditional operator works in many attributes like "rendered" "value" and others.
But it does not work in action? Or am I doing it wrong?
<h:commandLink action="#{true ? bean.methodTrue() : bean.methodFalse()}"/>
Error: javax.el.ELException: Not a Valid Method Expression
(I realized it using primefaces ajax action attribute)
This is not supported. The action
attribute is supposed to be a MethodExpression
, but the conditional operator makes it a ValueExpression
syntax. I don't think this will ever be supported for MethodExpression
s in EL.
You have basically 2 options:
Create a single action method which delegates the job.
<h:commandButton ... action="#{bean.method}" />
with
public String method() {
return condition ? methodTrue() : methodFalse();
}
If necessary, pass it in as method argument by #{bean.method(condition)}
.
Or, conditionally render 2 buttons.
<h:commandButton ... action="#{bean.methodTrue}" rendered="#{bean.condition}" />
<h:commandButton ... action="#{bean.methodFalse}" rendered="#{not bean.conditon}" />