struts中使用ajax的方法之一

struts中使用ajax的方法有很多,在这里我介绍的是struts文档中的方法。

https://struts.apache.org/core-developers/ajax.html 这个是struts官方文档的地址。

1.首先在使用的action类里需要写一个InputStream 对象并实现他的get方法(getInputStream 方法我就不写了),其次在你网页调用的action类里的方法里写你需要返回的字符串,比如:

用户注册的用户名判断是否被占用:

public String validateLastName() throws UnsupportedEncodingException{
if(employeeService.listNameIsValid(lastName)){
inputStream =new ByteArrayInputStream("1".getBytes("UTF-8"));
}else {
inputStream =new ByteArrayInputStream("0".getBytes("UTF-8"));
}
return "ajax-success";

}

 

解释:

/*

flag=(employeeService.listNameIsValid(lastName)

即在数据库查询的结果,如果用户名存在返回false,否则返回true

在这里getBytes("UTF-8")方法

可能会发生一个异常UnsupportedEncodingException,所担心的是系统没有UTF-8这个编码

所以在这里我们将它throws即可

*/

if(flag){                    //表示用户名没有被占用

inputStream = new ByteArrayInputStream("1".getBytes("UTF-8"));

                            //在我的jsp界面里1表示用用户名没有被占用,当然你可以设置其他的

}else{

inputStream = new ByteArrayInputStream("0".getBytes("UTF-8"));

                            //0代表用户名被占用

}

2.需要在Struts 2配置Result,在这一步result的name属性需要与上一步的方法里返回的字符串一致;

<result type="stream" name="ajax-success">
        <param name="contentType">text/html</param>
        <param name="inputName">inputStream</param>

</result>

3.编写ajax

比如有一个需要验证的s:textfield标签

<s:from ........>

    .......

    <s:textfield name="lastName" label="LastName"></s:textfield>

    .......

</s:from>

接下在我贴出我的ajax动态修改网页的代码

<script type="text/javascript">
$(function() {
$(":input[name=lastName]").change(function() {

var val = $(this).val();                    //val表示name="lastName"的标签里输入的
val =$.trim(val);                            //去除自身两端的空格
var $this=$(this);                          //是$this表示name="lastName"的标签
if(val != ""){
$this.nextAll("font").remove();

var url= "emp-validateLastName"; 

                                /*表示你要执行的方法,我使用的是通配符的方法调用action:emp-*  

                                后面的validateLastName也就是第一步写的方法*/

var args= {"lastName":val,"time":new Date()};       //获取当前时间
$.post(url,args,function(data){                                //发送post请求

 

if(data == "1"){                                               

 

                                                                                    //“1”表示名字没有被占用,和第一步inputStream返回的值对应

$this.after("<font color='green'>LastName可用</font>");
}else if(data == "0"){                                       //“0”名字被占用,道理和“1”相同
$this.after("<font color='red'>LastName不可用</font>");
}else{                                                               //服务器错误
alert("服务器错误");
}
});
}else{
alert("listName 不能为空");
this.focus();
}
});
})
</script>

 

总结:这样简单的ajax就完成了。文档中使用的json等以Ajax为中心的插件,而我使用的最普通的吧- -

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值