播放迁移到2.6和Scala 2.12。使用WithFilter时的编译问题

问题描述 投票:0回答:1

最近我把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

谁能帮帮我

scala playframework
1个回答
1
投票

WithFilters 对象Global extends ...在Play 2.5中存在,但它已经被废弃了。

我想它在2.6中已经被删除了。你需要重写你的应用程序来删除任何全局状态,这意味着类而不是对象。

请看 2.6 迁移指南

其实去掉全局状态在2.4中已经早早准备好了,见 2.4 迁移指南 以了解详情。

另外,请注意,如果你的Global类混合了WithFilters特性,你现在应该创建一个继承自HttpFilters的Filter类,并把它放在空包中。请阅读这里了解更多细节。

class Filter extends HttpFilters {
  ...
}

注意,在尝试升级到较新的版本之前,最好不要在你的代码中使用任何废弃的API(一般情况下你几乎不应该容忍)。

© www.soinside.com 2019 - 2024. All rights reserved.