Question

J'ai un contrôleur qui doit renvoyer une page 404 et un code d'état sous certaines conditions. Je n'arrive pas à trouver comment faire cela à Grails. Un collègue a recommandé cette méthode:

response.sendError(HttpServletResponse.SC_NOT_FOUND)

qui fonctionne parfaitement, mais ce n’est pas très semblable à Grails. Je sais que la méthode de rendu de Rails prend un argument de statut, mais le rendu de Grails ne possède pas une telle fonctionnalité. Y a-t-il quelque chose qui me manque, quelle est la meilleure façon de procéder?

Était-ce utile?

La solution

Définir le statut de la réponse avec sa propre instruction est suffisant. Cela ne semble pas trop laid et c'est assez simple:

response.status = 404;

Je l'ai utilisé avec succès moi-même et ont vu d’autres le faire de cette façon . Puisqu'il ne s'agit que d'un passeur, vous pouvez également effectuer d'autres tâches après avoir défini le statut. Quel que soit l'état que vous avez défini en dernier, ce sera ce que HttpServletResponse utilise lorsqu'il envoie la réponse au client.

Autres conseils

response.sendError (404) fonctionnera avec Grails UrlMappings alors que response.status = 404 ne le fait pas pour une raison quelconque. Ceci est utile si vous souhaitez afficher une page d'erreur 404 personnalisée, par opposition à un simple renvoi de 404 au navigateur.

Je ne sais pas dans quelle version cela a commencé, mais vous pouvez faire dans Grails 2.2.1:

render(status: 503, text: 'Failed to do stuff.')

http://grails.org/doc/2.2.1/ réf / Contrôleurs / render.html

response.sendError et response.setStatus sont les deux seules façons que je connaisse. Si vous importez HttpServletResponse de manière statique , ce n'est pas du tout un 'type de grails'.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top