我有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。
答案 0 :(得分:0)
我不认为使用dataTables
这些事情是一种很好的做法/简单的做法。我看到它的方式,最好为每个列表(部门,员工)实现selectOneMenu
组件(带有延迟加载列表),当然还有一些CSS,看起来很好并且“通风”...
甚至是PickList,这是一个更好的选择......
编辑:
好吧,那么我们将不得不使用表:但是,我不知道困难部分的位置......(are you using JDBC or a DAO framework like Hibernate,JPA?
)对于每个选定的部门(部门html表中的行),您将不得不查询数据库(或包含所有用户及其部门的事务表 - 当然是FK密钥)并选择该部门的所有用户或没有部门的用户。因此,您将拥有一个带event="select"
的ajax组件。您必须至少对每个选定的部门执行此查询一次,然后缓存结果,直到在部门中添加新用户(然后您必须通过执行另一个查询来刷新缓存的数据)。
告诉我,我的思维方式是否正确......