2010-11-27 3 views
0

У меня есть клиент Джерси, который подключен с помощью Guice. Действительно подключено :)Jersey Guice Доступ к параметрам почты

Ресурсы также создаются с использованием Guice.

Что-то вроде:

@Inject 
class TestResource { 
    @Inject DataFatcher fetcher, 
    ... 
    ... 
} 

Теперь DataFetcher объект создается с помощью Guice и имеет глубокие вложенные Guice созданные объекты, используя состав. Теперь некоторым из этих объектов нужен доступ к параметрам, переданным с использованием POST.

У меня есть HttpServletModule, который делает это для меня. Я думал, что делает правильную работу.


HttpServletModule.java

Map<String, String[]> providerRequestParametersMap(HttpServletRequest reuquest) { 
    request.getParametersMap() 
} 

Сейчас, к сожалению, это выглядит как-Джерси, уже Intercepter запрос и удалить параметры POST от карты параметров запроса. Итак, эта Моя Карта пуста.

Как можно получить доступ к параметрам POST в Guice? Я не хочу вставлять форму MultivaledMap в ресурс напрямую, так как это нужно будет полностью передать из ресурса, который испортит мой дизайн.

Любые советы очень ценятся. Я могу подумать о создании фильтра, который перехватывает HttpServletRequest, прежде чем фильтры Джерси начнут атаковать. Надеясь, что есть лучшее, более легкое решение :).

ответ

0

Простейшее решение, вероятно, является фильтром сервлета, который делает то, что вы предлагаете: перехват HttpServletRequest до того, как он обработает Джерси и установит данные в объекте с областью запроса.

Если вы используете Guice Servlet, фильтрация, по крайней мере, на несколько нажатий клавиш меньше, чем в web.xml.

Если вы предпочитаете решение только на Джерси, вы можете использовать ContainerRequestFilter. Это дает вам доступ к ContainerRequest, который, в свою очередь, предоставляет вам форму (javax.ws.rs.core.MultivaluedMap).

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