jsf <h:datatable>如何使用添加到数据库的新值刷新或更新dataTable </h:datatable>

时间:2013-11-30 20:50:06

标签: java jsf jsf-2

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

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

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

  4. 我现在的问题是如何更新或刷新dataTable,以便在现有值旁边显示新值?我是否必须再次从DB中阅读它们?

  5. 我的ManagedBean是SessionScoped,我正在使用JSF 2.2

  6. 我查了http://balusc.blogspot.de/2006/06/using-datatables.html但我无法找到相应的信息。

    拜托,有人可以帮忙吗?

1 个答案:

答案 0 :(得分:3)

你有两种选择。

第一种方法是切换到第1页的@ViewScoped bean,以便在最初请求页面时调用service.load()。这样,一旦请求页面,就会从数据库中获取刷新的数据,因此数据将是最新的,并且将以透明的方式完成。

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