RESTeasy и возвращение на страницу JSP с моделью - PullRequest
18 голосов
/ 06 ноября 2010

Есть ли простой, не использующий Spring способ заставить RESTeasy вернуть страницу jsp или html с моделью?Я хочу сделать что-то похожее на Spring ModelAndView, где у меня есть запрос сказать / contacts / loomer и заставить его вернуть макет объекта в шаблон JSP.Все примеры, которые я вижу, относятся к JSON / XML.Я знаю, что в Джерси вы можете использовать видимость, но мне нужно использовать только RESTeasy.

Спасибо!

Я хочу что-то вроде этого (но без весеннего 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();
   }

Ответы [ 3 ]

22 голосов
/ 07 ноября 2010

Хорошо, я понял это для всех, кто заинтересован.Это было довольно тривиально, когда я нашел пример.

@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);

    }
4 голосов
/ 04 марта 2014

Используя org.jboss.resteasy.resteasy-html версию 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");
}

. Это эмулирует некоторое поведение *Плагин 1008 * без необходимости перемонтировать ваш web.xml.

0 голосов
/ 20 февраля 2013

Я проголосовал за вышеуказанный ответ, но, похоже, он работает нормально с RestEasy до 2.3.2. Финал, последний - 2.3.5. Финал (на сегодня). Похоже, что все в порядке с Джерси в комплекте с Glassfish 3.1.2.2 тоже.

Это не работает с RestEasy выше 2.3.2. Наконец, когда я пытался. Я решил поделиться этим наблюдением, поскольку мне потребовалось некоторое время, чтобы выяснить, что вызвало 'java.lang.ClassCastException: $ Proxy262 не может быть приведен к org.apache.catalina.core.ApplicationHttpRequest'

Однако я не пытаюсь углубиться, как решить, я наткнулся на некоторые мысли https://stackoverflow.com/a/5149950/1398360

Ура

...