这个问题在我之前转载的文章里出现过,之所以会出现这个问题是因为struts2在进行表单拦截的时候会对数据校验,struts2默认会进行表单数据校验。在struts2发生错误的时候struts2会去找input的返回选项:
<result name="input">/page/basic_data/inst_manage/homes_bottom.jsp</result>在struts.xml文件加上input的result之后,并不会取消如上问题,但是依旧会进入input的重定向结果。
那么如何取消校验呢,在要进入的Action中重写validata方法:
@Override
public void validate() {
super.validate();
clearFieldErrors();
}这样只是说取消了对数据的校验,但是我们提交的数据依旧还是有问题的。
我这次又遇到了,我这次提交的数据比较简单,只有两个参数。所以想看看是不是数据格式有问题才导致的这个问题:
function homesUp(id) {
var basePath = getBasePath();
var url = basePath + "Up.action";
var pageNo = document.getElementById("pageNo");
post(url, {'pageNo':pageNo, 'homeId':id});
}出现了上述问题,我如果改成直接进入url,是没有任何问题的:
function homesUp(id) {
var basePath = getBasePath();
var url = basePath + "Up.action";
var pageNo = document.getElementById("pageNo");
post(url);
}结果是可以正常访问url,这更加验证了我的猜想。
于是我将pageNo打印出现,返回的结果是Object...。
function homesUp(id) {
var basePath = getBasePath();
var url = basePath + "Up.action";
var pageNo = document.getElementById("pageNo").value;
post(url, {'pageNo':pageNo, 'homeId':id});
}于是问题就这样解决了...
本文探讨了Struts2表单数据校验问题的解决方法,通过在Action中重写validate方法来取消数据校验,同时分析了通过AJAX请求直接访问URL而非表单提交时的问题及解决方案。
3万+

被折叠的 条评论
为什么被折叠?



