QA@IT
«回答へ戻る

回答を投稿

参考までに、Play 2.3.6で同様に試してみましたが指定したエラーページが表示されました。

  • "app/views/index.scala.html" を コピーして "app/views/errorpage.scala.html"を作成。
  • application.conf の global設定のコメントアウト解除
  • app/Global.java を作成
  • index() で適当に例外を起こす(String s = null; s.toString();)

onErrorが呼び出されていない(実はエラーが発生していない)という可能性がありそうですので、
onErrorメソッド内でさらにエラーが起こるようにしてみてログにどうでるか確認してはどうでしょうか。
※ その場合私の環境では unexpected exception というページが表示されます(Compile Error時に似た画面)。

Global.java

import play.*;
import play.mvc.*;
import play.mvc.Http.*;
import play.libs.F.*;
import static play.mvc.Results.*;
import views.html.*;

public class Global extends GlobalSettings {

  @Override
  public Promise<Result> onError(RequestHeader request, Throwable t) {
    return Promise.<Result> pure(internalServerError(errorpage.render("fatal error")));
  }
}
参考までに、Play 2.3.6で同様に試してみましたが指定したエラーページが表示されました。


* "app/views/index.scala.html" を コピーして "app/views/errorpage.scala.html"を作成。
* application.conf の global設定のコメントアウト解除
* `app/Global.java` を作成
* index() で適当に例外を起こす(`String s = null; s.toString();`)

onErrorが呼び出されていない(実はエラーが発生していない)という可能性がありそうですので、
onErrorメソッド内でさらにエラーが起こるようにしてみてログにどうでるか確認してはどうでしょうか。
※ その場合私の環境では unexpected exception というページが表示されます(Compile Error時に似た画面)。


`Global.java`
```java
import play.*;
import play.mvc.*;
import play.mvc.Http.*;
import play.libs.F.*;
import static play.mvc.Results.*;
import views.html.*;

public class Global extends GlobalSettings {

  @Override
  public Promise<Result> onError(RequestHeader request, Throwable t) {
    return Promise.<Result> pure(internalServerError(errorpage.render("fatal error")));
  }
}
```