Подтвердить что ты не робот

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

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

response.sendError(HttpServletResponse.SC_NOT_FOUND)

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

4b9b3361

Ответ 1

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

response.status = 404;

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

Ответ 2

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

Ответ 4

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