可重复使用的 actionListener 属性 - 避免空值 - 设置操作的非法语法
Reusable actionListener attribute - avoid null value - Illegal Syntax for Set Operation
我正在看这个 answer or this 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])}" />
alike 表达式导致 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}" />
p.s.The 解决方案运行良好,但我仍在寻找更短的解决方案,因此请随时添加评论和有用的提示:)
干杯
我正在看这个 answer or this 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])}" />
alike 表达式导致 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}" />
p.s.The 解决方案运行良好,但我仍在寻找更短的解决方案,因此请随时添加评论和有用的提示:)
干杯