2

我在用户和组表之间制作了多对多的连接表。所以我在每个实体中都有一个集合(用户和组)

@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}" />

4

1 回答 1

5

您通常使用迭代组件,例如<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。我建议重命名一个和另一个,以便代码变得更加自我记录:

<p:column headerText="groups"> 
    <ui:repeat value="#{user.groups}" var="group">
        <h:outputText value="#{group.name}" /><br/>
    </ui:repeat>
</p:column>

字段/变量名称中的复数s应该已经表明它涉及一个集合。

于 2013-05-07T11:02:49.007 回答