2016-07-21 6 views
0

Я представил фильтр в своем приложении для проверки. Когда я призываю doFilter метод,Получить httpservletrequest в doFilter без литья типов из ServletRequest

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

Я не могу использовать getParts() в doFilter(). getParts() доступен в HttpServletRequest.

Несмотря на то, что я печатаю от ServletRequest до HttpServletRequest, я получаю нулевое значение.

Вопрос в том, есть ли какой-либо доступ к HttpServletRequest внутри doFilter() без литых качеств от ServletRequest? Или как я могу напрямую получить доступ к HttpServletRequest внутри doFilter(), не передавая его методу?

Ниже фрагмент кода я получаю ошибку

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

Какой контейнер сервлетов вы используете? Кот? Какая версия? – vanje

+0

Я использую Tomcat 7. – Lokesh

+0

Как бы не прибегнуть к типу решения проблемы? Типс преуспел, так что это не проблема, поэтому нет причин хотеть этого избежать. – EJP

ответ

0

В Tomcat это известно, но решаемая задача. Смотрите отчет об ошибке: https://bz.apache.org/bugzilla/show_bug.cgi?id=49711

Существует в настоящее время вариант (allowCasualMultipartParsing), чтобы настроить Tomcat, чтобы getParts() вызовов является сервлет фильтры (по умолчанию отключено). Смотрите documentation:

allowCasualMultipartParsing: значение ИСТИНА, если Tomcat автоматически анализировать многокомпонентные тела запроса/форм-данных при HttpServletRequest.getPart * или HttpServletRequest.getParameter * называется, даже когда целевой сервлет не отмечено с аннотацией @MultipartConfig (подробнее см. описание сервлета 3.0, раздел 3.2). Обратите внимание, что любой параметр, отличный от ложного, заставляет Tomcat вести себя так, что это не соответствует техническим требованиям. По умолчанию установлено значение

Смежные вопросы