2014-03-12 2 views
1

web.xml 배치 디스크립터에 필터를 추가했습니다. 요청이 서버에 올 때마다 그러나, 필터는 주어진 다음은 NullPointerExceptionFilterChain의 nullPointerException doFilter Methid

java.lang.NullPointerException 
org.apache.commons.beanutils.PropertyUtilsBean.getIndexedProperty(PropertyUtilsBean.java:427) 
org.apache.commons.beanutils.PropertyUtilsBean.getIndexedProperty(PropertyUtilsBean.java:340) 
org.apache.commons.beanutils.PropertyUtilsBean.getNestedProperty(PropertyUtilsBean.java:664) 
org.apache.commons.beanutils.PropertyUtilsBean.getProperty(PropertyUtilsBean.java:715) 
org.apache.commons.beanutils.BeanUtilsBean.setProperty(BeanUtilsBean.java:884) 
org.apache.commons.beanutils.BeanUtilsBean.populate(BeanUtilsBean.java:811) 
org.apache.commons.beanutils.BeanUtils.populate(BeanUtils.java:298) 
org.apache.struts.util.RequestUtils.populate(RequestUtils.java:1252) 
org.apache.struts.action.RequestProcessor.processPopulate(RequestProcessor.java:821) 
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:254) 
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482) 
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:641) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 

예외가 occures 코드 세그먼트가 발생합니다.

public void doFilter(ServletRequest request, ServletResponse response, 
        FilterChain chain)  throws IOException, ServletException { 

    HttpServletRequest httpRequest = (HttpServletRequest) request; 
    HttpServletResponse httpResponse = (HttpServletResponse) response; 

    boolean isAjax = "XMLHttpRequest".equals(httpRequest.getHeader("x-requested-with")); 


    HttpSession httpSession = httpRequest.getSession(false); 

    if(isAjax){ 
     if(isValidRequest(httpRequest, httpSession)){ 
      chain.doFilter(request, response); 
     }else{ 
      returnInvalidMessage(httpRequest, httpResponse); 
     } 
    }else{ 
     chain.doFilter(request, response); /* Here is the exception occures */ 
    } 
} 

예외는 아래 라인

chain.doFilter(request, response);

중 하나가 이것에 대해 생각을 한인가에 발생? 이 아약스 요청의 경우

+0

그것은'NullPointerException'을 던지는 라인이 아닙니다. stacktrace가 말하는 것을 이해해야합니다. stacktrace 전체를 게시하십시오. –

+0

@LuiggiMendoza 다시 확인해 보았습니다. 하지만'com.incitesys.common.controller.SessionHandlingFilterAjax.doFilter (SessionHandlingFilterAjax.java:94)'에서 NPE가 발견되었습니다. 줄 번호 94는 chain.doFilter (request, response); –

답변

1

변경

String h = httpRequest.getHeader("X-Requested-With"); 
boolean isAjax = (h == null?false:h.indexOf("XMLHttpRequest")>=0); 

isAjax에이 true으로 평가되어야한다.

+0

@sakura 유효하지 않은 아약스 요청 인 경우 양식 Bean을 채워서는 안됩니다. –

+0

답장을 보내 주셔서 감사합니다. 나는 네 논리를 확인했다. 그러나 실제 문제는'chain.doFilter (request, response);'줄에서 제기됩니다. 이것의 처리를 통해 무언가가'null'이되었습니다. 'chain '은'javax.servlet.FilterChain'의 참조 변수입니다. –

+0

나는 해결책을 얻었다. 실제로 문제는 필터와 관련이 없습니다. 나는'Session'에'ActionForm'을 추가했습니다. ActionForm 객체가 세션 스코프에서 제거되었을 때 던져지는'NPE '. –

0

프로젝트가 tomcat에서 실행 중이면 프로젝트 병 문제 일 수 있습니다.

JSP-api.jar을하고 서블릿 - api.jar을

충돌 바람둥이의 항아리이다. 그래서 그냥 양쪽 항아리를 모두 지우십시오.