2016-07-21 7 views
0

유효성 확인을 위해 애플리케이션에 필터를 도입했습니다. 내가 방법을 doFilter 호출 할 때,ServletRequest에서 타입 캐스팅없이 doFilter에서 httpservletrequest를 얻으십시오.

public void doFilter (ServletRequest servletRequest, ServletResponse servletResponse,FilterChain filterChain) 

나는 doFilter()getParts()을 사용할 수 없습니다. getParts()HttpServletRequest에서 사용할 수 있습니다.

ServletRequest에서 HttpServletRequest으로 캐스트해도 null 값을 얻고 있습니다.

질문 : HttpServletRequestdoFilter()에 액세스 할 수있는 방법이 있습니까? ServletRequest에서 캐스트하지 않으시겠습니까? 또는 doFilter() 내부에있는 HttpServletRequest에 직접 액세스하지 않고 직접 액세스 할 수 있습니까? 다음은

내가이 알려진하지만 해결 문제 톰캣에서 오류

for(final Part part : ((HttpServletRequest) servletRequest).getParts()) 
+0

어떤 서블릿 컨테이너를 사용합니까? 수코양이? 어떤 버전입니까? – vanje

+0

Tomcat 7을 사용하고 있습니다. – Lokesh

+0

어떻게 형변환을해서 문제를 해결할 수 있습니까? 형식 변환이 성공 했으므로 문제가되지 않으므로이를 피하고 싶지는 않습니다. – EJP

답변

0

를 얻을 수 니펫을. https://bz.apache.org/bugzilla/show_bug.cgi?id=49711

getParts() 호출이 서블릿 필터 (기본값은 꺼짐)가되도록 Tomcat을 구성하는 옵션 (allowCasualMultipartParsing)이 추가되었습니다. * 또는 HttpServletRequest.getParameter는 *라고, 대상 서블릿이 표시되어 있지 HttpServletRequest.getPart 경우에도 때 Tomcat이 자동으로 다중/폼 데이터 요청 본문을 구문 분석하는 경우는 true로 설정 :

allowCasualMultipartParsing 다음 documentation 참조 @MultipartConfig 주석 (자세한 내용은 Servlet Specification 3.0, 3.2 절 참조). false가 아닌 다른 설정은 Tomcat이 기술적으로 규격을 준수하지 않는 방식으로 작동하도록합니다. 기본값은 false입니다.