RESTeasy并返回带有模型的JSP页面

时间:2010-11-05 21:13:33

标签: model-view-controller jboss resteasy

是否有一种简单的,不使用弹簧的方式让RESTeasy返回带有模型的jsp或html页面?我想做一些类似于Spring的ModelAndView,我有一个请求说/ contacts / loomer并让它在jsp模板中返回一个模拟对象。我看到的所有示例都是针对JSON / XML的。我知道在泽西岛你可以使用可查看的,但我只需要使用RESTeasy的东西。

谢谢!

我想要这样的东西(但没有春季模式视图):

   @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 个答案:

答案 0 :(得分:22)

好的,我想到了任何有兴趣的人。一旦我找到了一个例子,它实际上是相当微不足道的。

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

    }

答案 1 :(得分:4)

使用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");
}

这会模拟Htmleasy插件的某些行为,而无需重新连接web.xml

答案 2 :(得分:0)

我已经投了上述答案,但似乎可以和RestEasy一起使用到2.3.2.Final,最新的是2.3.5.Final(今天)。对于与Glassfish 3.1.2.2捆绑在一起的泽西岛似乎也可行。

当我尝试时,这不适用于2.3.2.Final上方的RestEasy。我想分享这个观察,因为我花了一段时间才弄清楚导致'java.lang.ClassCastException的原因:$ Proxy262无法转换为org.apache.catalina.core.ApplicationHttpRequest'

但是我并没有尝试深入探讨如何解决它,我发现了一些想法https://stackoverflow.com/a/5149950/1398360

干杯