a4j:poll - 重新加载数据模型

时间:2012-08-24 05:34:18

标签: ajax jsf jsf-2 richfaces

我正在尝试使用a4j:poll组件在一段时间间隔后重新加载数据表。它工作正常,但是当表自动重新加载并且我使用最后一列中的工具(编辑/删除行)时,datatable(所有行)消失,我必须手动加载它(使用h:commandButton)。

这是我的代码的一部分:

<h:form>
  <a4j:poll id="poll" interval="30000" action="#{bean.load}" enabled="#{bean.pollEnabled}" render="list" />
</h:form>

<h:form id="list" ...>
 <rich:dataTable id="table" var="item" value="#{bean.model}">
 ...

调用相同加载方法的按钮:

  <h:commandButton id="btn" action="#{bean.load}" ... /> 

当我使用按钮重新加载它时,我可以使用最后一列中的工具。你不知道为什么吗?

enter image description here

更新:

  • 似乎在第一种情况下(a4j:poll),当使用编辑/删除时,bean的构造函数被称为........
  • bean是@ViewScoped

1 个答案:

答案 0 :(得分:2)

  

似乎在第一种情况下(a4j:poll),当使用编辑/删除时,bean的构造函数被称为

我不做RichFaces,但我这个问题在某种程度上与JSF issue 790有关,导致其他表单的视图状态在ajax请求启动时丢失单独的形式(实际上也导致重建与其他形式相关的支持豆)。这也被描述为commandButton/commandLink/ajax action/listener method not invoked or input value not updated的第7点。

在您的特定情况下,将<a4j:poll>放在与表格相同的表格中可以解决问题。我不确定为什么首先将它放在一个单独的表格中,但这似乎是不必要的。