Как запустить httpFilters в playframework 2.4
Я пытаюсь создать приложение на Playframework 2.4 с macwire DI, и у меня проблема с httpFilters из Play! Вот пример того, что я пытаюсь сделать
class ExampleFilter extends Filter {
def apply(nextFilter: RequestHeader => Future[Result])
(requestHeader: RequestHeader): Future[Result] = {
nextFilter(requestHeader).map { result =>
result.withHeaders("Example" -> "test")
}
}
}
class Filters(ex:ExampleFilter) extends HttpFilters {
val filters = Seq(ex)
}
DI модуль
trait Module extends EhCacheComponents with BuiltInComponents {
lazy val exampleFilter = wire[ExampleFilter]
lazy val filters = wire[Filters]
Класс погрузчика
class Loader extends ApplicationLoader {
def load(context: Context) = {
new MyComponents(context).application
}
}
class MyComponents(context: Context) extends BuiltInComponentsFromContext(context) with Module {
lazy val router: Router = wire[Routes] withPrefix "/"
}
часть application.conf
play.http.filters = Filters
и ExampleFilter не работает. Я получаю ответ без заголовка "Пример"
2 ответа
Похоже, что я нашел решение
class MyComponents(context: Context) extends BuiltInComponentsFromContext(context) with Module {
override lazy val httpFilters = Seq(ExampleFilter)
lazy val router: Router = wire[Routes] withPrefix "/"
}
просто переопределите httpFilters из черты BuiltInComponents (как выше) и измените ExampleFilter на объект, и он работает
Похоже, ваш Filters
находится в неназванном (по умолчанию) пакете. Положите его где-нибудь в упаковке, как appfilters.Filters
,
Так
package appfilters
...
class Filters(ex:ExampleFilter) extends HttpFilters {
...
а также
play.http.filters = appfilters.Filters