当前位置: 代码迷 >> Java Web开发 >> DWR 获取request 异常
  详细解决方案

DWR 获取request 异常

热度:4780   发布时间:2016-04-11 00:07:36.0
DWR 获取request 错误
JS调用类方法:
UserSvlt.UserMessageAdd();

Java类方法:


public void UserMessageAdd(HttpSession session)
throws ServletExceptionIOException
{
System.out.println("Test 测试,添加函数进入成功");

// List<UserInfo> result = new ArrayList<UserInfo>();

sqlBean db= new sqlBean();
ResultSet rs = null;

// HttpServletRequest request = getRequest();
HttpServletRequest request = WebContextFactory.get().getHttpServletRequest();
if(request == null)
{
System.out.println("Request Is Null From:UserMessageAdd");
return ;
}


String strUserID =  new String(request.getParameter("UserID").getBytes("ISO8859_1"),"UTF-8");
String strMessage =  new String(request.getParameter("message").getBytes("ISO8859_1"),"UTF-8");
String strIP =  new String(request.getParameter("ip").getBytes("ISO8859_1"),"UTF-8");




当执行到:
String strUserID =  new String(request.getParameter("UserID").getBytes("ISO8859_1"),"UTF-8");
这句的时候,出现错误:



127.0.0.1
2013-9-27 11:49:33 org.directwebremoting.util.CommonsLoggingOutput info
信息: Exec: UserSvlt.UserMessageAdd()
Test 测试,添加函数进入成功
2013-9-27 11:49:33 org.directwebremoting.util.CommonsLoggingOutput warn
警告: Method execution failed: 
java.lang.NullPointerException
at common.UserSvlt.UserMessageAdd(UserSvlt.java:169)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.directwebremoting.impl.ExecuteAjaxFilter.doFilter(ExecuteAjaxFilter.java:34)
at org.directwebremoting.impl.DefaultRemoter$1.doFilter(DefaultRemoter.java:428)
at org.directwebremoting.impl.DefaultRemoter.execute(DefaultRemoter.java:431)
at org.directwebremoting.impl.DefaultRemoter.execute(DefaultRemoter.java:283)
at org.directwebremoting.servlet.PlainCallHandler.handle(PlainCallHandler.java:52)
at org.directwebremoting.servlet.UrlProcessor.handle(UrlProcessor.java:101)
at org.directwebremoting.servlet.DwrServlet.doPost(DwrServlet.java:146)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:874)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
at java.lang.Thread.run(Thread.java:619)
2013-9-27 11:49:33 org.directwebremoting.util.CommonsLoggingOutput warn
警告: --Erroring: batchId[0] message[java.lang.NullPointerException]




已证明request为非空,不知道为何无法获取页面的元素信息数据,难道不是页面的request?
如果需要web.xml和dwr.xml说一下我发出来,白天随时在线。
dwr

------解决方案--------------------
如果request非空,那么肯定是你下面的字符转换有问题了,先别转,直接取,request.getParameter("UserID") 看看有没有值 如果没有,那就是前面没有传过来
------解决方案--------------------
request.getParameter("UserID") 首先排查是不是request为空.如果不为空 ,看看这个是不是空.只有这两种可能如果是这条出错
------解决方案--------------------
引用:
嗯,我试试看,其实我刚刚换了种现在JS获取表单元素然后当参数传递过去的方法,因为需要用到的数据不多所以还算方便。
我先试试看这个问题能不能解决,怕以为数据多了就麻烦了


恩 如果不多,又不是很重要的信息,直接传递也是没问题的.不过 我一般不用dwr 用jquery的ajax也是一样
  相关解决方案