不幸的是,还没有一种好的方法来创建和使用Java中的过滤器。但是你可以用Scala轻松完成你所需要的。
创建一个新文件app/filters/AddResponseHeader.scala
包含:
package filters
import play.api.mvc._
import scala.concurrent.Future
import scala.concurrent.ExecutionContext.Implicits.global
object AddResponseHeader extends Filter {
def apply(f: (RequestHeader) => Future[SimpleResult])(rh: RequestHeader): Future[SimpleResult] = {
val result = f(rh)
result.map(_.withHeaders("FOO" -> "bar"))
}
}
并创建包含一个新的文件app/Global.scala
:
import filters.AddResponseHeader
import play.api.mvc.WithFilters
object Global extends WithFilters(AddResponseHeader)
应适用新的响应报头的每一个反应。
UPDATE:有一个Global.java
文件中使用这种方式:
@Override
public <T extends EssentialFilter> Class<T>[] filters() {
return new Class[] {AddResponseHeader.class};
}
,改变上述object AddResponseHeader
到class AddResponseHeader
。
这完美地工作,但我有删除我的Global.java,它看起来像这样:'对象全局扩展WithFilters(AddResponseHeader,new GzipFilter())' –
有没有任何机会可以添加到'Global.java'? –
发表了一个方法来做到这一点的答案。 –