19

有没有一种简单的、不使用弹簧的方法让 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();
   }
4

3 回答 3

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

    }
于 2010-11-07T20:18:18.047 回答
6

使用org.jboss.resteasy.resteasy-html版本,您可以在将输出定向到 RESTEasy 之前3.0.6.Final直接访问并注入您自己的属性。HttpServletRequestView

@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.

于 2014-03-03T22:53:04.353 回答
0

我对上述答案投了赞成票,但它似乎可以与 RestEasy 一起工作,直到 2.3.2.Final,最新的是 2.3.5.Final(今天)。与 Glassfish 3.1.2.2 捆绑的 Jersey 似乎也可以正常工作。

当我尝试时,这不适用于 2.3.2.Final 以上的 RestEasy。我想分享这个观察结果,因为我花了一段时间才弄清楚是什么导致了“java.lang.ClassCastException: $Proxy262 cannot be cast to org.apache.catalina.core.ApplicationHttpRequest”

但是我并不想深入研究如何解决它,我遇到了一些想法https://stackoverflow.com/a/5149950/1398360

干杯

于 2013-02-20T10:00:30.600 回答