var 是集合,而不是项目

2024-01-05

我正在循环访问“RSVP”对象的集合并打印出每个对象的“Name”属性的值,如下所示

<p:dataTable id="rsvpDataTable" var="rsvp" value="#{eventController.event.rsvps}"...
   <h:outputText value="#{rsvp.name}" />
</p:dataTable>

但我收到错误:类 'org.hibernate.collection.internal.PersistentSet' 没有属性 'name'

相反,如果我打印出“rsvp.class.name”来查看它是什么类型,它确实是一个 PersistentSet。

但为什么?它应该是集合中的单个 RSVP 实例。

如果我调试代码并在 getRsvps() 处停止,我可以看到它返回一个包含我的 RSVP 对象的 PersistentSet。 RSVP 与事件具有双向关系。会不会是这个原因造成的?

实际上,我也有点怀疑它是否是一个持久集,我本以为它现在已经转换回正常的“Java”集,但也许不是。

Thanks


你不能迭代Set,目前这是 JSF 的限制。 JSF 2.2就能做到这一点。

也就是说,你可以自己转换它,或者,我会做什么,你可以使用OmniFaces#{of:setToList}EL功能 http://showcase.omnifaces.org/functions/Converters。您不必重新发明轮子。 :)

也可以看看这个答案 https://stackoverflow.com/a/7712593/1363540作者:BalusC.


至于 Hibernate 返回的事实PersistentSet,这就是它的工作原理。 Hibernate 有它自己的实现Set,因此它可以实现延迟加载等功能。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

var 是集合,而不是项目 的相关文章

随机推荐