2

我正在尝试使用a4j:poll组件进行 ajax 在一段时间后重新加载数据表。它工作正常,但是当表自动重新加载并且我在最后一列中使用工具(编辑/删除行)时,数据表(所有行)消失了,我必须手动加载它(使用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}" ... /> 

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

在此处输入图像描述

更新:

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

1 回答 1

2

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

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

在您的特定情况下,<a4j:poll>以与表格相同的形式放置应该可以解决问题。我不确定为什么首先将其放在单独的表格中,但这似乎没有必要。

于 2012-08-24T11:47:50.853 回答