2012-03-29 28 views
0

作为应用程序的一部分,我们有一个JSP页面(父页面),我们在其中调用另一个JSP页面(子页面),其中已经分配了子页面的所有参数转换为父页面的形式,然后尝试提交页面。NestedRuntimeException:无法解析请求的POST参数

在提交的时候,我们得到以下错误的前端...

(I) Front end error 
===================== 
Error 500--Internal Server Error 
From RFC 2068 Hypertext Transfer Protocol -- HTTP/1.1: 

而上,我们得到以下错误后端...

(II) Application server Error log 

    <Error> <HTTP> <BEA-101019> <[ServletContext(id=29607640,name=test,c 
    ontext-path=/Test)] Servlet failed with IOException 
    java.net.SocketTimeoutException: Read timed out 
      at java.net.SocketInputStream.socketRead0(Native Method) 
      at java.net.SocketInputStream.read(SocketInputStream.java:129) 
      at weblogic.servlet.internal.PostInputStream.read(PostInputStream.java:170) 
      at weblogic.servlet.internal.ServletInputStreamImpl$1.read(ServletInputStreamImpl.java:115) 
      at weblogic.servlet.internal.ServletInputStreamImpl.read(ServletInputStreamImpl.java:180) 
      at weblogic.servlet.internal.ServletRequestImpl.mergePostParams(ServletRequestImpl.java:1339 
    ) 
      at weblogic.servlet.internal.ServletRequestImpl.parseQueryParams(ServletRequestImpl.java:120 
    6) 
      at weblogic.servlet.internal.ServletRequestImpl.getParameter(ServletRequestImpl.java:1409) 
      at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:446) 
      at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:348) 
      at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletC 
    ontext.java:7047) 
      at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321) 
      at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121) 
      at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:39 
    02) 
      at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2773) 
      at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:224) 
      at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:183) 
    **--------------- nested within: ------------------ 
    weblogic.utils.NestedRuntimeException: Cannot parse POST parameters of request: '/Test/test1.jsp 
    ' - with nested exception: 
    [java.net.SocketTimeoutException: Read timed out]** 

      at weblogic.servlet.internal.ServletRequestImpl.mergePostParams(ServletRequestImpl.java:1364 
    ) 
      at weblogic.servlet.internal.ServletRequestImpl.parseQueryParams(ServletRequestImpl.java:120 
    6) 
      at weblogic.servlet.internal.ServletRequestImpl.getParameter(ServletRequestImpl.java:1409) 
      at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:446) 
      at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:348) 
      at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletC 
    ontext.java:7047) 
      at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321) 
      at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121) 
      at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:39 
    02) 
      at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2773) 
      at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:224) 
      at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:183) 

您能否提出一个关于问题原因的建议。

+0

如果您的问题已被解答,或者不再有效,请勾选以选择最合适的答案,以便每个人都知道问题已得到解决。谢谢。 – wattostudios 2012-05-14 13:27:53

回答

0

你得到一个SocketTimeoutException,所以你的POST可能有问题。例如,您可能无法通过足够的数据字节发送数据,或者您可能无法在完成连接后关闭连接 - 基本上它坐在那里等待更多信息,直到最终超时。

您可以发布一些您的JSP代码,特别是您在创建和运行POST时的位置,以便我们提供更好的反馈。

+0

非常感谢您的快速回复。它的遗留代码我并不真正了解我需要在这里放置什么,因为很多零散的东西都在这里和那里。我很困惑。但是我明白这个问题是由于字节数据。你可以告诉我,如果假设我声明StringBuffer sb = new StringBuffer(50)并且追加到stringbuffer,如果它超过指定的大小并且作为post参数发布时会有这样的问题。 – sairam 2012-03-29 14:02:28

+0

不,这可能不会导致问题。但是,为什么使用StringBuffer?如果你想通过POST发送一个字符串,你需要使用类似StringWriter的东西,它会向流输出一个值。如果你通过POST发送StringBuffer,最好发送一个纯String来代替 - 通过POST发送一个StringBuffer可能不会做你期望的。如果您需要进一步的帮助,您能否请张贴一些代码,以便我们能够更好地回答您的问题。 – wattostudios 2012-03-29 14:15:20

+0

实际上他们追加到StringBuffer,后来应用toString()。它有时候有时候不会工作,我真的不明白代码中的哪部分代码需要粘贴到这里,因为代码中的代码是非常混乱的。我正在做一个错误修复,实际上他们正在做的是A. jsp在嵌入B.jsp的地方,表单标签是B.jsp,他们在这里做一些复选框选择,并提交表单将其路由到A.jsp并从那里传送到B.jsp。他们正在制作的表单

METHOD =“post”NAME =“BasicEdit”ACTION =“<%= strPAGE_URL%>”> – sairam 2012-03-30 11:51:05