我在用户和组表之间制作了多对多连接表。所以我在每个实体中都有一个集合(用户和组)
@ManyToMany(mappedBy = "usersCollection")
private Collection<Groups> groupsCollection;
Run Code Online (Sandbox Code Playgroud)
我想在 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>
Run Code Online (Sandbox Code Playgroud)
这就是我得到的:

我怎样才能得到 nombre 而不是 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>
Run Code Online (Sandbox Code Playgroud)
与具体问题无关,你有一些糟糕的命名约定。一个组应该由一个名为 的类来表示Group,而不是Groups. 我建议重命名一个和另一个,以便代码变得更加自我记录:
<p:column headerText="groups">
<ui:repeat value="#{user.groups}" var="group">
<h:outputText value="#{group.name}" /><br/>
</ui:repeat>
</p:column>
Run Code Online (Sandbox Code Playgroud)
s字段/变量名称中的复数应该已经表明它涉及一个集合。
| 归档时间: |
|
| 查看次数: |
1635 次 |
| 最近记录: |