0
놀이방 웹 프레임 워크는 내가하고 싶은서브 클래스에서 macwire 주사제를 재정의하는 방법을
package play.api
trait BuiltInComponents {
...
lazy val httpFilters: Seq[EssentialFilter] = Nil
<stuff that uses httpFilters>
...
}
요청 (GZIP, 고르, 로깅 등)에 공통 처리를 수행하는 "필터"의 목록을 주입 할 수 있습니다 이 필터들의 일반적인 세트 (및 다른 것들). 서브 클래스에 의해 서브 클래스
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
을 적절하게 다시 정의합니다. Macwire는 모호한 유형에 대해 불평합니다.
옵션으로 추가 된 필터 목록을 얻으려면 어떻게해야합니까?
문제는 macwire가 어느 Seq [EssentialFilter]를 다른 곳에서 선택할지 모르기 때문입니다. –
@ PaulDraper, 정확히 "그 밖의 _"인 곳을 말할 수 있습니까? 나는'게으른 발'을 비공개로 만드는 것이 이것을 피해야한다고 생각한다. – SergGr