0

再生2.4.xから2.5.5を再生するようにアップグレード中です。私たちはそうのように、オブジェクトされているコントローラの かなり大量に持っている:オブジェクトを使用するSomeControllerがPlayフレームワーク2.5のコントローラを拡張する

object TranslationsController extends Controller { ... } 

しかし、2.5に切り替えているので、私たちは今、この (それはかなり巨大プロジェクトだ)のようなエラーの数百を取得:

type TranslationsController is not a member of package controllers 

私たちのコントローラのいくつか/ほとんどがオブジェクトであり、 はクラスではありません。私はこれが依存性注入と関係があることを理解しています。 しかし、コントローラのかなり大きなパーセンテージであるは、に依存しません。もちろん

、我々はそれをコンパイルするためにそのようにそれを書き換えることができます:

class TranslationsController @Inject() extends Controller { ... } 

が、それは本当に無意味です? パラメータ、を取らない不変クラス/オブジェクトは、をオブジェクトにする必要があります。それはcase class None()case object Noneのようなものです。もちろん、後者はすべての場合において好ましいものでなければならない。

ここで大したことは、これらの コントローラがオブジェクトであることを前提とするテスト(〜1000件)が多かったので、オブジェクト - >クラス のいずれかを置き換えることができないということです。クラスで動作させるには、最初にval controller = new TranslationsControllerを実行するために、すべてのテストを書き直す を最初に書き直す必要があります。これは多くの作業(およびトン数 の定型文)です。

まだオブジェクトを使用する方法があれば、本当に感謝します。 ファイルに.routesファイルのいくつかの構文がありますか、または簡単な 回避策がありますか?つまり、一度コントローラに依存すると、 クラスになりますが、 のメリットがなくても、1つのコントローラで100コントローラにするのはかなり面倒です。

答えて

1

Playに古いルートジェネレーターを使用するように指示した場合、それらのコントローラーを保持できるはずです。あなたのbuild.sbtプット:

routesGenerator := StaticRoutesGenerator 

し、あなたのプロジェクトを再読み込み

関連する問題