web-dev-qa-db-ja.com

Grailsコントローラーから404 / 50xステータスコードを返すにはどうすればよいですか?

特定の条件で404ページとステータスコードを返す必要があるコントローラーがあります。 Grailsでこれを行う方法がわからないようです。同僚がこの方法を推奨しました:

response.sendError(HttpServletResponse.SC_NOT_FOUND)

これは完全に正常に動作しますが、Grailsのようなものではありません。 Railsのrenderメソッドはステータス引数を取ることを知っていますが、Grailsのrenderにはそのような機能はありません。私が見逃しているものはありますか、これを達成する最良の方法は何ですか?

52
Jack Chu

応答ステータスを独自のステートメントで設定するだけで十分です。見栄えが悪くなく、非常に簡単です。

response.status = 404;

私はこれを自分で成功裏に使用しました 他の人がこれを行うのを見たことがあります 。それは単なるセッターなので、ステータスを設定した後に他のことを行うこともできます。最後に設定したステータスは、HttpServletResponseが実際にクライアントに応答を送信するときに使用するものです。

48
Rob Hruska

response.sendError(404)はGrails UrlMappingsで動作しますが、response.status = 404は何らかの理由でありません。これは、ブラウザに404を送り返すのではなく、カスタム404エラーページをレンダリングする場合に便利です。

43
Thody

これがどのバージョンで始まったのかわかりませんが、Grails 2.2.1では次のことができます。

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

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

43
Alex Beardsley

response.sendErrorおよびresponse.setStatusは私が知っている唯一の2つの方法です。もし、あんたが static import HttpServletResponse、その後、それはその 'un-grails-like'ではありません。

8
leebutts