我正在看这个答案或这个答案,它描述了如何使actionListener
例如在facelets的情况下可重用
<my:tag ... bean="#{myBean}" actionMethod="preFillData" />
...
<h:commandButton ... action="#{bean[actionMethod]}" />
很好。事情是我很困惑,如果值是null,例如?类似这样的东西,但我不确定它是否适用于case jsf语法(见下一个代码片段):
从来没有检验过<h:commandButton ... action="#{(bean==null||actionMethod==null?myBeanB[myMethodB]:bean[actionMethod])}" />
类似的表达式导致抛出Illegal Syntax for Set Operation
异常…所以我不确定语法:(*
我尝试使用if...else
作为:
<c:if test="#{bean!=null and actionMethod!=null}">
<c:set var="variableAction" value="#{bean[actionMethod]}"/>
</c:if>
<c:if test="#{bean==null or actionMethod==null}">
<c:set var="variableAction" value="#{somedefaultbean.method}"/>
</c:if>
...
<h:commandButton ... actionListener="#{variableAction}" />
注。解决方案很好,但我仍在寻找一个更短的,所以请随时添加评论和有用的提示:)
欢呼