2010-11-05 3 views
17

Existe-t-il un moyen facile d'utiliser RESTeasy pour renvoyer une page jsp ou html avec un modèle? Je veux faire quelque chose de similaire à la Spring ModelAndView où j'ai une demande de dire/contacts/Loomer et lui faire retourner un objet mocked up dans un modèle jsp. Tous les exemples que je vois sont pour JSON/XML. Je sais à Jersey que vous pouvez utiliser le visualisable, mais je dois utiliser uniquement des trucs RESTeasy.RESTeasy et retour à une page JSP avec un modèle

Merci!

Je veux quelque chose comme ça (mais sans le ModelAndView de printemps):

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

Répondre

20

D'accord, je pensais que ce pour toute personne intéressée. C'était en fait assez trivial une fois que j'ai trouvé un exemple.

@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

Je me demande si c'est un moyen de faire cela ou si c'est juste un effet secondaire de l'implémentation. J'espère que c'est l'ancien :-) – marcus

0

J'ai voté la réponse ci-dessus, mais il semble fonctionner correctement avec RestEasy jusqu'à 2.3.2.Final, le dernier est 2.3.5.Final (pour aujourd'hui). Il semble fonctionner correctement avec Jersey livré avec Glassfish 3.1.2.2 aussi.

Cela ne fonctionne pas avec le RestEasy ci-dessus 2.3.2.Final quand j'ai essayé. Je pensais partager cette observation car il m'a fallu un certain temps pour comprendre ce qui a causé « java.lang.ClassCastException: $ Proxy262 ne peut pas être jeté à org.apache.catalina.core.ApplicationHttpRequest »

Cependant, je ne suis pas en essayant de plonger profondément la façon de le résoudre, je suis tombé sur quelques réflexions https://stackoverflow.com/a/5149950/1398360

Vive

3

en utilisant la version org.jboss.resteasy.resteasy-html3.0.6.Final vous pouvez accéder directement à la HttpServletRequest et injecter vos propres attributs avant de diriger la sortie vers 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"); 
} 

émule un comportement du plugin Htmleasy sans avoir à recâbler votre web.xml.

+0

Qu'est-ce que l'objet de vue RESTeasy? J'ai des problèmes similaires. Je suis surpris que ces parties de RESTEasy soient si mal documentées. – Sonny

+0

'http: // docs.jboss.org/resteasy/docs/3.0.6.Final/javadocs/index.html' Pour moi, il semble que RESTEasy préfère renvoyer json ou xml. L'utiliser comme un MVC retournant des vues jsp étire le modèle. Je parie que c'est pourquoi Htmleasy a été écrit. – majorbanzai