0
プレイWebフレームワークは、私が持っていると思いサブクラスでmacwire注射剤を上書きする方法
package play.api
trait BuiltInComponents {
...
lazy val httpFilters: Seq[EssentialFilter] = Nil
<stuff that uses httpFilters>
...
}
要求(GZIP、CORS、ログなど)に共通の処理を行うには、「フィルタ」のリストを注入することができますこれらのフィルタの共通セット(および他のもの)。サブクラスによってサブクラス
package example.foo
import example.MyCommonComponents
trait MyFooComponents extends MyCommonComponents {
...
}
で使用されるか、または追加することができ
package example
import play.api.BuildInComponents
trait MyCommonComponents extends BuiltInComponents {
...
override lazy val filters = Seq(
wire[Filter1],
wire[Filter2],
wire[Filter3]
)
...
}
私が試してみました
package example.bar
import example.MyCommonComponents
trait MyBarComponents extends MyCommonComponents {
...
override lazy val filters = super.filters :+ wire[Filter4]
...
}
物事
- 上記のコード。遅延のある
super
は使用できません。 httpFilters
をdef
に変更してください。 BuiltInComponentsのために安定した値にする必要があります。lazy val httpFilters = filters
とdef filters: Seq[EssentialFilter] = ...
を追加し、filters
を適切に上書きして、lazy val httpFilters = filters
とを追加します。- Macwireはあいまいなタイプについて不平を言う。
オプションで追加されたフィルタのリストを得るにはどうすればよいですか?
問題は、macwireがどのSeq [EssentialFilter]を他の場所で選択するかを知りません。 –
@PaulDraper、 "どこに?"と正確にどこにあるのか教えてください。私は 'レイジーヴァル'を非公開にすることはこれを避けるべきだと思います – SergGr