本人正在做一个网站,暂时做到能够正常登录和注销,现在希望在已登录页面加一个文件上传功能。
目前该功能代码已经完成,在一般的jsp和html页面内都能正常使用,在该网站项目内虽然也能正常使用,但是在执行success后会跳出java.lang.nullpointerexception,无法回到原页面上。现已经确认后台代码没有问题,问题发生在action的return后。代码如下,这一方面的一些原理我的确还不是很懂,还请各位指点一二,谢谢。
1.jsp、html以及网站内jsp都是使用的这一段代码,前两者可用项目内的不可用
<form id="myForm">
选择Excel:<input type="file" name="input">
<button onclick="btn()">上传</button>
</form>
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
<script type="text/javascript">
function btn(){
var formData = new FormData($("#myForm")[0]);
$.ajax({
type : "post",
url : "/Web_project/Fill/upload",
data : formData,
async: false,
cache: false,
contentType: false,
processData: false,
error: function (result) {
alert('异常');
},
success: function (result) {
if(result.error == ""){
alert("已上传");
}else{
alert("失败")
}
}
});
}
</script>
2.upload.action对应的result
@Result(name="uploaded",type="json",params={"root","mm"})
3.jsp页面下的url和项目action跳转后的url,这是我发现的两者唯一区别,不知道是不是能证明什么问题
虽然不是很清楚原因,但是我个人认为是ajax提交了页面后,页面刷新,触发了登录用的action,再次检验用户登录,但是却没有取到数据,所以空指针。(个人猜测,没有详细了解)
我给action这段代码加了一个判断session是否为空,不为空则直接返回的代码段,这么一来在ajax提交页面后,action内验证登录的部分代码不会再次运行,页面也确实没有出现错误而是正常停留在原页面。
虽然没有能直接解决我的问题,但是很感谢各位的建议和帮助。