2

Playframework 2.0(scalaバージョン)を使用していて、コントローラーの1つで「BadRequest」メソッドをオーバーライドしたい。私のコントローラーは特性を拡張します:

package controllers

import play.api._
import play.api.mvc._
import play.api.libs.json.JsValue
import play.api.libs.json.JsObject

/*
 * Simple trait to factor common code used by all controllers...
 */
trait AbstractController extends Controller {
 // Personal useful methods
 // ...
 // Implementation of an override of BadRequest ?
}

私のコントローラー:

package controllers

import play.api._
import play.api.mvc._
import play.api.Play.current
import play.api.libs.json._
import play.api.libs.json._
import play.api.libs.concurrent.Promise

object MyController extends AbstractController
{

 def myFunc (s: String) = {
    BadRequest(s) // should return what I'll define in MY BadRequest implementation
  }
}

私がやりたいこと: AbstractControllerを拡張するコントローラーに対してのみ、BadRequestの新しいcomportmentを実装します(つまり、エラーの詳細を含むJSONを返します) 。Playのドキュメントでは、グローバルオブジェクト(GlobalSettingsを拡張)でこれを実行し、onBadRequestメソッドをオーバーライドすることを提案しています。しかし、私はそれほどグローバルな方法を望んでいません...特定のコントローラーでのみ。

最善の解決策は何ですか?

ご協力いただきありがとうございます。グレッグ

4

1 に答える 1

1

ここで何が問題なのかよくわかりません。オーバーライドするだけで何が問題になりますか?

trait AbstractController extends Controller {
  override val BadRequest = ... 

}
于 2012-10-04T09:48:54.990 に答える