`

Struts2常用的Ajax标签

阅读更多

11.6  常用的Ajax标签
struts2为了简化Ajax过程,提供了一些常用的Ajax标签。可以满足一般的Ajax需求,对于一些更为复杂的Ajax通信过程,我们可以使用后加的JSON插件来实现。

11.6.1  div标签
div标签在页面上生成一个Div元素,但这个Div元素的内容不是静态内容,而是从服务器获取的内容。为了让该div标签能取得服务器的数据,必须为该div标签指定一个 (1) href   属性,这个属性必须是一个Action,该Action负责生成该Div元素的内容。
---------------------------------------------------------------------------------------------------------------------------------------------
提示:因为div标签是一个Ajax标签,因此应为该标签增加theme=“ajax”属性。
---------------------------------------------------------------------------------------------------------------------------------------------
还可以指定该div标签生成的Div元素以固定的频率来更新自身的内容,为了指定更新频率和更新延迟,可以指定如下两个属性:
(2) updateFreq :指定更新Div内容的时间间隔,单位是ms。如果不指定该属性,则只在页面加载时更新该Div的内容。
(3) delay :指定更新Div内容的时间延迟,单位是ms。如果不指定,且指定了updateFreq属性,则页面加载后立即开始计时,准备刷新该Div的内容。如果没有指定updateFreq属性,则该属性没有任何意义。
如果服务器的响应包含了JavaScript代码,且希望在本页面内执行服务器响应的JavaScript代码,则可以为该div标签指定(4) executeScripts =“true”。
看下面的页面代码:
<%@ page contentType="text/html;charset=GBK"  language="java" %>
<%@ taglib prefix="s"  uri="/struts-tags" %>
<html>
<head>
     <title>远程Div</title>
     <s:head  theme="ajax" />
</head>
<body>
<s:url   id="rd"  value="/random.action" />
仅一次获取服务器内容的Div
<s:div    id="div1"
           theme="ajax"
           cssStyle="border:lpx solid black; background-color:#dddddd;
                           width:3000px;height:40px;padding-top:8px;padding-left:20px"
           href="%{rd} " >
初始化文本
</s:div>
动态更新内容的Div,每隔1s刷新一次(通过指定updateFreq=“1000”)<br>
<s:div     id="dive2"
           theme="ajax"
           cssStyle="border:lpx solid black; background-color:#dddddd;
                           width:3000px;height:40px;padding-top:8px;padding-left:20px"
           href="%{rd} "
           updateFreq =“1000”
           indicator =“indicator”>
        初始化文本
</s:div>
<img id ="indicator"   src="${pageContext.request.contextPath}/images/indicator.gif">
          alt="Loading...  style="display:none"  /> <br>
3s之后才开始更新(通过指定delay="3000")<br>
指定与服务器互交出错的提示(通过指定errorText属性)<br>
指定与服务器互交过程中的提示(通过指定loadText属性)<br>
<s:div   id="div3"
            theme="ajax"
            cssStyle="border:lpx solid black; background-color:#dddddd;
                           width:3000px;height:40px;padding-top:8px;padding-left:20px"
            href="%{rd} "
            updateFreq="1000"
            delay ="3000"
            errorText ="加载服务器数据出错"
            loadingText="正在加载服务器内容">
          初始化文本
</s:div>
指定显示系统出错提示(通过指定showErrorTransportText="true" )<br>
<s:div   id="div4"
           theme="ajax"
           cssStyle="border:lpx solid black; background-color:#dddddd;
                           width:3000px;height:40px;padding-top:8px;padding-left:20px"
          href="/AjaxNoUrl.jsp"
          updateFreq="1000"
          showErrorTransportText="true"
          loadingText="正在加载服务器内容">
        初始化文本
</s:div>
执行服务器脚本(通过指定executeScripts="true")
<s:url  id="test"  value="/Test3.action" />
<s:div    id="div5"
           theme="ajax"
           cssStyle="border:lpx solid black; background-color:#dddddd;
                           width:3000px;height:40px;padding-top:8px;padding-left:20px"
           href=”%{test}“
           updateFreq=”2000“
           executeScripts=”true“
           loadingText=”正在加载服务器内容“>
       初始化文本
</s:div>
</body>
</html>
上面的div标签还使用了如下两个Ajax标签的通用属性
(1)showErrorTransportText :设置是否显示服务器的错误信息。
(2)loadingText :设置当服务器响应还未加载时的显示信息。


上面div标签请求的第一个 Aciton是rando.action,该Action对应的的JSP页面代码如下:
//输出一个服务器端的随机数字
服务器返回的随机数字是:<s:property  value="rdmstr " />
第二个 Action是Test3.action,这个Action对应的JSP页面代码如下:
<!--执行JavaScript代码-->
<script  language="JavaScript"  type="text/javascript">
      alert('Spring2.0宝典');
</script>
//输入页面内容
轻量级J2EE企业应用实战
<script  language="JavaScript"  type="text/javascript">
     alert('基于J2EE的Ajax宝典');
</script>
第二个Action对应的JSP页面中有JavaScript代码,为了在目标页面中执行js代码,需要在div标签中指定executeScripts=“true”。

在本实例中 ,指定div标签中href属性时,用的是以下方法:
<!--通过表达式语法来指定href属性-->
href=" %{test} "
对于test变量的值,必须使用url标签来生成该变量的值。如下:
<!--使用url标签来生成-->
<s:url  id="test"  value="/Test3.action" />
---------------------------------------------------------------------------------------------------------------------------------------------
注意 :Struts2要求所有的Ajax标签指定href属性时,都应该指向一个由url标签生成的变量,而不是直接给出Action名
---------------------------------------------------------------------------------------------------------------------------------------------
       
在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的一个例子,示范了上面三个属性的用法。

分享到:
评论

相关推荐

    Struts2的ajax支持

    下面是一些常用的Ajax标签: 1. **div**:此标签用于在页面上生成一个动态更新的div元素,其内容可以从服务器动态获取。通过设置`href`属性,可以指定div元素的数据来源。此外,还可以通过`updateFreq`和`delay`...

    struts2+ajax+jquery

    在这个"struts2+ajax+jquery"的主题中,我们将深入探讨如何利用Struts2、jQuery和Ajax技术实现Web页面的异步交互。 首先,Struts2作为MVC框架,它的核心是Action,它负责处理用户的请求,并通过配置的Result返回...

    struts2对AJAX的支持

    3. **使用Struts2 AJAX标签**: 插件提供了多种预定义的JSP标签,如`sj:a`, `sj:submit`, `sj:autocompleter`等,它们可以直接在视图层触发AJAX请求。例如,使用`sj:a`标签实现一个按钮点击后的AJAX请求: ```jsp ...

    struts2实现ajax

    - **视图**:在JSP页面上,使用Struts2-JQuery标签库的`sj:a`标签来创建Ajax链接或按钮,指定动作的URL和要调用的客户端回调函数。 - **服务端响应**:在Action中处理业务逻辑,返回JSON或XML数据。 - **客户端...

    struts2_ajax.rar_struts2 ajax

    1. **使用Struts2内置的AJAX插件**:Struts2提供了一个名为`struts2-jquery-plugin`或`struts2-convention-plugin`的插件,它包含了一系列预定义的JQuery动作和标签,可以直接在视图层使用。例如,`sj:a`标签可以...

    Struts2常用标签总结

    Ajax标签\n\nStruts2还提供了Ajax支持,通过`s:a`、`s:submit`等标签可以实现异步请求,无需直接使用JavaScript库如jQuery,简化了前端的Ajax开发。\n\n4. 使用Struts2标签的准备\n\n在使用Struts2标签之前,需要...

    struts2+ajax

    Struts2的AJAX标签设计得与普通的Struts2标签相似,使得开发者能够快速上手。这些标签通常会与Dojo或Direct Web Remoting (DWR)这样的现有AJAX框架集成,以利用它们的功能和社区支持。 Dojo是一个强大的JavaScript...

    第3章_Struts2标签库详解与AJAX技术应用.rar

    本章主要聚焦于Struts2的标签库及其AJAX技术的应用,这两个关键点对于提升用户体验和增强应用程序交互性至关重要。 Struts2标签库是Struts2框架的核心组成部分之一,它提供了一系列预定义的JSP标签,用于简化视图层...

    struts2+ajax文件进度条的实现

    在Struts2中,使用`&lt;s:file&gt;`标签来创建文件输入字段,用户选择文件后,通过表单提交到服务器。然而,传统的方式无法提供上传进度信息,因为HTTP协议本身不支持这一特性。为了解决这个问题,我们可以利用Ajax异步...

    struts2常用标签总结

    - **Ajax标签**:提供异步更新页面的能力,如`s:a`标签的`ajax`属性,使得无需刷新整个页面即可更新特定部分。 3. **使用Struts2标签的准备** - 引入库:在JSP页面中使用`&lt;%@ taglib&gt;`指令引入Struts2标签库,...

    Struts2+ajax+json返回list.docx

    本实例展示了如何在Struts2框架下,通过Ajax发送请求获取JSON数据,并将数据返回到JSP页面,以填充下拉列表(`&lt;s:select/&gt;`标签)。 1. **Struts2配置**: 在`struts.xml`配置文件中,我们需要定义一个Action,...

    struts2_Ajax

    - **熟悉Struts2的Ajax插件**:了解Dojo、jQuery等插件的使用方法,以及它们提供的Ajax标签和函数。 - **错误处理和调试**:学习如何处理Ajax请求可能出现的错误,以及如何进行调试。 通过实践这些知识点,你可以...

    struts2中使用ajax

    Struts2框架通过Struts2-jQuery插件或Struts2-Conventions插件来支持Ajax功能。这两个插件提供了方便的标签库,使得在JSP页面中使用Ajax变得更加简单。 3. **Struts2-jQuery插件**: - **安装**:首先,你需要将...

    struts2和ajax交互需要的6个jar包

    commons-beanutils-1.7.0.jar,commons-collections-3.1.jar,commons-lang-2.5.jar,commons-logging.jar,ezmorph-1.0.3.jar,json-lib-2.1-jdk15.jar,这六个jar包

    json2+jsonplugin struts2整合ajax时,使用json时需要的jar包

    你可以使用Struts2的内置过滤器和标签库来帮助防御。 通过上述步骤,你就可以在Struts2项目中顺利地整合Ajax和JSON,实现前后端的高效数据交互。这个过程中,`json2.js`和`jsonplugin`起到了至关重要的作用,它们让...

    struts2常用标签详解

    本文将深入探讨Struts2框架中的常用标签,这些标签在创建动态Web页面时发挥着至关重要的作用。 1. **s:form标签**: Struts2的`s:form`标签用于创建表单,它可以替代HTML的`&lt;form&gt;`标签。它提供了额外的功能,如...

    struts-ajax.rar_ajax struts _struts ajax_struts ajax war

    标签"ajax_struts_struts_ajax_struts_ajax_war"进一步强调了这是关于Struts和Ajax的整合,并且可能包含了一个war文件,war文件是Java Web应用的标准打包格式,可以直接部署到Servlet容器如Tomcat中运行。...

Global site tag (gtag.js) - Google Analytics