2012-02-20 27 views
7

@withアノテーションが何をしているのかよくわかりません。プレイフレームワークサイト内@withアノテーションは正確に何をしますか? (Play Framework)

は、それが書かれている:

我々は、対応するインターセプタ

を呼び出すために プレイを伝えるために@Withアノテーションを使用してコントローラに注釈を付けることができ、それは同じです継承?指定されたクラスパラメータの@beforeを呼び出しますか?それは正確に何をするのですか?

答えて

7

最善の方法を行うことができ、それは一種のあなたのインターセプタのためのあなたのコントローラレベルでの多重継承を与えることです。インターセプタは@Before,@Afterの注釈です。

そのため

  • @Before注釈
  • @Before

あなたは可能性が使用して、共有アクションのあなたの静的データを注入することで対処コントローラを定義するには、あなたの安全な領域を扱ってコントローラを定義することができますすべてのアクションを含むコントローラを定義して、@With注釈を使用して、上記の2つのコントローラを使用します。つまり、コードをきれいに分けることができ、継承に頼って@Beforeアノテーションを実行する必要はありません。

6

は、あなたが2つのコントローラがあるとします。

  • A
  • BAで定義されたすべてのものを注射アクションが有効になります@With(A.class)

で注釈を付けます、@Beforeまたは他のコントローラのアクション注入の注釈を持っていますBのアクションメソッドを呼び出すとき。

これは種類の継承です。ただし、継承を使用すると、最大で1つのクラスに拡張できます。しかし、あなたは、私はそれを記述することができます@With({A.class, Z.class, ...})

+0

私はあなたを正しく理解していれば、私はクラス(暗黙的に)にある任意のメソッドを呼び出すことができますか? – james

+0

いいえ、インタセプタ((at))Before、(at)、After(at)finalなど)が動作します –

関連する問題