struts2请求无法跳转到后台执行acton方法
问题现象
前台发送请求,经过一系列struts拦截器无法跳到后台执行action方法
原因(排除请求错误,配置错误等情况)
在页面请求到后台Action之间会先经过一系列Struts默认的拦截器,拦截器处理失败,导致问题出现。
最常出现的问题是validate没验证通过,通常是由于页面上定义的域与Action的属性类型不匹配导致
解决办法
在Action中重写以下三个方法
public void addActionError(String anErrorMessage){
System.out.println(anErrorMessage);
}
public void addActionMessage(String aMessage){
System.out.println(aMessage);
}
public void addFieldError(String fieldName, String errorMessage){
System.out.println(fieldName+"---"+errorMessage); // 如果属性有问题,会打出:OperateDate---操作类型不正确OperateDate
}
方法2
1.在struts配置文件中找到对应的Action,在增加<result name = "input" >....</result>
2.IE开发人员工具(F12)调试,在请求.do对应的Success方法中第一行打断点,后台返回到此处断点。
前台发送请求,经过一系列struts拦截器无法跳到后台执行action方法
原因(排除请求错误,配置错误等情况)
在页面请求到后台Action之间会先经过一系列Struts默认的拦截器,拦截器处理失败,导致问题出现。
最常出现的问题是validate没验证通过,通常是由于页面上定义的域与Action的属性类型不匹配导致
解决办法
在Action中重写以下三个方法
public void addActionError(String anErrorMessage){
System.out.println(anErrorMessage);
}
public void addActionMessage(String aMessage){
System.out.println(aMessage);
}
public void addFieldError(String fieldName, String errorMessage){
System.out.println(fieldName+"---"+errorMessage); // 如果属性有问题,会打出:OperateDate---操作类型不正确OperateDate
}
方法2
1.在struts配置文件中找到对应的Action,在增加<result name = "input" >....</result>
2.IE开发人员工具(F12)调试,在请求.do对应的Success方法中第一行打断点,后台返回到此处断点。
3.在控制台输入:res.responseText,在显示的内容中能找到“类型不正确”的字段
如果确实是页面定义域所传值与后台action属性类型不匹配的话,以上两种方法执行后都会在后台打印出页面上与Action的属性类型不匹配的域;如果不是,那回头找找排除的那两种情况吧(请求URL问题,struts配置文件配置问题)