NutzCN Logo
问答 按照入门指导的步骤一步步配置,主动抛异常时页面不会自动跳转到500.jsp页面
发布于 2488天前 作者 hmwhmw 1635 次浏览 复制 上一个帖子 下一个帖子
标签:

1.这是web.xml里的配置

<error-page>
        <error-code>500</error-code>
        <location>/WEB-INF/jsp/500.jsp</location>
</error-page>

2.这是MainModule上面的配置

@Fail("http:500")

3.这是子模块里的代码,这里自动抛异常,测试500.jsp页面的跳转

@At("/addMember")
	public Object addMember() throws Exception{				
		throw new Exception("内部异常");
    }	
}

4.这是html页面里ajax请求的代码

//初始化数据
		function initial(){			
					$.ajax({
						url : "/nutzbook/member/addMember",
						success : function(data) {//这里返回的data是一个Responze对象				
							showMsg("操作结果", data.message);
							$('#dg').datagrid('loadData', data.data);							
						}										
					});		
		    }   

综上,当通过ajax请求/nutzbook/member/addMember的时候,存在异常,但是为什么不会自动跳转到写好的500.jsp页面呢?
问题出在哪里呢?谢谢指点,感激不尽。

9 回复

ajax是不会执行页面跳转的

请问怎么才能让页面跳转呢

ajax有fail/error等回调

你好wendal,以下是我做的尝试,但有个问题,响应的文本jqXHR.responseText其实就是500.jsp页面内容展开的字符串,如果我通过特殊字符截取文本中需要的部分,比如错误信息、请求的路径、异常堆栈等,再通过error回调发送请求,最后在500.jsp页面获取信息,那么不可避免要改变500.jsp页面,这样的话响应的文本jqXHR.responseText相应也会改变了,这该怎么解决呢?有更好的方法吗?我觉得这样比较麻烦。

$(function(){
		$.ajaxSetup( {
			url: "/nutzbook/detailform.html" , // 默认URL					
		    error: function(jqXHR){ // 出错时默认的处理函数		        
	    	    if (jqXHR.status==500) {
	    	    	console.info(jqXHR.responseText);
	    	    	document.location.toString(); 
	    	    	//window.location.href="/nutzbook/jsp/500.jsp?test=" + jqXHR.status;
				}
	    	    if (jqXHR.status==404){
	    	    	alert( jqXHR.status );  
	    	    	window.location.href="/nutzbook/jsp/404.jsp";
	    	    }    	    
		    }
		} );
	});  

等待回复哦,已打赏^-^

首先你在你的入口函数里如果发生了异常不要返回 500.jsp, 用 ajax 包裹错误

@Fail("ajax")

然后你在前端接受到这个错误以后对他进行分析,直接把返回的字符串转成 json对象就好

发现如果是错误的返回你就在浏览器上修改当前页面的链接, 或者打开一个新窗口这些都是在js端实现的

非常感谢,我试试看

你好wendal,我试了试,只要一加@Fail("ajax"),页面就全部报错了,这是怎么回事呢

@Fail("json")

添加回复
请先登陆
回到顶部