我见过人们在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>我知道代码在做什么,它运行得很好,但如果有人能解释一下方括号在这种情况下的用途,我将不胜感激。非常感谢
发布于 2012-09-10 07:57:30
我想我用的是
#{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]}另请参阅:
https://stackoverflow.com/questions/12343410
复制相似问题