Java jsf<;h:数据表>;如何使用添加到数据库中的新值刷新或更新dataTable

Java jsf<;h:数据表>;如何使用添加到数据库中的新值刷新或更新dataTable,java,jsf,jsf-2,Java,Jsf,Jsf 2,我有一个jsf页面(page1.xhtml),其中表单中有一个“h:datatable”,使用hibernate定义并填充数据库中的值。这很好用 此外,我在同一页上放置了一个“h:commandButton”(创建)。单击该按钮将打开一个新的jsf页面(page2.xhtml)。在新页面上,我可以设置一些h:inputText元素的值,并可以使用“保存”按钮将它们保存到数据库中。这也很好,因为我可以在数据库表中看到新值 我的save方法的返回值是显示dataTable的jsf页面(page1.x

我有一个jsf页面(page1.xhtml),其中表单中有一个“h:datatable”,使用hibernate定义并填充数据库中的值。这很好用

  • 此外,我在同一页上放置了一个“h:commandButton”(创建)。单击该按钮将打开一个新的jsf页面(page2.xhtml)。在新页面上,我可以设置一些h:inputText元素的值,并可以使用“保存”按钮将它们保存到数据库中。这也很好,因为我可以在数据库表中看到新值

  • 我的save方法的返回值是显示dataTable的jsf页面(page1.xhtml)的名称

  • 我现在的问题是如何更新或刷新dataTable,以便在现有值之外显示新值?我必须从数据库中再次读取它们吗

  • 我的ManagedBean是SessionScope,我使用的是JSF2.2

  • 我检查了一下,但找不到相应的信息


    请问有人能帮忙吗?

    您有两种选择

    第一种选择是切换到第1页的
    @ViewScoped
    bean,以便在最初请求页面时调用
    service.load()
    。这样,在请求页面时,刷新的数据将立即从数据库中获取,因此数据将是最新的,并且对您来说是透明的


    第二种选择是继续使用
    @SessionScoped
    bean。但是在第2页中,您需要使用
    @ManagedProperty
    注入会话范围的bean,并通过调用
    sessionBean.getData(persistedElement)将数据库中已经持久化的条目添加到会话bean中保存的数据列表中。这样,会话范围的bean将包含最新的值,这是您的责任。

    正如您所提到的,我使用@ViewScoped进行了尝试,效果非常好。非常感谢!