1

由于@ViewScoped 的问题,我必须在我的 facelet 中使用 ui:repeat 而不是 c:foreach 。但是我遇到了这个问题,我想知道是否有人可以提出解决方法。

<ui:repeat value="#{someBean.idCodes}"
           var="led">
           <h:outputText id="mailbox-#{led}" 
               value="#{someBean.getSomeValue(led)}" />
</ui:repeat>

第一个问题是 #{led} 引用是 id 属性没有得到评估。所有生成的 id 属性都只是值“mailbox-”。我需要使用 document.getElementById() 找到特定的元素实例,所以我需要生成的 id 属性。

我看不到解决方法的另一个问题是,如果我将 ui:repeat 元素包装在 h:panelGrid 元素中,我最终会得到一个包含一个单元格的表格,而不是每个成员的一个单元格idCodes 集合。

使用 c:foreach 时,这些问题都不存在,但使用该标签会导致其他问题。有什么建议么?

4

1 回答 1

1

请注意,在javadocs中,id 属性的类型是 String,而不是 ValueExpression。这就是你的 ${led} 没有被评估的原因。您可以尝试将每个元素包装在 div 或 span 中,并将该元素的 id 设置为基于 ${led} 的表达式。

于 2011-05-18T18:47:34.380 回答