特定の条件で404ページとステータスコードを返す必要があるコントローラーがあります。 Grailsでこれを行う方法がわからないようです。同僚がこの方法を推奨しました:
response.sendError(HttpServletResponse.SC_NOT_FOUND)
これは完全に正常に動作しますが、Grailsのようなものではありません。 Railsのrenderメソッドはステータス引数を取ることを知っていますが、Grailsのrenderにはそのような機能はありません。私が見逃しているものはありますか、これを達成する最良の方法は何ですか?
応答ステータスを独自のステートメントで設定するだけで十分です。見栄えが悪くなく、非常に簡単です。
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.')
response.sendError
およびresponse.setStatus
は私が知っている唯一の2つの方法です。もし、あんたが static import HttpServletResponse
、その後、それはその 'un-grails-like'ではありません。