我正在玩Play!框架1.2.4并且创建静态404页面没有问题。但是,我想让404页面更有活力。
404页面是否有“控制器”?如果没有,我在哪里可以完成传统控制器中的所有逻辑?
答案 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。也许,它对你有用。