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>

具体的な問題とは関係ありませんが、命名規則が不十分です。Group1 つのグループは、 ではなくという名前のクラスで表す必要があり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 に答える