Воспроизвести переход на 2..6 и Scala 2.12: проблема компиляции при использовании WithFilter - PullRequest
1 голос
/ 05 мая 2020

Недавно я обновил игру до 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
}
}

Получение ошибки компиляции, как показано ниже: не найдено: значение типа WithFilters doFilter не является членом AnyRef значение onStart равно не является членом AnyRef

Играть: 2.6 Scala: 2.12

Кто-нибудь может мне помочь

1 Ответ

1 голос
/ 05 мая 2020

WithFilters существует в Play 2.5, но уже устарело.

Думаю, он был удален в версии 2.6. Вам необходимо переписать свое приложение, чтобы удалить любое глобальное состояние, что означает классы вместо объектов.

См. 2.6 руководство по миграции

Фактически, удаление глобального состояния было подготовлено ранее в 2.4, см. подробности в руководстве по миграции 2.4 :

Также имейте в виду, что если ваш глобальный класс смешивает черту WithFilters, теперь вы должны создать класс Filter, который наследуется от HttpFilters и помещает его в пустой пакет. Подробнее читайте здесь.

class Filter extends HttpFilters {
  ...
}

Обратите внимание, что перед попыткой обновления до более новой версии всегда рекомендуется не использовать устаревшие API-интерфейсы в своем коде (что вы вряд ли должны терпеть в целом).

...