我见过有人在 JSF 中使用方括号,我不确定我是否正确理解它的用法。所以也许 JSF 大师可以帮助我理解它
1.假设我有这个
#{bean.x}
x是一个二维数组(x[][]),如何显示x[0]
使用EL?我想在这种情况下我需要使用方括号。我想我用#{bean.x[0]}
,但我有例外。
2.第二种情况来自BalusC代码将参数传递给复合组件操作属性 https://stackoverflow.com/questions/6355543/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>
我理解代码在做什么并且它工作得很好,但是如果有人可以解释在这种情况下方括号的用途,我将不胜感激。非常感谢
我想我用#{bean.x[0]}
,但我有例外。
不幸的是,您没有分享异常详细信息。但这应该可行,前提是有一个getX()
方法返回一个非null
给定索引确实存在的数组。
第二种情况是从 BalusC 代码将参数传递到复合组件操作属性
在这种特殊情况下,大括号表示法[]
使您能够使用动态属性名称或操作方法名称。以下当然不行
#{cc.attrs.bean.cc.attrs.action}
它只会尝试调用bean.getCc().getAttrs().action()
.
大括号表示法也用于Map<K, V>
。它允许您指定包含点的键(反过来不应将其作为属性进行 EL 求值)
#{bean.map['key.with.dots']}
当然,它还允许您指定动态映射键:
#{bean.map[otherBean.mapKey]}
也可以看看:
- 我们的 EL 维基页面 https://stackoverflow.com/tags/el/info
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)