关于struts2中ajax标签的一点学习笔记
其实ajax的东西不是很熟悉,而且对于javascript这样零碎的语言实在是很抗拒。于是过去一直都逃避它,迫于项目的压力,不得已惟有硬碰硬了。为了快速上手,之前做了几个小实验,代码实在太多了。幸好struts2提供了一些ajax的简易实现。
跟网上所有的教程一样,先从最简单的开始吧~
在头结点加上<s:head theme="ajax"/>
然后
<s:url id="requesturl" value="/get.action"></s:url>
<s:div id="information" theme="ajax"></s:div>
<s:a targets="information" theme="ajax" href="%{requesturl}" mce_href="%{requesturl}">获取信息</s:a>
服务器端的代码我就不写了,大同小异。返回的可以是任何东西,各种表单、表格、图什么的,具体要看你请求的是什么。返回的资源会直接显示在information的div中。这里有个小问题要注意,requesturl中的value值必须是/*.action的形式,而不能是struts.xml中的对应的action名称。
关于其他的属性就不实验了。
接下来加上一点javascript的操作,用文本按钮操作返回资源的显示和隐藏。
于是很自然的想到这样写:
<mce:script type="text/javascript"><!--
function hide(var i){
document.getElementById(i).style.display="none";
}
// --></mce:script>
然后把div的id值传进去,完成!但是失败。。这个函数完全执行不了。
这个问题困扰了我很久,我尝试了各种各样的方法,最后发现,javascript的函数传值机制跟平时写的C++和JAVA是有区别的。
在上面的代码中只要改成function hide(i){...}就可以执行了。
为什么这样呢?
原来的代码大概类似于java中的String newcopy = prototype.clone();
该函数新申请了一个地址并接受了与该参数等值的值,因此getElementById()去了另外一个地址寻找节点,而那里没有我们要操作的节点,于是调用该函数的时候没反应。囧,知识还得系统的学才行,半桶水太危险了。
另外关于onclick中的函数调用也有一个容易疏忽的地方,比如有个<div id="a"></div>,传值的时候应该是hide('a')而不是hide(a),也是个困扰了我很久的低级问题。。
相关文档:
//平常调用javascript方法
ClientScript.RegisterStartupScript(this.GetType(), "", "<script>alert'Weclome!!!');</script>");
背景不为白色的方法:
Page.ClientScript.RegisterStartupScript(Page.GetType(), "message", "<script language='javascript' defer>alert('添加失败,请联系技术员!') ......
当下盛行的Ajax
现在Ajax框架数不胜数,Ajax的功能也太庞大的以至于它连它的父辈Javascript都带动起来了,记得我最初接触web的时候Javascript还没到达有现在的高度,如今随着客户提醒越来越重要,很多软件开发并不仅仅停留在功能实现的要求上,而是更注重交互、分享和互动(这也是w ......
使用DWR开发Ajax应用:
1、导入DWR的Jar包:dwr.jar;
2、在/WEB-INF下添加dwr.xml配置文件;
3、在web.xml文件中配置dwr的服务器端组件(DwrServlet):
<!-- 添加DWR的Servlet -->
<servlet>
<servlet-name>dwr</servlet-name>
<servlet-class>org.direc ......
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>xmlhttprequest ajax demo</title>
<mce:script type ="text/javascript" language ="javascript" ><!--
var req; //定义变量,用来创建xmlhttprequest对象
function creatReq() // 创建xmlhtt ......
1,本例子实现一个Ajax更改数据的例子
如图:
1,新建xml文件;其内容如下:
<?xml version="1.0" encoding="utf-8"?>
<userinfo>
<user>
<id>I</id>
<name>wtq</name>
<password>123456</password>
<phone>0595-8553 ......