【发布时间】:2012-12-06 10:58:14
【问题描述】:
页面加载后是否可以使用 JSF 触发 ajax 事件,例如每 10 秒一次?
我的意思是:
<f:ajax listener="#{bean.mymethod()}" />
我想在页面加载后每隔 10 秒调用一次此方法。我不想通过 JavaScript 刷新重新加载整个页面。
【问题讨论】:
页面加载后是否可以使用 JSF 触发 ajax 事件,例如每 10 秒一次?
我的意思是:
<f:ajax listener="#{bean.mymethod()}" />
我想在页面加载后每隔 10 秒调用一次此方法。我不想通过 JavaScript 刷新重新加载整个页面。
【问题讨论】:
这个过程称为“轮询”。
标准 JSF <f:ajax> 未提供此功能。您需要寻找第 3 方 JSF 组件库。根据您的question history,您正在使用 PrimeFaces,或者至少已经熟悉它。在这种情况下,您可以只使用它的<p:poll> 组件来完成这项工作。另请参阅the PrimeFaces <p:poll> showcase page,其代码摘录如下:
查看:
<h:form id="form">
<h:outputText id="txt_count" value="#{counterBean.count}" />
<p:poll interval="3"
listener="#{counterBean.increment}" update="txt_count" />
</h:form>
豆子:
public class CounterBean implements Serializable{
private int count;
public int getCount() {
return count;
}
public void setCount(int count) {
this.count = count;
}
public void increment() {
count++;
}
}
因此,在您的特定情况下,您需要以下内容:
<p:poll interval="10" listener="#{bean.mymethod}" />
【讨论】:
使用
<a4j:poll action="#{bean.mymethod()}" interval="10000"/>
【讨论】: