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="手动刷新" onclick="controller.refresh()">
<input type="button" value="停止计时器" onclick="controller.stop()">
<input type="button" value="启动计时器" onclick="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>

你可能感兴趣的:(JavaScript,html,struts,dojo)