如何刷新数据表以从数据库中检索新列表

时间:2011-11-30 10:58:51

标签: java jsf primefaces

我有3个表,用户,用户组和组。我希望实现以下功能:当我在Groups datatable中选择不同的Group时,User数据表将刷新,并更新用户列表。

例如 -

Groups

 1. Management
 2. HR
 3. Support

User

 1. John
 2. Tom
 3. Mary

我从群组中选择管理,然后从用户中选择John,并将其添加到UserGroups以下情况:

Groups

 1. Management
 2. HR
 3. Support

User

 2. Tom
 3. Mary

UserGroups

Management, John

我重复将Tom添加到管理层的过程:

 1. Management
 2. HR
 3. Support

  User

 3. Mary

UserGroups

Management, John
Management, Tom

现在,当我选择一个新组HR时,User表会刷新:

 1. Management
 2. HR
 3. Support

用户

 1. John
 2. Tom
 3. Mary

UserGroups

Management, John
Management, Tom

基本上,当我选择一个组时,用户数据表将显示不在部门中的用户。

这是我的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。

1 个答案:

答案 0 :(得分:0)

我不认为使用dataTables这些事情是一种很好的做法/简单的做法。我看到它的方式,最好为每个列表(部门,员工)实现selectOneMenu组件(带有延迟加载列表),当然还有一些CSS,看起来很好并且“通风”...

甚至是PickList,这是一个更好的选择......

编辑: 好吧,那么我们将不得不使用表:但是,我不知道困难部分的位置......(are you using JDBC or a DAO framework like Hibernate,JPA?)对于每个选定的部门(部门html表中的行),您将不得不查询数据库(或包含所有用户及其部门的事务表 - 当然是FK密钥)并选择该部门的所有用户或没有部门的用户。因此,您将拥有一个带event="select"的ajax组件。您必须至少对每个选定的部门执行此查询一次,然后缓存结果,直到在部门中添加新用户(然后您必须通过执行另一个查询来刷新缓存的数据)。

告诉我,我的思维方式是否正确......