2011-10-06 98 views
0

我最近开发了一个简单的ajax搜索。我的服务器中的整个代码都使用Struts,所以我不得不使用一些麻烦的编程方式。我的主要方法返回一个ActionForward。我编程的方式是将文本发送给客户端,然后向前返回空行为。Ajax,Struts和一个空指针

这个效果很好。

...除了它会在日志中生成一个空指针错误。而且我们的生产日志通常会在每次发生错误时发送一封电子邮件我怎样才能摆脱这个错误?有没有其他方式(不涉及其他框架)?

谢谢!

+0

*什么*生成NPE?返回'null'就意味着动作本身处理了写入响应,而Struts不需要做更多的处理。 –

回答

0

当你说你的“主要方法”是指你的动作类?如果这是通过ajax调用的,则可以将返回类型设置为void。

+0

是的,但我用同一个班级做了一个帖子和一个帖子。 get方法返回action-forward(到正确的JSP),并且post将执行ajax命令。感谢您及时的回复! –

+0

也许我仍然误解你如何设置它,但是你不能像ActionForward返回类型那样离开get方法,然后将post方法改为返回void? – malificent

+0

我正在扩展项目使用的类,并且主要方法会向前返回一个操作。这里: 公共的ActionForward执行(的ActionMapping映射,ActionForm的形式, \t \t \t HttpServletCommonRequest请求,HttpServletResponse的响应) \t \t \t抛出的ServletException,CaduniiRuntimeException, \t \t \t CoreIspRuntimeException,RuntimeException的,CoreIspException, \t \t \t CaduniiException,UsuarioNaoEncontradoNaSessaoException, \t \t \t SessaoInvalidaException,FuncionarioNaoLogadoException, \t \t \t UsuarioInconsistenteException,JSONException,IOException { –

0

NPE的原因可能存在于您的应用程序中,而不是struts中。我发现自己今天面临同样的问题,真的很困惑。 Struts支持返回一个空的ActionForward,所以没有理由得到一个NPE。

因此,我深入到NPE中,发现它是由属于我们应用程序的类抛出的。该类继承struts DispatchAction类,并且继而被我们应用程序中的所有动作类继承。为了长话短说,虽然struts支持null ActionForward,但后代类没有。一旦我调整了后代类来处理空值,NPE就消失了。