我在用户和组表之间创建了多对多连接表。 所以我在每个实体(用户和组)中有一个集合
@ManyToMany(mappedBy = "usersCollection")
private Collection<Groups> groupsCollection;
我想在 Jsf 中显示组集合,这就是我所做的:
<p:dataTable var="user" value="#{usergestion.tableusers}">
<p:column headerText="username">
<h:outputText value="#{user.username}" />
</p:column>
<p:column headerText="nom">
<h:outputText value="#{user.nom}" />
</p:column>
<p:column headerText="prenom">
<h:outputText value="#{user.prenom}" />
</p:column>
<p:column headerText="groupe">
<h:outputText value="#{user.groupsCollection.get(0)}" />
</p:column>
我得到的是:
我如何才能获得名称而不是 com.database.Groups[ idGroups=2 ] ???
解决方案:
我用过:<h:outputText value="#{user.groupsCollection.get(0).groupname}" />
最佳答案
您通常使用迭代组件,例如 <ui:repeat>
或<h:dataTable>
迭代集合。您可以将它完美地嵌套在另一个迭代组件中。
例如
<p:column headerText="groupe">
<ui:repeat value="#{user.groupsCollection}" var="groups">
<h:outputText value="#{groups.groupname}" /><br/>
</ui:repeat>
</p:column>
与具体问题无关,您有一些糟糕的命名约定。一个组应该由名为 Group
的类来表示,不是Groups
。我建议重命名其中一个和另一个,以便代码变得更加 self 记录:
<p:column headerText="groups">
<ui:repeat value="#{user.groups}" var="group">
<h:outputText value="#{group.name}" /><br/>
</ui:repeat>
</p:column>
复数 s
字段/变量名称中的 应该已经表明它涉及一个集合。
关于java - 如何在jsf中显示多对多的jpa集合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16417247/