我最近从Apache迁移到NGINX作为Web服务器。 从那以后,我在一些AJAX请求中使用我的过滤器出现NPE错误:
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)
这是我的RealIPFilter.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请求才会发生。除了他们我没有得到错误。
如果有人有线索,那将会很棒。)
谢谢。
马克
答案 0 :(得分:0)
正如@marthusson和@Seelenvirtuose所说,NPE被抛入我的数据处理类而不是过滤器中。
过滤器只是继电器。
通过修复课程,一切都很好。
谢谢:)