Primefaces刷新dataTable on modal dialog commandButton click

时间:2015-09-18 14:09:49

标签: jsf jsf-2 primefaces

我有用于编辑用户的dataTable。

我在每一行都有commandLink,用于打开带有所选用户数据的模态对话框进行编辑。

在该对话框中,我有commandButton来保存用户。

我在刷新dataTable并为用户显示新编辑的值时遇到问题。

tty

我按照BalusC对主题finding out id of component的回答,并且在服务器日志中没有错误。

当我点击保存按钮时,我调用了支持bean方法:

<p:commandButton value="Save" action="#{usersBean.updateUser()}" onclick="PF('editUserDlg').hide();" update=":adminForm:adminTabView:usersDataTable" styleClass="ui-priority-primary" style="float: right;" />

并且已正确保存已编辑的用户(我已在数据库中签入)。问题是在关闭模态对话框后,我在dataTable中看不到新编辑的用户值。 当我刷新页面时,我看到了用户的新值。

当我在updateUser(user)之后添加调用@PostConstruct init()方法时;我在dataTable中看到了更改的值,但我不确定这是否是正确的方法。

2 个答案:

答案 0 :(得分:0)

谢谢Kukeltje, 我将在updateUser()方法之后调用init()。

答案 1 :(得分:-1)

我不会调用init方法,只有在将bean构造为注释状态后才能调用此方法。

尝试调用remoteCommand而不是直接关闭对话框,刷新dataTable。之后,您可以从该命令关闭对话框。这样的事情。

<p:remoteCommand name="updateContent" update="table"
oncomplete="PF('dialog').hide();" />

没有直接尝试过此解决方案,但我认为应该可行。我用这种方法解决了类似的问题。

编辑:正如Kukeltje所述,您还必须刷新dataModel,以便dataTable接收新数据。您可以将一个actionListener添加到remoteCommand来执行此操作。