我见过人们在JSF中使用方括号,我不确定我是否理解它的正确用法。所以也许JSF大师可以帮助我理解它
1.所以说我有这个
#{bean.x}
和x是二维数组(x [] []),如何使用EL显示x[0]
?我想在这种情况下我需要使用方括号。我想我使用#{bean.x[0]}
,但我得到了例外。
2.第二种情况来自BalusC代码Pass Argument to a composite-component action attribute
<composite:interface>
<composite:attribute name="bean" type="java.lang.Object" />
<composite:attribute name="action" type="java.lang.String" />
<composite:attribute name="property" type="java.lang.String" />
</composite:interface>
<composite:implementation>
<h:commandButton value="Remove" action="#{cc.attrs.bean[cc.attrs.action]}">
<f:setPropertyActionListener target="#{cc.attrs.bean[cc.attrs.property]}" value="Somestring" />
</h:commandButton>
</composite:implementation>
我理解代码正在做什么并且它工作得很漂亮,但如果有人能解释在这种情况下方括号的用途,我将不胜感激。非常感谢你
答案 0 :(得分:8)
我认为我使用的是
#{bean.x[0]}
,但我得到了例外。
很遗憾你没有分享异常细节。但这应该可行,前提是有一个getX()
方法返回一个非null
数组,其中给定的索引确实存在。
第二种情况是从BalusC代码Pass Argument到复合组件操作属性
在这种特殊情况下,括号符号[]
使您可以使用动态属性名称或操作方法名称。以下当然不起作用
#{cc.attrs.bean.cc.attrs.action}
它只会尝试调用bean.getCc().getAttrs().action()
。
括号表示法也用于Map<K, V>
。它允许您指定包含点的键(反过来不应将EL评估为属性)
#{bean.map['key.with.dots']}
当然,它还允许您指定动态地图密钥:
#{bean.map[otherBean.mapKey]}