可重用的actionListener属性-避免空值-设置操作的非法语法



我正在看这个答案或这个答案,它描述了如何使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}" />

注。解决方案很好,但我仍在寻找一个更短的,所以请随时添加评论和有用的提示:)

欢呼

最新更新