科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道看看如何在Struts应用中施展AJAX魔法 3

看看如何在Struts应用中施展AJAX魔法 3

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

replaceExistingWithNewHtml() 是为processStateChange()使用的“私有”方法。 function replaceExistingWithNewHtml

作者:中国IT实验室 来源:中国IT实验室 2007年9月5日

关键字: AJAX Struts

  • 评论
  • 分享微博
  • 分享邮件

}

}

}

replaceExistingWithNewHtml() 是为processStateChange()使用的“私有”方法。

function replaceExistingWithNewHtml

(newTextElements){

//循环newTextElements

for(var i=newTextElements.length-1;i>=0;--i){

//判断是否以 if(newTextElements[i].

indexOf("-1){

//获得span的名字- 设置在第一和第二个引号之间

//确认span元素是以下的格式

//NewContent

startNamePos=newTextElements[i].

indexOf('"')+1;

endNamePos=newTextElements[i].

indexOf('"',startNamePos);

name=newTextElements[i].

substring(startNamePos,endNamePos);

//获得内容-在第一个>标记后的所有内容

startContentPos=newTextElements[i].

indexOf('>')+1;

content=newTextElements[i].

substring(startContentPos);

//现在更新现有的Document中的元素,

// 确保文档存在该元素

if(document.getElementById(name)){

document.getElementById(name).

innerHTML = content;

}

}

}

splitTextIntoSpan() 是为processStateChange() 使用的“私有”方法。

function splitTextIntoSpan(textToSplit){

//分割文档

returnElements=textToSplit.

split("")

//处理每个元素

for(var i=returnElements.length-1;i>=0;--i){

//删除掉第一个span后面的元素

spanPos = returnElements[i].

indexOf("

//如果找到匹配的,获得span前的内容

if(spanPos>0){

subString=returnElements[i].

substring(spanPos);

returnElements[i]=subString;

}

}

return returnElements;

}

新的控制流

添加以下的JavaScript代码到我们的应用中,以下的步骤将在服务器和浏览器中执行。

1. 如同一个普通Struts应用装载页面。

2. 用户改变文本框的值,触发一个onChange() 事件,调用retrieveURL() 方法。

3. 该JavaScript方法通过发送Struts明白的表单变量(后台)请求到服务器的Struts Action。

4. 该JavaScript方法同样设定了第二个JavaScript方法的名字,此方法将到服务器响应完毕后调用。本例子中,设定为processStateChange() 方法。

5. 如我们所预期的,服务器响应完毕,调用processStateChange() 方法。

6. JavaScript在(新的)服务器响应中循环取出所有元素。将页面上存在与获得元素名字相同的 中的元素替换掉。

在你的应用中设计AJAX

以上描述的JavaScript方法能在大多数的应用中使用,包括比我们的例子复杂得多的。但是,在使用之前,你需要注意以下几点:

· 避免复制代码,最好在初始化请求(如,显示完整的页面)和AJAX(更新部分页面)请求中使用相同的Struts Action和JSP。

·在公共的Action(控制器)中,决定JSP页面(所有的JSP页面或者其中的一部分)中的一个区域需要传送到浏览器。通过在web服务器的session或者ActionForm中设定标记来让JSP页面知道哪些部分需要提交。

· 在JSP中,使用Struts 或者JSTL标签来决定提交的HTML区域。

使用AJAX的本例子,可以在以下下载: struts-Ajax.zip

结语

AJAX技术允许我们在创建和使用web应用的时候完全的改变。本文介绍了一个简单的技术,在现有的Struts应用中增加Struts的处理。它允许我们利用我们已有的东西,不仅仅是代码,还包括了开发的技能。作为一个好的产品,它同样允许我们写出更清晰,更具移植性的Java Struts应用。

资源

·作者的blog:http://blog.matrix.org.cn/page/pawenwen

· Sample code for this article

· Definition of AJAX

· "Using AJAX to Catch JavaScript Errors" (XML.com文章)

· "Developing AJAX Applications the Easy Way" (java.net文章)

· "An Introduction to AJAX" (dev2dev文章)

·"AJAX on Rails" (ONLamp.com文章)

· DWR: Direct Web Remoting Project

· Struts Framework Project

·JSF: Java Server Faces Project

Paul Browne 作为企业级Java顾问为FirstPartners.net 工作已有7年了。

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章