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...}'