我一直在使用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());
}
}
前两个没问题,但第三个导致错误。
Here是API条目:
答案 0 :(得分: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)
答案 1 :(得分:0)
这有效:
@Override
public Result onError(Http.RequestHeader request, Throwable t){
Logger.error("Error thrown: " + t.getMessage());
return internalServerError(error_page.render());
}
This页面很有用。我仍然困惑为什么API错了。
我希望这有助于解决类似问题的人。