2010-11-05 19 views
17

¿Hay una manera fácil, no usar primavera, manera de tener RESTeasy devuelve una página JSP o HTML con un modelo? Quiero hacer algo similar a la ModelAndView primavera donde tengo una petición que decir/contactos/loomer y tiene que devolver un objeto burlado en una plantilla JSP. Todos los ejemplos que veo son para JSON/XML. Sé que en Jersey puedes usar el visualizador, pero solo necesito usar RESTeasy.RESTeasy y Volver a una página JSP con un modelo

Gracias!

Quiero algo como esto (pero sin el ModelAndView primavera):

@POST 
    @PUT 
    @Consumes(MediaType.APPLICATION_FORM_URLENCODED) 
    @Produces(MediaType.TEXT_HTML) 
    public ModelAndView saveContactForm(@Form Contact contact) 
     throws URISyntaxException 
    { 
     service.save(contact); 
     return viewAll(); 
    } 

Respuesta

20

Vale, lo he descubierto para cualquier persona que esté interesada. En realidad, fue bastante trivial una vez que encontré un ejemplo.

@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

Me pregunto si esto es una manera de hacer esto apoyado o es sólo un efecto secundario de la aplicación. Espero que sea el primero :-) – marcus

0

He votado en la respuesta anterior, pero parece que funciona bien con RestEasy hasta 2.3.2.Final, el último es 2.3.5.Final (por hoy). Parece que funciona bien con Jersey incluido con Glassfish 3.1.2.2 también.

Esto no funciona con el anterior RestEasy 2.3.2.Final cuando intenté. Pensé para compartir esta observación, ya que me tomó un tiempo para averiguar lo que causó 'java.lang.ClassCastException: $ Proxy262 no pueden ser echados a org.apache.catalina.core.ApplicationHttpRequest'

Sin embargo no estoy tratando de sumergirse profundamente la forma de resolverlo, me encontré con algunos pensamientos https://stackoverflow.com/a/5149950/1398360

Saludos

3

al usar la versión org.jboss.resteasy.resteasy-html3.0.6.Final se puede acceder directamente a la HttpServletRequest e inyectar sus propios atributos antes de dirigir la salida a un 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"); 
} 

Esto emula el comportamiento de la Htmleasy plug-in sin tener que cablear el web.xml.

+0

¿Cuál es el objeto de vista RESTeasy? Estoy teniendo problemas similares. Me sorprende que estas partes de RESTEasy estén tan mal documentadas. – Sonny

+0

'http: // docs.jboss.org/resteasy/docs/3.0.6.Final/javadocs/index.html' Para mí se siente como RESTEasy prefiere volver JSON o XML. Usarlo como un MVC que devuelve vistas jsp es estirar el modelo. Apuesto a que es por eso que Htmleasy fue escrito. – majorbanzai

Cuestiones relacionadas