ajax - a4j :poll - reloading data model

标签 ajax jsf jsf-2 richfaces

我正在尝试使用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}" ... /> 

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

enter image description here

更新:

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

最佳答案

seems that in first case (a4j:poll), when using edit/delete, constructor of the bean is called

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

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

关于ajax - a4j :poll - reloading data model,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12103641/

相关文章:

javascript - 对第三方 AJAX 负载执行某些操作

javascript - Kendogrid 不刷新

java - 继续接收 : javax. el.PropertyNotFoundException : Target Unreachable, 'null' 返回 null

java - 带有可编辑数据表的 Primefaces selectManyCheckbox 将空值提交给转换器

java - 对 AJAX 请求的 Servlet 响应为空

javascript - 像模板一样保存来自多个 CKEditor 内联编辑器字段的数据

jsf - h :panel group not rendering properly

jsf - 带有 ajax 的 Commandlink 仅在第二次点击时有效

jsf-2 - 试图找到 c :out tag from the JSTL library within JSF application

jsf - 访问另一个托管Bean中的JSF托管Bean的值