Playframework 调用Controller.notFound()会通过onHandlerNotFound,但不会';不要考虑结果

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

在游戏中!Framework2.0.4,我遇到了404状态代码处理的问题。 在
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()


要明确回答您的问题,是的,这是正确的行为。这是两件不同的事情。

当然,我只是想知道是否有我不知道的替代方案