2013-05-07 33 views
1

我在用戶和組表之間建立了多對多的連接表。 所以我有一個集合中的每個entitie(用戶和組)如何在jsf中顯示多對多jpa集合?

@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> 

和我所得到的: enter image description here

我怎樣才能得到的只是nombre不com.database.Groups [idGroups = 2] ???

解決方案:

我使用:

回答

4

您通常使用的迭代組分如<ui:repeat><h:dataTable>遍歷集合。你可以完美地將它嵌套在另一個迭代組件中。

E.g.

<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應該已經表示,它涉及的集合。