是否有可能使用EL条件运算符的action属性?(Is it possible to use EL

2019-06-24 04:58发布

条件运算符的工作像“渲染”,“价值”和其他许多属性。

不过,这并不在行动工作? 还是我做错了?

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

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

(I意识到它使用primefaces AJAX action属性)

Answer 1:

这是不支持的。 该action属性应该是一个MethodExpression ,但条件运算符使其成为一个ValueExpression语法。 我不认为这将以往任何时候都支持MethodExpression S IN EL。

你已经基本上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}" /> 


文章来源: Is it possible to use EL conditional operator in action attribute?