是否有一种简单的,不使用弹簧的方式让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();
}
答案 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
干杯