2011-01-06 3 views
2

J'essaie de réutiliser certaines de mes mosaïques dans un contrôleur qui renvoie une réponse json au client. Je voudrais revenir une réponse JSON similaire au format suivant:Rendu des vues en tant que chaîne avec les tuiles Spring MVC et Apache

{ 
'success': <true or false>, 
'response': <the contents of an apache tile> 
} 

Dans mon contrôleur je voudrais exécuter une logique similaire à ce pseudo-code:

boolean valid = validator.validate(modelObj) 
String response = "" 
if(valid){ 
    response = successView.render() // im looking for a way to actually accomplish   
            // this, where the successView is the apache tiles view. 
            // I would also need to pass a model map to the view somehow. 
}else{ 
    response = errorView.render() 
} 
writeJsonResponse(httpResponse, /* a Map whose json representation looks like the one I described above. */) 
+0

Je pense que l'envoi de code html dans json n'est pas une bonne idée. Si vous voulez juste savoir si la requête a réussi ou non, vous pouvez regarder le code de statut de la réponse (et le changer à n'importe quelle valeur dans le serveur) et envoyer à partir du serveur la vue comme d'habitude. – Javi

Répondre

0

Je belive que vous souhaitez mettre en œuvre un vue de classe qui va envelopper la sortie d'un jsp dans json. La classe en question peut être org.springframework.web.servlet.view.tiles2.TilesView.

Une autre option peut être d'étendre le convertisseur JSON. org.springframework.http.converter.json.MappingJacksonHttpMessageConverter

0

Si vous avez besoin de rendre la vue à l'aide Apache Tiles 2, vous devez utiliser

org.springframework.web.servlet.view.tiles2.TilesViewResolver 

Voir le tutoriel exemple ici: http://krams915.blogspot.com/2010/12/spring-mvc-3-tiles-2-integration.html

Si vous avez besoin de rendre la réponse JSON, vous pouvez utiliser le @ResponseBody qui nécessite Jackson dans votre classpath. Voir l'exemple ici http://krams915.blogspot.com/2011/01/spring-mvc-3-and-jquery-integration.html (Le contrôleur renvoie JSON). Vous pouvez également voir un exemple similaire de @ResponseBody à http://krams915.blogspot.com/2010/12/jqgrid-and-spring-3-mvc-integration.html

Questions connexes