我有一个带有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的新手。请帮助。
更新:目前我所拥有的是两个按钮,即表格的页脚部分中的“禁用服务”和“启用服务”。
禁用服务的Onclick我正在导航到另一个页面,我向应用程序用户显示要禁用的启用服务列表
反之亦然,点击启用服务按钮。
答案 0 :(得分:1)
因此,假设您在 Managed Bean 中有一个您希望用户编辑的服务列表:
List<Service> serviceList;
您可以将此List
显示在数据表中。
<h:dataTable value="#{yourManagedBean.serviceList}" ... >
然后,您可以实现commandButton
action
,其actionListener
或<h:commandButton action="#{yourManagedBean.saveAllAction}" ... >
指向托管bean的某种方法,如下所示:
serviceList
保存'em all的相应方法非常简单。您遍历托管bean字段EntityManager
并保留每一个条目(但是你坚持使用它们,就像在使用Hibernate或其中的任何DAO类时调用selectBooleanCheckbox
一样,你可以命名它。)
关于服务状态:我最好使用serviceStatus
来切换状态,因为它可能是一个布尔值。
在评论1后编辑:
您的Service
课程中有selectBooleanCheckbox
。目前它是一个字符串,但我认为切换活动/非活动应该是布尔值。如果getServiceStatus()
显示此属性,则会在相应的Java类中自动更改。因此,调用true
会返回false
或Service
,具体取决于前端中选择的内容。如果你持久化整个{{1}}对象,则不需要做任何事情,因为在前端HTML元素中进行的任何修改都会自动投影到它后面的Java对象。