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

时间:2016-10-12 16:12:32

标签: jsf jsf-2 el facelets taglib

我正在关注此answerthis answer,其中介绍如何使actionListener例如在facelets的情况下可重复使用:

<my:tag ... bean="#{myBean}" actionMethod="preFillData" />

...

<h:commandButton ... action="#{bean[actionMethod]}" />

很好。问题是,如果值 null ,我会感到困惑吗? 这样的东西,但我不确定它在jsf语法的情况下是否可行(参见下一个片段)

未经过测试

<h:commandButton ... action="#{(bean==null||actionMethod==null?myBeanB[myMethodB]:bean[actionMethod])}" />

相似的表达式导致Illegal Syntax for Set Operation异常被抛出...所以我不确定语法:(*

所以我的问题是......如何在客户端分析属性值?

1 个答案:

答案 0 :(得分:0)

我尝试将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}" />

。p.s.解决方案工作正常,但我仍然在寻找一个较短的解决方案,所以请随时添加评论和有用的提示:))

干杯