Как я могу вернуть код состояния 404 / 50x с контроллера Grails?
-
07-07-2019 - |
Вопрос
У меня есть контроллер, который должен вернуть страницу 404 и код состояния при определенных условиях. Я не могу понять, как это сделать в Grails. Коллега порекомендовал этот метод:
response.sendError(HttpServletResponse.SC_NOT_FOUND)
, который отлично работает, но не очень похож на Grails. Я знаю, что метод рендера Rails принимает аргумент состояния, но рендер Grails не имеет такой функциональности. Есть ли что-то, чего мне не хватает, как лучше всего это сделать?
Решение
Установка статуса ответа с его собственным утверждением достаточно хороша. Это не выглядит уродливо и довольно просто:
response.status = 404;
Я успешно использовал это и видел, как другие тоже так делали . Так как это просто сеттер, вы также можете делать другие вещи после установки статуса. Какой бы статус вы ни установили последним, он будет использоваться HttpServletResponse, когда он фактически отправляет ответ клиенту.
Другие советы
response.sendError (404)
будет работать с Grails UrlMappings
, тогда как response.status = 404
по какой-то причине не работает. Это полезно, если вы хотите отобразить пользовательскую страницу ошибки 404, а не просто отправить 404 обратно в браузер.
Я не знаю, с какой версии это началось, но в Grails 2.2.1 вы можете сделать это:
render(status: 503, text: 'Failed to do stuff.')
http://grails.org/doc/2.2.1/ исх / Контроллеры / render.html
response.sendError
и response.setStatus
- это только два известных мне способа. Если вы статически импортируете HttpServletResponse
, то это не так, как если бы вы не были «grails-like».