Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JSP:即使我可以';你不能展示它吗?_Java_Jsp_Error Handling - Fatal编程技术网

Java JSP:即使我可以';你不能展示它吗?

Java JSP:即使我可以';你不能展示它吗?,java,jsp,error-handling,Java,Jsp,Error Handling,我在我的web.xml中定义了一个错误页面: <error-page> <exception-type>java.lang.Exception</exception-type> <location>/error.jsp</location> </error-page> 我认为发生此错误是因为我们无法在输出已经开始后将请求重定向到错误页面。我使用的解决方法是在特别大的JSP页面上增加缓冲区大小。但是我正在尝试

我在我的web.xml中定义了一个错误页面:

 <error-page>
   <exception-type>java.lang.Exception</exception-type>
   <location>/error.jsp</location>
 </error-page>
我认为发生此错误是因为我们无法在输出已经开始后将请求重定向到错误页面。我使用的解决方法是在特别大的JSP页面上增加缓冲区大小。但是我正在尝试编写一个通用的错误处理程序,我可以将其应用到现有的应用程序中,我不确定是否可以遍历数百个JSP页面,确保它们的缓冲区足够大

在这种情况下,即使我无法向客户端显示错误页面,是否仍有办法允许执行堆栈跟踪电子邮件代码?

您是否尝试过使用该指令

那么,您还需要在myerrorpage.jsp中使用


我想这可以解决你的问题。唯一的问题是,您需要以某种方式将其包含在每个JSP中。

如果您已经开始向客户端发送数据,则不会使用errorPage。 我所做的是使用JavaScript回调来检查不完整的页面,然后重定向到错误页面。在包含标题或其他内容的页面开头,将布尔javascript变量初始化为false,并注册onload处理程序以检查状态并重定向到错误页面

<script type="text/javascript">
        var pageLoadSuccessful = false;//set to true in footer.jsp
        dojo.addOnLoad(function(){
            if (!pageLoadSuccessful) window.location = "<c:url value="/error.do" />";
        });
</script>

var pageLoadSuccessful=false//在footer.jsp中设置为true
dojo.addOnLoad(函数(){
如果(!pageLoadSuccessful)window.location=“”;
});
然后在页脚jsp中,确保将此变量设置为true:

<script type="text/javascript">
    pageLoadSuccessful = true;//declared in header.jsp
</script>

pageLoadSuccessful=true//在header.jsp中声明

事实上,这个特殊的问题表明您在JSP中使用了Scriptlet。这是一个严重的问题,而这一特殊问题是造成这一问题的主要原因之一。您需要将所有业务逻辑移动到一个真正的java类中,以便最终在JSP中只使用taglibs/EL。在servlet/filter中,您可以在将请求转发到JSP之前完美地处理异常。

我可以尝试一下,尽管我不确定errorPage=“x”属性与将其放入web.xml中有什么区别,一个是特定于页面的,另一个是应用程序范围的。你可以在一个页面上尝试一下,看看它是否可以工作。你找到解决方案了吗?有点。我的解决方案是抛弃JSP,使用SpringMVC您可能希望使用window.location.replace(“”),以便“后退”按钮仍然有效。嗯,不。标记处理程序可能会引发异常并导致此问题。事实上,我相信这里是这样的,但是已经一年多了,我真的记不起来了。那将被视为标记处理程序代码中的缺陷/bug。
<script type="text/javascript">
    pageLoadSuccessful = true;//declared in header.jsp
</script>