Playframework 调用Controller.notFound()会通过onHandlerNotFound,但不会';不要考虑结果
在游戏中!Framework2.0.4,我遇到了404状态代码处理的问题。 在Playframework 调用Controller.notFound()会通过onHandlerNotFound,但不会';不要考虑结果,playframework,playframework-2.0,Playframework,Playframework 2.0,在游戏中!Framework2.0.4,我遇到了404状态代码处理的问题。 在Global.java中,我将覆盖onHandlerNotFound以返回自定义模板: @Override public Result onHandlerNotFound(RequestHeader header) { return Controller.notFound(views.html.not_found.render()); } 它对未知路由很有效,但如果我从请求调用Controller.notFou
Global.java
中,我将覆盖onHandlerNotFound
以返回自定义模板:
@Override
public Result onHandlerNotFound(RequestHeader header) {
return Controller.notFound(views.html.not_found.render());
}
它对未知路由很有效,但如果我从请求调用Controller.notFound()
,它不会返回任何内容
我试着进行了一点深入的调试,它通过controller方法,然后通过onHandlerNotFound
,因此它应该返回正确的结果
所以我的问题是,这是正确的行为吗?如果是这样,除了重复前面的代码外,如何将每个notFound()
语句干净地重定向到正确的模板?Controller.notFound()
基本上返回一个HTML 404响应对象(如新对象()
)。它为您和其他一些东西设置标题。(javadoc说:“生成一个404 NOT_FOUND的简单结果”)
而Global.onHandlerNotFound()
更像是一个try{}捕获(HandlerNotFoundException(){}
)
如果调用Controller.notFound()
,您应该知道自己在做什么。您甚至可以将一些内容传递给它以再次显示在页面上。(您在onHandlerNotFound中所做的操作
)
如果你真的想执行Global.onHandlerNotFound
,为什么不直接调用它呢?否则,如果你通常不调用Controller.notFound()
,而只是在YourController
中调用notFound()
你也可以覆盖这个方法并调用Global.onHandlerNotFound()
要明确回答您的问题,是的,这是正确的行为。这是两件不同的事情。当然,我只是想知道是否有我不知道的替代方案