web-dev-qa-db-ja.com

Play Framework:サブプロジェクトなしでルートを複数のファイルに分割

私のプレイプロジェクトは大規模で、ルートファイルは約1Mbです。さて、scalaがコンパイルされると、ルーティングと逆ルーティングのために「メソッドコードが大きすぎます」という例外が発生しますscalaルートファイルから作成されたファイル(それも大きいです)。

したがって、サブプロジェクトなしでルートファイルを分割する必要があります。実際、コンポーネントは相互に依存しているため、プロジェクトをサブプロジェクトに分割することはできません。

私は2つの方法を試しました:

  • 私はtechnical.routesという新しいconfファイルを追加し、中にいくつかのルートを追加し、「routes」から同じルートを削除し、「-> technical.Routes」でファイルをインポートしました。すべてがコンパイルされます。以前の例外はありませんが。コンパイルを停止すると、何度も何度も開始し、終了しないため、何かが間違っています。

  • 私はtechnical.routesという新しいconfファイルを追加し、内部にいくつかのルートを追加し、「routes」から同じルートを削除しましたが、メインのルートファイルにインポートする代わりに、confファイルに追加しました: "application.router ="ルート、technical.routes ""。ただし、ここで宣言する必要があるルートは1つだけなので、機能しません。

どうすればいいですか?

24
memainjm

さて、最初の方法は機能しています。私は最初から始めて、それはうまくいきました。コンパイルコマンドの前にクリーンコマンドを実行しました。古いコンパイル済みファイルが私の問題の原因だったようです。

ルートファイルのパッケージ名を重複させることはできないことに注意してください。例えば。この例では、technical.routesファイルにはcontrollers.technical内のすべてのルートが含まれており、メインルートファイルにはcontrollers.technicalパッケージ内のルートを含めることはできません。

conf/routesコンテンツ:

# Routes
# This file defines all application routes (Higher priority routes first)
# ~~~~

->  /technical technical.Routes

GET     /        controllers.Dashboard.index()

conf/technical.routesコンテンツ:

# Routes
# ~~~~

GET     /        controllers.technical.App.index()
25
memainjm

ファイル名がtechnical.routesの場合は、ファイルを含めて、technical.Routes(キャップ​​)を記述します。

->の後のパラメータはURLプレフィックスであるため、technical.routesファイルの任意のURLにアクセスするには、プレフィックスを追加する必要があります。

http://127.0.01/technical/ {technical.routesファイルで定義されたURL}

4
Bidya