java - Play Framework - 为 Assets 定义 404 页面

标签 java playframework

我正在使用 Play 2.3 (Java) 框架,我想设置 404 页面。 我知道 GlobalSettings 的 onHandlerNotFound 方法。

但是 Assets 似乎有自己的处理方式 - Assets 类不会调用我的 onHandlerNotFound 方法,只发送空的 404 状态。

我可以以某种方式拦截 Assets 中的错误并设置自己的处理方式吗?

在我看来,任何不存在的 Assets 都会返回空的 404 页面,这是相当有限的。

感谢您的建议。

编辑:一些代码 从路线:

GET     /assets/*file               controllers.Assets.at(path="/public", file)

来自全局设置:

@Override
public Promise<Result> onHandlerNotFound(RequestHeader arg0) {
   return Promise.<Result>pure(Results.notFound(
      errPage("notfound")));
}

最佳答案

由于找到了处理程序,因此在全局中重写onHandlerNotFound将不起作用。

对于内置的资源 Controller ,当它找不到文件时,它会使用项目的 HttpErrorHandler 的 onClientError 来获取要显示的结果。

您可以在此处查看自定义它:

Java:https://www.playframework.com/documentation/2.5.x/JavaErrorHandling

斯卡拉:https://www.playframework.com/documentation/2.5.x/ScalaErrorHandling

这是一个 Scala 示例:

import play.api.http.HttpErrorHandler
import play.api.mvc._
import play.api.mvc.Results._
import scala.concurrent._
import javax.inject.Singleton;

@Singleton
class ErrorHandler extends HttpErrorHandler {

  def onClientError(request: RequestHeader, statusCode: Int, message: String) = {
    Future.successful(
      // Your custom error page can go here.
      Status(statusCode)("A client error occurred: " + message)
    )
  }
}

关于java - Play Framework - 为 Assets 定义 404 页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29728537/

相关文章:

java - 正则表达式检查字符串是否包含 '1-n' 整数,然后包含 '0-m' 字母

java - 在android中请求最近的城市

java - Play 2.2.1 Java : Whats the equivalent of @before filters from play 1. X?

java - facebook什么时候登录完成并返回成功?(Android)

java - 如果仅以 Jar 文件形式存在类文件,如何进行调试

java - 复制特定 Java 应用程序的 Java 首选项文件

scala - 新的 play-2.1.1 安装中缺少 sbt/boot/directory。在 Linux Mint 14 上安装 Playframework

Java Play akka 模块创建

注释的 Playframework 文档

java - 理解java play中的异步调用