2

页面加载后是否可以使用 JSF 触发 ajax 事件,例如每 10 秒?

我是说:

<f:ajax listener="#{bean.mymethod()}" />

我想在页面加载后每 10 秒调用一次此方法。我不想通过 JavaScript 刷新重新加载整个页面。

4

2 回答 2

7

这个过程称为“轮询”。

标准 JSF 不提供此功能<f:ajax>。您需要寻找第 3 方 JSF 组件库。根据您的问题历史,您正在使用 PrimeFaces,或者至少已经熟悉它。在这种情况下,您可以只使用它的<p:poll>组件来完成这项工作。另请参阅以下提取代码的 PrimeFaces<p:poll>展示页面:

看法:

<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}" />  
于 2012-12-06T11:41:46.443 回答
0

采用

<a4j:poll action="#{bean.mymethod()}" interval="10000"/>
于 2012-12-06T11:17:24.743 回答