2

在玩!框架 2.0.4,我遇到了 404 状态代码处理的问题。在Global.java中,我将重写onHandlerNotFound以返回自定义模板:

@Override
public Result onHandlerNotFound(RequestHeader header) {
   return Controller.notFound(views.html.not_found.render());
}

它适用于未知路线,但如果我Controller.notFound()从请求中调用,它不会返回任何内容。

我尝试过深入调试,它通过控制器方法,然后通过onHandlerNotFound,所以它应该返回正确的Result.

所以我的问题是,这是正确的行为吗?notFound()如果是这样,除了重复前面的代码之外,如何将每个语句干净地重定向到正确的模板?

4

1 回答 1

0

Controller.notFound()基本上返回一个 HTML 404 响应对象(如new Object())。它为您设置标题,可能还有其他一些东西。(它的 javadoc 说:“生成 404 NOT_FOUND 简单结果”)

Global.onHandlerNotFound()更像是一个try {} catch(HandlerNotFoundException() {}.

如果你打电话Controller.notFound(),你应该知道你在做什么。您甚至可以将一些内容传递给它以在页面上再次显示。(你在你的 中做什么onHandlerNotFound)。

如果你真的想执行Global.onHandlerNotFound,为什么不直接调用呢?否则,如果您通常不调用Controller.notFound()但只是notFound()YourController您也可以覆盖此方法并调用Global.onHandlerNotFound().

要明确回答您的问题,是的,这是正确的行为。这是两个不同的东西。

于 2013-01-08T09:37:22.703 回答