保存h:dataTable中的所有行

时间:2011-09-20 07:04:20

标签: jsf datatable

我有一个带有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我正在导航到另一个页面,我向应用程序用户显示要禁用的启用服务列表

反之亦然,点击启用服务按钮。

1 个答案:

答案 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会返回falseService,具体取决于前端中选择的内容。如果你持久化整个{{1}}对象,则不需要做任何事情,因为在前端HTML元素中进行的任何修改都会自动投影到它后面的Java对象。