在JSP上尝试一些错误处理时,我注意到了一些奇怪的行为。
实际错误将发生在表单的输入中:
....
 <input type="hidden" id="INITIAL_ACTION" name="INITIAL_ACTION" value="<%=Myobject.myMethod()%>"/>
<input type="hidden" name="INITIAL_PAGE" ....我看到了错误页面的内容,所以错误页面指令是有效的,但是页面看起来不正常。现在,当我查看页面的源代码时,看起来错误页面实际上是插入到我上一页上一个INITIAL_ACTION输入的值中,而不是作为一个转发:
...
        <input id="INITIAL_ACTION" type="hidden" value=" <html> <head> <title>ErrorPage</title> <link rel = 'stylesheet' type = 'text/css' href = '../css/newstyle.css' /> </head> <body> <div id=" name="INITIAL_ACTION"></input>
        <table class="borderedtable">
            <tbody>
                <tr> … </tr>
                <tr> … </tr>
    ...当然,这给了我一些实际错误页面上的布局/css问题。有谁能解释一下这种行为或指出正确的方向吗?
编辑:
增加页面缓冲区可以工作。
但是,对于我当前的应用程序来说,这将很难确定哪些页面需要这样做,以确保它们的错误处理工作正常。
问题是,错误页中的第一个DIV的id-属性的第一个双引用被用来关闭插入它的位置的值属性。
在错误页面的顶部,我添加了html-注释,其中包含双引号+解释。现在使用了引号,页面的其余部分也呈现得很好。
但我真的不喜欢我的解决方案,感觉不可靠
发布于 2014-03-17 14:38:47
我猜您是在使用Apache或使用Jasper ( Tomcat的JSP引擎)的其他JSP容器之一,或者使用它的派生程序。
如果错误发生时已经提交了响应,Jasper将包含错误页面,而不是转发给它,因为在这种情况下,这是它所能做的最好的。
要转发到错误页面,您需要在提交响应之前执行触发错误的操作。这样做的可能方法包括:
https://stackoverflow.com/questions/22456895
复制相似问题