版權(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í)行一次action,oncomplete指定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
(){
??? //
下面取得div中h:outputText的值,然后可以進行一些邏輯操作
??? var prompt = document.getElementById("promptRegion").innerText;
??????? // todo to do something
}
?
版權(quán)所有:(xiaodaoxiaodao)藍小刀
??
xiaodaoxiaodao@gmail.com