Ajax4jsf 使用a4j:poll实现定时刷新

本文介绍如何使用a4j:poll组件实现实时短消息提示功能,详细展示了组件配置方法,包括设置自动检测、重渲染及定时刷新等属性,并通过示例代码说明了客户端JavaScript与服务器端交互的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

下面是使用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执行一次action,oncomplete指定action完成后客户端要执行的js方法-->

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

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

oncomplete="observeNewShortMessage();"/>

<script language="JavaScript">

// 使用"//<![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 (){

// 下面取得div中h:outputText的值,然后可以进行一些逻辑操作

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

// todo to do something

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值