我有一个带有h:dataTable.
的Facelets页面。在h:dataTable
的每一行中,我显示了一个用户的一些启用和禁用的服务。这里是模型对象
public class ServiceList {
private long userId;
private long serviceGroupId;
private String serviceGroupName;
private long serviceId;
private String serviceName;
private String serviceUrl;
private String serviceState;
public UserServiceList() {
}
//getters and setters....
}
这些是我在dataTable的单行中显示的详细信息。上述模型对象中的serviceState为'Y'或'N'。
我的问题是应用程序用户应该能够一次更新dataTable所有行的服务属性,并在后端数据库中更新它们
1)我需要在dataTable中使用什么额外的JSF组件来实现这一点?我正在考虑添加一个列与h:selectOneradio
2)我如何得到哪些行被选中,他们设置了什么状态?
我是JSF的新手。请帮助。
更新:目前我所拥有的是两个按钮,即'禁用服务'和'启用服务'在表的页脚部分。
单击"禁用服务",我正在导航到另一个页面,在那里我向应用程序用户显示要禁用的启用服务列表
反之亦然
那么,假设你在Managed Bean中有一个你希望用户编辑的服务列表:
List<Service> serviceList;
将此List
显示在数据表中。
<h:dataTable value="#{yourManagedBean.serviceList}" ... >
然后你可以实现一个commandButton
,它有一个action
或actionListener
,指向你管理bean的某个方法,像这样:
<h:commandButton action="#{yourManagedBean.saveAllAction}" ... >
相应的方法来保存它们都是相当直接的。您遍历托管bean字段serviceList
并持久化每个条目(无论您如何持久化它们,例如在使用Hibernate或两者之间的任何DAO类时调用EntityManager
,您可以命名它)
关于服务状态:我最好使用selectBooleanCheckbox
来切换状态,因为它可能是一个布尔值。
在注释1后编辑:
你有serviceStatus
在你的Service
类。目前它是一个字符串,但我想它应该是布尔值来切换活动/非活动。如果selectBooleanCheckbox
显示此属性,则在相应的Java类中自动更改。因此,调用getServiceStatus()
将返回true
或false
,具体取决于在前端选择的内容。如果您持久化整个Service
对象,那么您不必做任何事情,因为在前端HTML元素中所做的任何修改都会自动投影到它后面的Java对象。