【问题标题】:play framework 2.1.5 onHandlerNotFound not work播放框架 2.1.5 onHandlerNotFound 不起作用
【发布时间】:2014-07-08 02:49:32
【问题描述】:

我的play framework 2.1.5在Override GlobalSettings onHandlerNotFound和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 request, Throwable t)

我不知道为什么,我按照这张票所说的做了: http://www.playframework.com/documentation/2.1.1/JavaGlobal

谁能解释一下?

【问题讨论】:

    标签: playframework playframework-2.0


    【解决方案1】:

    我从您的链接中复制了以下代码,我猜您忘记输入@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 不是抽象类或接口,我该如何覆盖该方法?顺便说一句,当我 pu @Override 时,IDE 说“Global 类型的方法 onError(RequestHeader request, Throwable t) 必须覆盖或实现一个 aupertype 方法”,我无法编译代码。
    • @user3231931 这在 Play 2.2 中对我有用,但我刚刚升级到 Play 2.3.8,现在它抛出了一个错误,因为我无法在 GlobalSettings 中覆盖 OnError。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多