我有一个jsf页面(page1.xhtml),其中一个表单中的“h:datatable”定义并使用hibernate填充数据库中的值。这工作正常。
此外,我在同一页面上放置了“h:commandButton”(创建)。通过单击按钮,将打开一个新的jsf页面(page2.xhtml)。在新页面上,我可以将值设置为某些h:inputText元素,并可以使用Button“Save”将它们保存到数据库中。这也正常,因为我可以在数据库表中看到新值。
我的save方法的返回值是显示dataTable的jsf页面(page1.xhtml)的名称。
我现在的问题是如何更新或刷新dataTable,以便在现有值旁边显示新值?我是否必须再次从DB中阅读它们?
我的ManagedBean是SessionScoped,我正在使用JSF 2.2
我查了http://balusc.blogspot.de/2006/06/using-datatables.html但我无法找到相应的信息。
拜托,有人可以帮忙吗?
答案 0 :(得分:3)
你有两种选择。
第一种方法是切换到第1页的@ViewScoped
bean,以便在最初请求页面时调用service.load()
。这样,一旦请求页面,就会从数据库中获取刷新的数据,因此数据将是最新的,并且将以透明的方式完成。
第二种方法是继续使用@SessionScoped
bean。但是在第2页中,您需要使用@ManagedProperty
注入该会话范围bean,并通过调用sessionBean.getData(persistedElement);
将数据库中已保存的条目添加到会话bean中保存的数据列表中。这样,您的会话范围bean将包含最新值,这是您的责任。