2009-09-15 10 views
51

特定の条件で404ページとステータスコードを返さなければならないコントローラがあります。私はGrailsでこれを行う方法を見つけることができないようです。Grailsコントローラから404/50xステータスコードを返すにはどうしたらいいですか?

response.sendError(HttpServletResponse.SC_NOT_FOUND) 

完全に正常に動作しますが、それは非常にGrailsのようなではありません。同僚は、この方法をお勧めします。私はRailsのレンダリングメソッドがステータス引数を取ることを知っていますが、Grailsのレンダリングにはそのような機能はありません。私が行方不明のものがありますか、これを達成するための最良の方法は何ですか?

答えて

48

応答ステータスを独自のステートメントで設定すると十分です。それはあまりにも醜い見て、非常に簡単ですしていません。

response.status = 404; 

私もこの成功した自分自身とhave seen others do it this wayを使用しました。それは単なる設定者なので、ステータスを設定した後に他の処理を行うこともできます。どのステータスが最後に設定されるかは、HttpServletResponseが実際に応答をクライアントに返すときに使用されるものになります。

+0

リンクは動作しなくなります。 –

+1

@ Al-Punk固定、ヘッドアップのおかげで。 –

8

response.sendErrorresponse.setStatusは私が知っている唯一の2つの方法です。もしあなたがstatic import HttpServletResponseなら、それは「グレイズのようなもの」ではない。

42

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

関連する問題