Как я могу вернуть код состояния 404 / 50x с контроллера Grails? - PullRequest
52 голосов
/ 16 сентября 2009

У меня есть контроллер, который должен вернуть страницу 404 и код состояния при определенных условиях. Я не могу понять, как это сделать в Grails. Коллега порекомендовал этот метод:

response.sendError(HttpServletResponse.SC_NOT_FOUND)

, который прекрасно работает, но не очень похож на Grails. Я знаю, что метод рендера Rails принимает аргумент состояния, но рендер Grails не имеет такой функциональности. Я что-то упускаю, какой лучший способ сделать это?

Ответы [ 4 ]

48 голосов
/ 07 октября 2009

Установка статуса ответа с его собственным утверждением достаточно хороша. Это не выглядит уродливо и довольно просто:

response.status = 404;

Я сам успешно использовал это, и видел, как другие делают это тоже . Так как это просто сеттер, вы также можете делать другие вещи после установки статуса. Какой бы статус вы ни установили последним, он будет использоваться HttpServletResponse, когда он действительно отправляет ответ клиенту.

43 голосов
/ 03 июня 2013

Я не знаю, с какой версии это началось, но в Grails 2.2.1 вы можете сделать:

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

http://grails.org/doc/2.2.1/ref/Controllers/render.html

43 голосов
/ 06 марта 2011

response.sendError(404) будет работать с Grails UrlMappings, тогда как response.status = 404 по какой-то причине не работает. Это полезно, если вы хотите отобразить пользовательскую страницу ошибки 404, а не просто отправить 404 обратно в браузер.

8 голосов
/ 16 сентября 2009

response.sendError и response.setStatus - единственные два способа, которые я знаю. Если вы static import HttpServletResponse, то это не так, как «не по граалям».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...