ui:repeat var 属性未按预期工作
由于 @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 时,这些问题都不存在,但使用该标记会导致其他问题。有什么建议吗?
Due to the problem with @ViewScoped, I have to use ui:repeat instead of c:foreach in my facelet. However I encounter this problem and I wonder if anyone can suggest a work-around.
<ui:repeat value="#{someBean.idCodes}"
var="led">
<h:outputText id="mailbox-#{led}"
value="#{someBean.getSomeValue(led)}" />
</ui:repeat>
The first problem is that the #{led} reference is the id attribute does NOT get evaluated. All the generated id attributes are simply the value "mailbox-". I need to find specific element instances with document.getElementById() so I need generated id attributes.
The other problem which I can't see a workaround for is that if I wrap the ui:repeat element inside an h:panelGrid element, I end up with a table with one cell in it, rather than one cell for each member of the idCodes collection.
When using c:foreach neither of these problems exist, but use of that tag causes other problems. Any suggestions?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
请注意 javadocs 的类型id 属性是 String,而不是 ValueExpression。这就是为什么你的 ${led} 没有被评估。您可以尝试将每个元素包装在 div 或 span 中,并将该元素的 id 设置为基于 ${led} 的表达式。
Notice in the javadocs that the type of the id attribute is String, not ValueExpression. That's why your ${led} is not evaluated. You could try to wrap each one in a div or span and set the id of that element to your ${led} based expression.