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

StackOverflow https://stackoverflow.com/questions/1429388

Вопрос

У меня есть контроллер, который должен вернуть страницу 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».

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top