我最近从Apache迁移到NGINX作为web服务器。从那以后,我得到一个NPE错误与我的过滤器在一些AJAX请求:
java.lang.NullPointerException
at org.ulpmm.eev.web.administration.ModifyEleveDossierUtilisateur.VerificationDateEntree(ModifyEleveDossierUtilisateur.java:340)
at org.ulpmm.eev.web.administration.ModifyEleveDossierUtilisateur.modifyUser(ModifyEleveDossierUtilisateur.java:175)
at org.ulpmm.eev.web.administration.ModifyEleveDossierUtilisateur.doProcess(ModifyEleveDossierUtilisateur.java:142)
at org.ulpmm.eev.web.administration.ModifyEleveDossierUtilisateur.doPost(ModifyEleveDossierUtilisateur.java:91)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.ulpmm.eev.utils.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:125)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.ulpmm.eev.filter.RealIPFilter.doFilter(RealIPFilter.java:19)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
这是我的realpfilter .java:
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
if (chain != null) {
if (request instanceof HttpServletRequest) {
RealIPRequestWrapper rirw = new RealIPRequestWrapper((HttpServletRequest) request);
chain.doFilter(rirw, response);
} else {
chain.doFilter(request, response);
}
}
}
第19行是chain.doFilter(rirw, response);
和SetCharacterEncodingFilter:
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain)
throws IOException, ServletException {
// Conditionally select and set the character encoding to be used
/*
if (ignore || (request.getCharacterEncoding() == null)) {
String encoding = selectEncoding(request);
if (encoding != null)
request.setCharacterEncoding(encoding);
}
*/
request.setCharacterEncoding("UTF-8");
// Pass control on to the next filter
if (chain != null) {
chain.doFilter(request, response);
}
}
第125行也有chain.doFilter(request, response)
。
我认为NPE是在chain
上,所以我增加了一个测试,但没有变化。
这似乎只发生在AJAX请求中。除了它们,我没有得到错误。
如果有人有线索就太好了:)
谢谢。Marc
正如@marthusson和@Seelenvirtuose所说,NPE被抛出在我的数据处理类中,而不是在过滤器中。
过滤器只是继电器。
通过修复类,一切都很好。
谢谢你