RESTeasy и возврат на страницу JSP с моделью
Есть ли простой способ, не используя spring, вернуть RESTeasy страницу jsp или html с помощью модели? Я хочу сделать что-то похожее на spring ModelAndView, где у меня есть запрос сказать /contacts/loomer и вернуть его в шаблон jsp. Все примеры, которые я вижу, предназначены для JSON/XML. Я знаю, что в Джерси вы можете использовать видимый, но мне нужно использовать только материал RESTeasy.
Спасибо!
Мне нужно что-то вроде этого (но без spring modelandview):
@POST
@PUT
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
@Produces(MediaType.TEXT_HTML)
public ModelAndView saveContactForm(@Form Contact contact)
throws URISyntaxException
{
service.save(contact);
return viewAll();
}
Ответы
Ответ 1
Хорошо, я понял это для всех, кто интересуется. Это было довольно тривиально, как только я нашел пример.
@GET
@Path("{eventid}")
@Produces("text/html")
public void getEvent(@Context HttpServletResponse response,
@Context HttpServletRequest request,
@PathParam("eventid") Long eventid) throws ServletException,
IOException {
EventDao eventdao = DaoFactory.getEventDao();
Event event = eventdao.find(eventid);
request.setAttribute("event", event);
request.getRequestDispatcher("eventView.jsp").forward(request, response);
}
Ответ 2
Используя org.jboss.resteasy.resteasy-html
version 3.0.6.Final
, вы можете напрямую обращаться к HttpServletRequest
и вводить свои собственные атрибуты, прежде чем направлять вывод в RESTEasy View
.
@GET
@Path("{eventid}")
@Produces("text/html")
public View getEvent(@Context HttpServletResponse response,
@Context HttpServletRequest request,
@PathParam("eventid") Long eventid){
EventDao eventdao = DaoFactory.getEventDao();
Event event = eventdao.find(eventid);
request.setAttribute("event", event);
return new View("eventView.jsp");
}
Это эмулирует некоторое поведение плагина Htmleasy
без необходимости повторного подключения вашего web.xml
.
Ответ 3
Я проголосовал за вышеупомянутый ответ, но, похоже, он работает нормально с RestEasy до 2.3.2. Final, последнее - 2.3.5. Final (на сегодняшний день). Кажется, что все в порядке с Джерси в комплекте с Glassfish 3.1.2.2 тоже.
Это не работает с RestEasy выше 2.3.2.Final, когда я пытался. Я думал поделиться этим наблюдением, поскольку мне потребовалось некоторое время, чтобы выяснить, что вызвало "java.lang.ClassCastException: $Proxy262 нельзя отнести к org.apache.catalina.core.ApplicationHttpRequest '
Однако я не пытаюсь глубоко погрузиться, как это решить, я наткнулся на некоторые мысли fooobar.com/info/300657/...
Приветствия