Java 答复已经提交
我有一个取消按钮,用来刷新值。现在我已经将它们转换为刷新或重新加载页面,并移动到只读页面。所以更改了cancel按钮来调用这样的函数Java 答复已经提交,java,jsp,struts,illegalstateexception,Java,Jsp,Struts,Illegalstateexception,我有一个取消按钮,用来刷新值。现在我已经将它们转换为刷新或重新加载页面,并移动到只读页面。所以更改了cancel按钮来调用这样的函数 function chkArea(){ var url='<c:out value="${model.contextPath}"/>/abcHandler.do?operation=view; document.forms[0].action=url; document.forms[0].submit(
function chkArea(){
var url='<c:out value="${model.contextPath}"/>/abcHandler.do?operation=view;
document.forms[0].action=url;
document.forms[0].submit();
}
控制台显示以下错误:
javax.servlet.ServletException: The "url" attribute illegally evaluated to "null" or "" in <import>
at com.evermind.server.http.EvermindPageContext.handlePageThrowable(EvermindPageContext.java:899)
at com.evermind.server.http.EvermindPageContext.handlePageException(EvermindPageContext.java:816)
我在JS或JSP中没有看到任何错误。怎么了?有什么建议吗?当您从jsp对输出流进行写入,然后再次对其执行某些操作时,会出现此错误。这会导致非法状态异常。当响应已提交时,不应执行任何操作。通过提交,我的意思是将响应发送回客户端。一种常见的情况是
OutputStream stream = response.getOutPutStream();
stream.write("something here");
stream.flush();
RequestDispatcher rd = request.getRequestDispatcher("someFile.jsp");
rd.forward(request, response); // You can't do this because stream is already written
当您从jsp对输出流进行写入,然后再次对其执行某些操作时,会出现此错误。这会导致非法状态异常。当响应已提交时,不应执行任何操作。通过提交,我的意思是将响应发送回客户端。一种常见的情况是
OutputStream stream = response.getOutPutStream();
stream.write("something here");
stream.flush();
RequestDispatcher rd = request.getRequestDispatcher("someFile.jsp");
rd.forward(request, response); // You can't do this because stream is already written
首先,问题不在示例1中的JSP或JS中。问题在于servlet在获得“../abcHandler.do?operation=view;”请求时做了什么 问题是,您正在尝试执行需要更改HTTP响应头的操作。。。在发送头之后。这就是异常/消息所说的。(一旦servlet框架开始写入响应,响应即被“提交”。这通常在有什么东西打开servlet输出流/编写器…准备写入响应体时触发。) 为了给您提供正确的诊断,以及关于如何解决这里的特定问题的合理建议,我们需要查看处理上述请求的Servlet/JSP代码 “url非法计算为空”消息有点难以放置。它可能发生在非法状态异常之前。。。或者在它之后 (一种可能是您的JSP代码试图使用某个“url”属性执行某些操作,该属性意外地为
null
,从而触发异常。然后容器的错误处理程序尝试设置不同的响应状态……但由于响应已提交,因此该操作失败。)
总之,如果没有更多的信息,就不可能找出根本问题是什么;i、 e.守则
1-实际上,您缺少
url
初始化的结束引号。。。但是我假设这只是一个转录错误。首先,问题不在示例1中的JSP或JS中。问题在于servlet在获得“../abcHandler.do?operation=view;”请求时做了什么
问题是,您正在尝试执行需要更改HTTP响应头的操作。。。在发送头之后。这就是异常/消息所说的。(一旦servlet框架开始编写响应,响应就会被“提交”。通常是在某个东西打开servlet输出流/写入程序时触发的,以准备编写响应主体。)
为了给您提供正确的诊断,以及关于如何解决这里的特定问题的合理建议,我们需要查看处理上述请求的Servlet/JSP代码
“url非法计算为空”消息有点难以放置。它可能发生在非法状态异常之前。。。或者在它之后
(一种可能是您的JSP代码试图使用某个“url”属性执行某些操作,该属性意外地为null
,从而触发异常。然后容器的错误处理程序尝试设置不同的响应状态……但由于响应已提交,因此该操作失败。)
总之,如果没有更多的信息,就不可能找出根本问题是什么;i、 e.守则
1-实际上,您缺少
url
初始化的结束引号。。。但我认为这只是一个转录错误。ya所以我尝试了autoflush=“true”。即使这样,也会产生相同的错误。请确保jspsI中没有类似于上述代码的代码。我的actionclass只会转发到一个JSP.com,并且stream.flush()
会导致提交响应。所以我觉得你的autoflush=true
不会有帮助。这会增加问题。是的,所以我尝试了autoflush=“true”。即使这样,也会产生相同的错误。请确保jspsI中没有类似于上述代码的代码。我的actionclass只会转发到一个JSP.com,并且stream.flush()
会导致提交响应。所以我觉得你的autoflush=true
不会有帮助。这会增加问题。对于谷歌用户:如果您使用的是externalContext.redirect()
,请尝试使用以下条件:如果(!externalContext.isResponseCommitted()){}
(这就是我得到此异常的原因)。对于谷歌用户:如果您使用的是externalContext.redirect()
,尝试将此条件置于其周围:如果(!externalContext.isResponseCommitted()){}
(这就是我得到此异常的原因。)