Structs has detected an unhandled exception
今天算倒霉了,用maven写的一个项目,竟然出现了以下低级的错误,在用ajax修改密码时,回调的数据竟然是以下的东东。。。。
**************************************************************************************
$.post("${pageContext.request.contextPath}/user_editPassword",{password:NewPass},function(data){
alert("ajax返回值:"+data);
if(data.result == "success"){
$.messager.alert("成功提示",data.msg,"info");
}else{
$.messager.alert("失败提示",data.msg,"error");
}
$("#editPwdWindow").window("close");
});
**********************************************
这里引用了struts2-json-plugin包
json-default继承了struts-default
<!-- 修改密码 -->
<package name="needlogin" extends="json-default">
<action name="user_*" class="userAction" method="{1}">
<!-- 修改密码 -->
<result name="editPasswordSuccess" type="json">
<param name="root">map</param>
</result>
</action>
</package>
******************************************************************************
private String editPassword() {
User loginUser = (User) ServletActionContext.getRequest().getSession().getAttribute("user");
user.setId(loginUser.getId());
// 通过用户id修改密码,如果修改不成功会抛异常
Map<String,Object> map=new HashMap<String,Object>();
try {
//修改成功
System.out.println(user.getPassword());
userService.editPassword(user);
map.put("result", "success");
map.put("msg", "修改成功");
ActionContext.getContext().put("map", map);
} catch (Exception e) {
//修改失败
map.put("result", "false");
map.put("msg", "修改失败,请查找原因"+ e.getMessage());
ActionContext.getContext().put("map", map);
}
return "editPasswordSuccess";
}
*******************************************
这个问题找了很久,ajax一直访问不到UserAction这个类,检查了strut.xml,applicationContext.xml的配置,没问题
在检查ajax的访问路径,也没有问题,用firebug清楚能看到访问的路径,就是最后到action类的方法时就访问不了,
然后,就检查这个方法,很扎心
原来是这个方法我使用了private,恍然大悟
这就是访问不到的原因,把private改为public,然后就成功了!!!!
ajax第二种常见错误
$.ajax({
type: 'POST',
url: url,
data: data,
success: success,
dataType: dataType
}); 常常容易忽略的错误是:data发送的数据时json字符串,而不是json数据 ==>> data:'{key1:value1,key2,value2...}'