1

我已经使用 onStart 方法一段时间了,它没有问题,但是当我尝试覆盖 onBadRequest 时,出现错误:

这是课程:

import models.User;
import play.Application;
import play.GlobalSettings;
import play.Logger;
import play.mvc.Result;
import views.html.error_page;

import static play.mvc.Results.badRequest;


public class Global extends GlobalSettings {

    @Override
    public void onStart(Application app){
        Logger.info("Application started!");
        // Check if the database is empty
        if(User.find.findRowCount()==0){
            Ebean.save((List) Yaml.load("initial-data.yml"));
        }
    }

    @Override
    public void onStop(Application app){
        Logger.info("Application stopped!");
    }

    @Override
    public Result onBadRequest(String uri, String error) {
        Logger.info("Bad Request");
        return badRequest(error_page.render());
    }

}

前两个工作没有问题,但第三个导致错误。

是 API 条目:

4

2 回答 2

1

您使用了旧的 API。

这是 Play 2.1.1 的 API:

http://www.playframework.com/documentation/api/2.1.1/java/play/GlobalSettings.html

  • 当找到一个动作,但请求解析失败时调用。

    Result onBadRequest(Http.RequestHeader request, java.lang.String error)
    
  • 发生异常时调用。

    Result onError(Http.RequestHeader request, java.lang.Throwable t)
    
于 2013-05-28T17:58:21.023 回答
0

这有效:

@Override
public Result onError(Http.RequestHeader request, Throwable t){
    Logger.error("Error thrown: " + t.getMessage());
    return internalServerError(error_page.render());
}

这个页面很有用。我仍然很困惑为什么 API 是错误的。

我希望这可以帮助有类似问题的人。

于 2013-05-28T16:53:55.037 回答