【问题标题】:Fire ajax event every 10 seconds after page is loaded页面加载后每 10 秒触发一次 ajax 事件
【发布时间】:2012-12-06 10:58:14
【问题描述】:

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

我的意思是:

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

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

【问题讨论】:

    标签: ajax jsf


    【解决方案1】:

    这个过程称为“轮询”。

    标准 JSF &lt;f:ajax&gt; 未提供此功能。您需要寻找第 3 方 JSF 组件库。根据您的question history,您正在使用 PrimeFaces,或者至少已经熟悉它。在这种情况下,您可以只使用它的&lt;p:poll&gt; 组件来完成这项工作。另请参阅the PrimeFaces &lt;p:poll&gt; 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}" />  
    

    【讨论】:

    • 谢谢你,我在 stackoverflow 中阅读了你所有的答案,我必须承认我指望你... :) 谢谢!
    【解决方案2】:

    使用

    <a4j:poll action="#{bean.mymethod()}" interval="10000"/>
    

    【讨论】:

    • 你怎么知道 OP 正在使用 RichFaces?我没有在当前问题的任何地方阅读,也没有在所有以前的问题中阅读。只有暗示 OP 正在使用 PrimeFaces。
    猜你喜欢
    • 2012-07-19
    • 1970-01-01
    • 2013-12-06
    • 1970-01-01
    • 1970-01-01
    • 2016-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多