Is it possible to use EL conditional operator in action attribute?
24,547
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}" />
Author by
djmj
Updated on May 29, 2020Comments
-
djmj almost 4 years
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)