首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在EL JSF中使用方括号

如何在EL JSF中使用方括号
EN

Stack Overflow用户
提问于 2012-09-10 06:11:19
回答 1查看 5.2K关注 0票数 4

我见过人们在JSF中使用方括号,我不确定我是否正确理解了它的用法。所以也许JSF专家可以帮助我理解它。

1.假设我有这个

代码语言:javascript
复制
#{bean.x}

X是二维数组(x),如何使用EL显示x[0]?我想在这种情况下我需要使用方括号。我想我用的是#{bean.x[0]},但是我遇到了异常。

2.第二个场景来自BalusC代码Pass Argument to a composite-component action attribute

代码语言:javascript
复制
<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>

我知道代码在做什么,它运行得很好,但如果有人能解释一下方括号在这种情况下的用途,我将不胜感激。非常感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-10 07:57:30

我想我用的是#{bean.x[0]}__,但是我遇到了异常。

不幸的是,您没有分享异常的详细信息。但是,如果有一个getX()方法返回一个非null数组,其中的给定索引确实存在,那么这应该是可行的。

第二个场景是从BalusC代码传递参数到复合组件操作属性

在这种特殊情况下,大括号表示法[]使您能够使用动态属性名称或操作方法名称。下面的内容当然不起作用

代码语言:javascript
复制
#{cc.attrs.bean.cc.attrs.action}

它只会尝试调用bean.getCc().getAttrs().action()

大括号表示法也在Map<K, V>上使用。它允许您指定包含点的键(反过来,不应将其作为属性进行EL计算)

代码语言:javascript
复制
#{bean.map['key.with.dots']}

当然,它还允许您指定一个动态映射键:

代码语言:javascript
复制
#{bean.map[otherBean.mapKey]}

另请参阅:

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12343410

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档