版權所有:(xiaodaoxiaodao)藍小刀 ?? xiaodaoxiaodao@gmail.com

http://m.tkk7.com/xiaodaoxiaodao/articles/103436.html ? ? ? ? ?

轉載請注明來源/作者

?

Ajax4jsf 使用a4j:poll實現定時刷新

?

下面是使用a4j:poll簡單實現一個站內短消息自動提示動能(類似很多asp論壇的頁面頂部短消息提示)的關鍵代碼。

a4j:poll的使用文檔可參考https://ajax4jsf.dev.java.net/nonav/documentation/ajax-documentation/

?

a4j:poll 組件的聲明:

<html xmlns="http://www.w3.org/1999/xhtml"

??? ? xmlns:c="http://java.sun.com/jstl/core"

????? xmlns:a4j="https://ajax4jsf.dev.java.net/ajax">

?

<!-- 短消息提示代碼開始-->

<c:set var="observerEnabled" value="true"/>

?

<h:form>

<!--a4j:poll 必須嵌入到h:form內部,否則不起作用-->

<!--enabled 屬性指定是否允許自動檢測(即a4j:poll是否有效),reRender指定重新渲染哪些組件,interval經過多少ms執行一次actiononcomplete指定action完成后客戶端要執行的js方法-->

<a4j:poll id="observer" enabled="#{observerEnabled}" action="#{basePage.observeNewShortMessage}"

????????? reRender="observer,promptMessageTop" interval="10000"

????????? oncomplete="observeNewShortMessage();"/>

??? <script language="JavaScript">

??? // 使用"http://<![CDATA["的寫法可在script內部使用"<"字符和"&"符號

??? //<![CDATA[

??? function observeNewShortMessage(){

??????? // todo to do something

??? }

??? //]]>

??? </script>

</h:form>

<!-- 短消息提示代碼結束-->

?

頁面頂部短消息提示內容:

<div align="center" id="promptMessageRegionTop">

<t:commandLink action="message.queryMgs" immediate="true">

<!--basePage.observeNewShortMessage 方法返回一個提示信息promptMessage-->

<h:outputText id="promptMessageTop" value="#{basePage.promptMessage}" />

</t:commandLink>

</div>

?

?

注意:a4j:poll只能重新渲染組件,如果需要在oncomplete后的js中做一些復雜邏輯,可考慮

① 把組件放在div

<div id="promptRegion"><h:outputText id="prompt" value="#{basePage.prompt}" /></div>

② 在reRender中使用reRender="observer,prompt,promptMessageTop",重新渲染位于div中的h:outputText組件

③ 使用oncomplete=" observeNewShortMessage ();" 指定action完成后客戶端要執行的js方法

function observeNewShortMessage (){

??? // 下面取得divh:outputText的值,然后可以進行一些邏輯操作

??? var prompt = document.getElementById("promptRegion").innerText;

??????? // todo to do something

}

?

版權所有:(xiaodaoxiaodao)藍小刀 ?? xiaodaoxiaodao@gmail.com