2

劇中!フレームワーク 2.0.4 で、404 ステータス コードの処理に関する問題が発生しています。では、カスタム テンプレートを返すようにGlobal.javaオーバーライドしています。onHandlerNotFound

@Override
public Result onHandlerNotFound(RequestHeader header) {
   return Controller.notFound(views.html.not_found.render());
}

不明なルートではうまく機能しますController.notFound()が、リクエストから呼び出しても何も返されません。

少し深くデバッグしようとしましたが、コントローラーメソッドを通過してから通過するonHandlerNotFoundため、 right が返されますResult

私の質問は、それは正しい動作ですか? notFound()もしそうなら、前のコードを繰り返すこととは別に、すべてのステートメントを正しいテンプレートにきれいにリダイレクトする方法は?

4

1 に答える 1

0

Controller.notFound()基本的に HTML 404 応答オブジェクト (のようなnew Object()) を返します。それはあなたとおそらく他のもののためにヘッダーを設定します。(javadoc には次のように書かれています:「404 NOT_FOUND 単純な結果を生成します」)

一方、Global.onHandlerNotFound()は に似ていtry {} catch(HandlerNotFoundException() {}ます。

を呼び出す場合はController.notFound()、自分が何をするかを知っている必要があります。また、コンテンツを渡してページに再度表示することもできます。(あなたがあなたの中で何をするかonHandlerNotFound)。

本当に を実行したいのならGlobal.onHandlerNotFound、それを呼び出さないのはなぜですか? それ以外の場合は、通常は呼び出さないController.notFound()が、このメソッドを上書きして呼び出すこともできnotFound()ます。YourControllerGlobal.onHandlerNotFound()

あなたの質問に明確に答えるには、はい、それは正しい動作です。これらは2つの異なるものです。

于 2013-01-08T09:37:22.703 に答える