2011-11-30 65 views
1

我有3個表,用戶,用戶組和組。我希望實現以下功能:當我在我的組數據表中選擇一個不同的組時,用戶數據表將刷新並更新用戶列表。如何刷新數據表以從數據庫檢索新列表

例如, -

Groups 

1. Management 
2. HR 
3. Support 

User 

1. John 
2. Tom 
3. Mary 

我從組中選擇管理,我從用戶選擇約翰,並將它們添加到羣組出現以下情況:

Groups 

1. Management 
2. HR 
3. Support 

User 

2. Tom 
3. Mary 

UserGroups 

Management, John 

我重複這個過程湯姆添加到管理:

1. Management 
2. HR 
3. Support 

    User 

3. Mary 

UserGroups 

Management, John 
Management, Tom 

現在,當我選擇一個新的組,HR,用戶表刷新:

1. Management 
2. HR 
3. Support 

用戶

1. John 
2. Tom 
3. Mary 

UserGroups 

Management, John 
Management, Tom 

基本上,當我選擇一個組,在用戶數據表將顯示用戶在NOT部。

這裏是我的JSF代碼:

<p:dataTable var="users" value="#{usuariousGruposBean.listOfUsuarios}" selection="#{users}" selectionMode="single"> 

    <p:column headerText="" style="height:0" rendered ="false"> 
    <h:outputText value="#{users.id_usuario}"/> 
    </p:column> 

    <p:column headerText="Usuarios" style="height:50"> 
    <h:outputText value="#{users.nome}"/> 
    </p:column> 

    <p:column> 
    <h:commandLink value ="selection" action="#{usuariousGruposBean.selectionOfUserObject}" > 
    <f:setPropertyActionListener target="#{usuariousGruposBean.user}" value="#{users}"/> 
    </h:commandLink> 
    </p:column> 


</p:dataTable> 

我現在有從我的數據庫中檢索用戶的列表兩種方法:

public List<Usuarious> getListOfUsuarios() throws DAOExceptions { 
     List<Usuarious> usuariosList = userDAO.list(); 
     listOfUsuarios = usuariosList; 
     return listOfUsuarios; 
    } 

    public List<Usuarious> getNewListUsers() throws DAOExceptions { 
     if(listOfUsuarios ==null) { 
     List<Usuarious> userList =userDAO.listAll(); 
     refreshListUsuarios = userList; 
     } 
     return refreshListUsuarios; 
    } 

我想刷新我{usuariousGruposBean.listOfUsuarios}。只有當我手動交換listOfUsuarios,{usuariousGruposBean.refreshListUsuarios}時,纔可以刷新我的用戶數據表中的用戶列表。

我的問題是..如何自動執行此功能?我希望刷新列表,並在我的示例中顯示以下輸出。這甚至有可能嗎?

我正在使用primefaces,jsf和java。

+0

我不明白:你想已經有部門相關的用戶顯示,或不?我看到它的方式,已經來自部門的用戶不應該在那裏顯示!請解釋。 – spauny

+0

好吧,部門中的用戶不會顯示在用戶表中,但會在選中新組時顯示。我與具有UserGroups的用戶和組具有多對多關係作爲兩者之間的關聯實體。所以,當選擇一個新的組時,將再次檢索一個新的用戶列表。發生以下情況(管理,湯姆),(人力資源,湯姆) – ShaunK

回答

0

我不認爲使用dataTables這些類型的東西是一個很好的做法/簡單的做法。我看到它的方式,最好爲每個列表(部門,員工)實現一個selectOneMenu組件(部門,員工),當然還有一些CSS,看起來不錯,很「通風」......

甚至領料單,這是一個更好的選秀...

編輯: 好吧,那麼我們將不得不與表工作:不過,我沒有看到困難的部分是...(are you using JDBC or a DAO framework like Hibernate,JPA?)爲每個所選部門(來自部門html表的行),您將不得不查詢數據庫(或包含所有用戶及其部門的交易表 - 當然是FK鍵),並選擇該部門的所有用戶或沒有部門的用戶。因此,您將擁有一個包含event="select"的ajax組件。您必須至少對每個選定部門執行一次此查詢,然後緩存結果,直到將新用戶添加到部門中(然後您必須通過執行其他查詢來刷新緩存數據)。

告訴我,如果我的思維方式是正確的......

+0

我希望我可以改變,但我不能。這是我必須堅持:/ – ShaunK

+0

@ShaunK答案更新。 – spauny

+0

我正在使用JDBC。是的,你是對的。但你會怎麼做呢?緩存如何工作?我很抱歉,我是網絡開發新手。 @spauny – ShaunK