5

私はPlayで働いています!フレームワーク 1.2.4 であり、静的 404 ページの作成に問題はありません。ただし、404 ページをもう少し動的にしたいと考えています。

404 ページの「コントローラー」はありますか? そうでない場合、従来はコントローラーで行っていたすべてのロジックをどこで実行すればよいでしょうか?

4

5 に答える 5

5

404 ページのコントローラーはありません。Play はルートを見つけようとしますが、これが不可能な場合は、404 ページを示す NotFound Result をスローします。

このジョブを実行する catch all コントローラーを作成して、このコントローラーが Play 自体ではなく 404 ケースを処理するようにすることができます。

 *       /.*     NotFoundRouter.notFoundPage
于 2012-09-03T06:32:42.883 に答える
3

Nasir が言ったように、どのコントローラーでも NotFound アクションで応答して 404 応答を返すことができます。通常、適切な 200 Http 応答コードの Ok アクションで応答します。例 (プレイ 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))
      }
    }
  }
}
于 2012-12-17T00:25:14.073 に答える
1

GlobalSettings.onHandlerNotFound() を使用して、404 応答を受け取るリクエストを処理できます。

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

于 2012-09-03T14:41:22.617 に答える
0

app/views/errors/404.htmlテンプレートファイル内でコーディングを行うことができます。

于 2012-09-17T16:07:55.963 に答える