s:div的使用(局部刷新)

在div标签 中指定了一个handler属性,该属性指向一个JavaScript函数。这意味着每次是该Div内容刷新时,该JavaScript函数都会被调用。一旦div标签指定了handler属性,则该div标签的herf属性所指定的属性值将完全失去作用。
除此之外, div标签还可以将一个表单里包含的表单域转换成对应的请求参数,并且把这些请求参数发送给远程服务器。为了让一个div标签发送表单里包含的表单域,属性如下:
(5) formId: 该属性的属性值为一个表单元素的ID
除此之外,为了通过在JavaScript代码中手动控制div标签启动自动更新,关闭自动更新,可以指定以下两个属性:
(6) startTimerListenTopics: 该属性设置一个监听的事件主题,当有Struts2组件向该主题发布事件时,该div标签的计时器被启动。
(7) stopTimerListenTopics: 该属性设置一个监听的事件主题,当有Struts2组件向该主题发布事件时,该div标签的计时器被关闭。
P391的一个例子,示范了上面三个属性的用法。

<%@ page contentType="text/html;charset=GBK" language="java" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<title>远程Div</title>
<s:head theme="ajax"/>
</head>
<script>
var controller = {
refresh : function() {alert("手动刷新");},
start : function() {alert("启动自动刷新");},
stop : function() {alert("停止自动刷新");}
};

//将controller的refresh方法注册成/refresh主题的发布者
dojo.event.topic.registerPublisher("/refresh", controller, "refresh");
//将controller的start方法注册成/startTimer主题的发布者
dojo.event.topic.registerPublisher("/startTimer", controller, "start");
//将controller的stop方法注册成/stopTimer主题的发布者
dojo.event.topic.registerPublisher("/stopTimer", controller, "stop");
//为after主题指定一个事件处理函数
dojo.event.topic.subscribe("/after", function(data, type, e){
alert('与服务器交互过程中. 现在的过程类型是:' + type);
//data : text returned
//type : "before", "load" or "error"
//e : request object
});
</script>
<body>
<form id="form">
<s:textfield name="data" label="输入框"/>
</form>

<input type="button" value="手动刷新" οnclick="controller.refresh()">
<input type="button" value="停止计时器" οnclick="controller.stop()">
<input type="button" value="启动计时器" οnclick="controller.start()">
<br>
<s:url id="rd" value="/random.action"/>
使用pub-sub机制(通过指定listenTopics等属性)<br>
发送表单请求参数(通过指定formId="form")<br>
<s:div id="div1"
theme="ajax"
cssStyle="border: 1px solid black;background-color:#dddddd;
width:300px;height:40px;padding-top:8px;padding-left:20px"
href="%{rd}"
loadingText="正在加载服务器内容..."
listenTopics="/refresh" //加载服务器响应
startTimerListenTopics="/startTimer" //当有startTimer事件发布时启动计数器
stopTimerListenTopics="/stopTimer" //当有stopTimer事件发布是停止计数器
updateFreq="9000"
autoStart="true" //加载此页面时自动启动计数器
formId="form" //指定表单的ID
notifyTopics="/after"> //指定主题名为after,其它的事件都会发布到此主题下
初始化文本
</s:div>
</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值