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

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

轉(zhuǎn)載請注明來源/作者

?

Ajax4jsf 使用a4j:poll實現(xiàn)定時刷新

?

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

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內(nèi)部,否則不起作用-->

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

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

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

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

??? <script language="JavaScript">

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

??? //<![CDATA[

??? function observeNewShortMessage(){

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

??? }

??? //]]>

??? </script>

</h:form>

<!-- 短消息提示代碼結(jié)束-->

?

頁面頂部短消息提示內(nèi)容:

<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中做一些復(fù)雜邏輯,可考慮

① 把組件放在div

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

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

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

function observeNewShortMessage (){

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

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

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

}

?

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