【问题标题】:Reusable actionListener attribute - avoid null value - Illegal Syntax for Set Operation可重用的 actionListener 属性 - 避免空值 - 集合操作的非法语法
【发布时间】:2017-02-21 12:55:43
【问题描述】:

我正在看这个answerthis answer,它描述了如何使actionListener 例如在facelets 的情况下可重复使用:

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

...

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

很好。问题是我很困惑如果值是 null 呢? 类似这样的东西,但我不确定它是否适用于 jsf 语法(请参阅下一个 sn-p)

未测试

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

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

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

【问题讨论】:

  • 在复杂的布尔表达式的情况下,我真的对 el 表达式感到困惑,所以任何提示都会非常有帮助:S

标签: jsf jsf-2 el facelets taglib


【解决方案1】:

我尝试将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.该解决方案运行良好,但我仍在寻找更短的解决方案,因此请随时添加 cmets 和有用的提示 :)

干杯

【讨论】:

    猜你喜欢
    • 2013-08-20
    • 2013-01-10
    • 1970-01-01
    • 1970-01-01
    • 2011-06-04
    • 1970-01-01
    • 2021-07-16
    • 1970-01-01
    相关资源
    最近更新 更多