将所有行保存在h: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的新手。请帮助。

更新:目前我所拥有的是两个按钮,即'禁用服务'和'启用服务'在表的页脚部分。

单击"禁用服务",我正在导航到另一个页面,在那里我向应用程序用户显示要禁用的启用服务列表

反之亦然

那么,假设你在Managed Bean中有一个你希望用户编辑的服务列表:

List<Service> serviceList;

将此List显示在数据表中。

<h:dataTable value="#{yourManagedBean.serviceList}" ... >

然后你可以实现一个commandButton,它有一个actionactionListener,指向你管理bean的某个方法,像这样:

<h:commandButton action="#{yourManagedBean.saveAllAction}" ... >

相应的方法来保存它们都是相当直接的。您遍历托管bean字段serviceList并持久化每个条目(无论您如何持久化它们,例如在使用Hibernate或两者之间的任何DAO类时调用EntityManager,您可以命名它)

关于服务状态:我最好使用selectBooleanCheckbox来切换状态,因为它可能是一个布尔值。

在注释1后编辑:

你有serviceStatus在你的Service类。目前它是一个字符串,但我想它应该是布尔值来切换活动/非活动。如果selectBooleanCheckbox显示此属性,则在相应的Java类中自动更改。因此,调用getServiceStatus()将返回truefalse,具体取决于在前端选择的内容。如果您持久化整个Service对象,那么您不必做任何事情,因为在前端HTML元素中所做的任何修改都会自动投影到它后面的Java对象。

相关内容

  • 没有找到相关文章

最新更新