Playframework play framework 2.1.5 onHandlerNotFound不工作

Playframework play framework 2.1.5 onHandlerNotFound不工作,playframework,playframework-2.0,Playframework,Playframework 2.0,我的play framework 2.1.5在重写HandlerNotFound和onError上的全局设置时遇到问题 public class Global extends GlobalSettings { public Result onHandlerNotFound(RequestHeader request){ return play.mvc.Results.notFound("request" + request.uri());

我的play framework 2.1.5在重写HandlerNotFound和onError上的全局设置时遇到问题

 public class Global extends GlobalSettings {
        public Result onHandlerNotFound(RequestHeader request){
            return play.mvc.Results.notFound("request" + request.uri());
        }  
        public Result onError(RequestHeader request, Throwable t) {
            return play.mvc.Results.internalServerError(
               "---onError---"
            );
        }  
    }
我访问一个不存在的url,它显示播放原始错误页面,但不调用onHandlerNotFound方法。

此外,我在其他控制器代码中创建了一个错误,例如

   try {
        temp = null;
        temp.success = true;
    } catch (Exception e) {
        logger.error("Error occurred", e);
    }
它显示原始页面,但没有调用方法onError(RequestHeader请求,Throwable t)

我不知道为什么,我照这张票上说的做了:


有人能解释一下吗?

我从你的链接复制了下面的代码,我猜你忘了把
@Override
。因为这会告诉应用程序您要覆盖默认的onHandlerNotFound,所以onError也是如此

@Override
public Result onHandlerNotFound(RequestHeader request) {
   return Results.notFound(
      views.html.pageNotFound(request.uri())
   );
}
@Override
public Result onError(RequestHeader request, Throwable t) {
  return internalServerError(
     views.html.errorPage(t)
  );
}  

您好,但是GlobalSettings不是抽象类或接口,我如何重写该方法?顺便说一句,当我使用@Override时,IDE会说“类型为Global的方法onError(RequestHeader request,Throwable t)必须重写或实现一个aupertype方法”,我无法编译代码。@user3231931这在Play 2.2中对我有效,但我刚刚升级到Play 2.3.8,现在我无法在GlobalSettings中重写OneError,因此它抛出了一个错误。