最近我把play升级到2.6,scala升级到2.12。下面的代码在以前的版本中工作得很好,但现在在升级版本中出现了编译错误。
object Global extends WithFilters {
override def doFilter(next: EssentialAction): EssentialAction = {
Filters(super.doFilter(next), CustomOverridingFilter)
}
override def onError(request: RequestHeader, throwable: Throwable) = {
//Some code here
super.onError(request, throwable)
}
override def onStart(app: Application) = {
//Some code here
super.onStart(app)
}
override def onStop(app: Application) = {
//Some Code Here
}
}
object CustomOverridingFilterextends Filter {
override def apply(nextFilter: (RequestHeader) => Future[Result])
(requestHeader: RequestHeader): Future[Result] = {
//Some Code Here
}
}
得到编译错误如下:未找到:类型WithFiltersvalue doFilter不是AnyRefvalue的成员onStart不是AnyRef的成员。
播放:2.6Scala.2.12 2.12
谁能帮帮我
WithFilters
对象Global extends ...在Play 2.5中存在,但它已经被废弃了。
我想它在2.6中已经被删除了。你需要重写你的应用程序来删除任何全局状态,这意味着类而不是对象。
请看 2.6 迁移指南
其实去掉全局状态在2.4中已经早早准备好了,见 2.4 迁移指南 以了解详情。
另外,请注意,如果你的Global类混合了WithFilters特性,你现在应该创建一个继承自HttpFilters的Filter类,并把它放在空包中。请阅读这里了解更多细节。
class Filter extends HttpFilters {
...
}
注意,在尝试升级到较新的版本之前,最好不要在你的代码中使用任何废弃的API(一般情况下你几乎不应该容忍)。