I am trying to build application on Playframework 2.4 with macwire DI, and I have problem with httpFilters from Play ! Here is an example what I'm trying to do
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 module
trait Module extends EhCacheComponents with BuiltInComponents {
lazy val exampleFilter = wire[ExampleFilter]
lazy val filters = wire[Filters]
Loader class
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 "/"
}
part of application.conf is
play.http.filters = Filters
and ExampleFilter doesn't work. I'm getting response without "Example" header
It looks like your
Filters
is in the unnamed (default) package. Put it somewhere in the package, likeappfilters.Filters
.So
and