是否有404页面的控制器(Play!Framework)

时间:2012-09-03 05:56:04

标签: playframework playframework-1.x

我正在玩Play!框架1.2.4并且创建静态404页面没有问题。但是,我想让404页面更有活力。

404页面是否有“控制器”?如果没有,我在哪里可以完成传统控制器中的所有逻辑?

5 个答案:

答案 0 :(得分:5)

404页面没有控制器。 Play尝试查找路径,如果不可能,则抛出显示404页面的NotFound结果。

您可以创建一个捕获所有执行此作业的控制器,以便此控制器将处理404案例而不是播放本身。

 *       /.*     NotFoundRouter.notFoundPage

答案 1 :(得分:3)

正如Nasir所说,您可以在任何控制器中使用NotFound Action响应以返回404响应。我们通常使用Ok Action响应正确的200 Http响应代码。一个例子(玩2 - 不确定它是否适用于游戏1):

object BadgeEvidence extends Controller {
  def index(badgeName: String, earner: String) = Action {
    val badgeResponse = BadgeDao.getBadgeDetail(badgeName)
    val evidence = BadgeDao.getBadgeEvidence(badgeName, earner)
    if (evidence.length == 0) {
        NotFound(earner + " is not valid or has not earned " + badgeName);
    } else {
      badgeResponse match {
        case badgeDetail: BadgeRow => Ok(views.html.badgeEvidence(earner, badgeDetail, evidence))
        case errorMessage: String => Ok(views.html.showError(errorMessage))
      }
    }
  }
}

答案 2 :(得分:1)

您可以使用GlobalSettings.onHandlerNotFound()来处理将获得404响应的请求。

http://www.playframework.org/documentation/api/2.0.3/java/play/GlobalSettings.html

答案 3 :(得分:0)

您可以在app/views/errors/404.html模板文件中进行一些编码。

答案 4 :(得分:0)

好吧,我不确定你想要它有多动态。在内心深处,NotFound类负责加载404.html。也许,它对你有用。