今天在struts使用ajax上面花了一下午的时间,在网上查的方法很多,但有一些细节没注意到,所以一直没能成功。
action处理:
struts.xml配置:
首先应该注意的是:使用的struts2的相关jar包版本一定要相同(很多时候我们解决一个问题花了很长时间,一天甚至几天,到最后发现不是代码的呃问题,而是jar包版本的问题,这时候就有一种想砸电脑的冲动了)。
使用ajax的页面:index.jsp:
<script type="text/javascript" src="js/jquery-1.7.2.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("#uname").focus(function(){
if($(this).val()=="请输入用户名")
{
$(this).val("");
}
}).blur(function(){
$.ajax({
type:"get",
url:"userAction!regUsers?uname="+$(this).val(),
dataType:"json",
success:ok,
error:err
});
});
});
function ok(d)
{
alert(d.rows[0].ishas);
if(d.rows[0].ishas=="true")
{
$("#sp").html("用户名已存在!");
}
else
{
$("#sp").html("用户名可以使用!");
}
}
function err()
{
alert("检测不到用户名,请联系管理员!");
}
</script>
<center>
<h3>用户注册</h3>
<form method="get" action="userAction!regUsers">
用户姓名:<input type="text" name="tblUser.uname" id="uname" value="请输入用户名">
<span id="sp" style="color: red;"></span><br>
用户密码:<input type="password" name="tblUser.upass" id="upass"><br>
<input type="submit" value="提交">
<input type="reset" value="清空">
</form>
</center>
action处理:
/*
* 时间:2016年10月18日22:38:26
* 程序功能:用户操作的action,继承了action的父类BaseAction
* */
package com.sc.action;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import org.apache.struts2.ServletActionContext;
import org.springframework.stereotype.Controller;
import com.sc.dao.UserDao;
import com.sc.entity.TblUser;
@Controller
public class UserAction extends BaseAction {
@Resource(name="userDao")
UserDao userDao;
TblUser tblUser;
public Map responseJson;
public String regUsers()
{
System.out.println(tblUser.getUname());
String uname=request.getParameter("uname");
Map<String, Object> map=new HashMap<String, Object>();
List<Map<String, Object>> list=new ArrayList<Map<String,Object>>();
Map<String, Object> m=new HashMap<String, Object>();
if(uname!=null&&uname.equals("admin"))
{
m.put("ishas", "true");
}
else
{
m.put("ishas", "false");
}
list.add(m);
map.put("rows", list);
this.setResponseJson(map);
return SUCCESS;
}
public Map getResponseJson() {
return responseJson;
}
public void setResponseJson(Map responseJson) {
this.responseJson = responseJson;
}
public TblUser getTblUser() {
return tblUser;
}
public void setTblUser(TblUser tblUser) {
this.tblUser = tblUser;
}
}
struts.xml配置:
<constant name="struts.devMode" value="true"></constant>
<package name="struts" extends="struts-default,json-default">
<action name="userAction" class="com.sc.action.UserAction">
<result type="json">
<param name="root">responseJson</param>
</result>
</action>
</package>