2016-04-24 14 views
2

私はコントローラーといくつかのテンプレートを持つモジュールを持っています。ここでは、親モジュールにあるコントローラを参照したいと思います。私はこのようにそれを試してみました:Playの親モジュールで定義されたルートを使用する方法は?

case Some(user) => Redirect(routes.Application.index) 

は残念ながら、私は次のエラーが表示されます

[error]  case Some(user) => Redirect(routes.Application.index) 
[error]         ^

私はこのようにもそれを試してみました:

case Some(user) => Redirect(controllers.Application.index) 

しかし、私はまだ同じエラーを取得します。このエラーは、モジュールの一部であるコントローラを参照しようとしているときにも発生します。

私はこのように試しました:controllers.module.Controller.action

さらに、実際に親のビューにあるモジュールでビューを参照するときも同じ問題があります。

例えば、私はモジュールでテンプレートmainを参照したい:

@views.html.main 

これは、エラーがスローされます。あなたは、「集計逆ルーター」を検討する必要がある

答えて

3

- 例えばhttps://www.playframework.com/documentation/2.5.x/AggregatingReverseRouters

は、私は、サブモジュール「ハンドル」を持っており、そのサブモジュール内のメインプロジェクトからのルートを使用します。だから私は `build.sbt 'に次の文字列を追加します。

lazy val handlebars = (project in file("modules/handlebars")) 
    .enablePlugins(PlayJava) 
    .settings(
    aggregateReverseRoutes := Seq(root) 
    ) 

lazy val root: Project = (project in file(".")) 
    .enablePlugins(PlayJava) 
    .aggregate(handlebars) 
    .dependsOn(handlebars) 

aggregateReverseRoutes:= Seq(root)は、SBTが最初rootプロジェクトからのルートをコンパイルしhandlebarsプロジェクトをコンパイルするときにそれらを使用することを言います。依存関係の再帰のためにroot: Projectのようなrootプロジェクトに暗黙の型を使用する必要もあります。

問題の全文:https://github.com/playframework/playframework/issues/1390

+0

ありがとうございました!コントローラとテンプレートのルートを参照する方法を教えてください。 –

+1

私はJavaを使い、サブプロジェクトのコードは 'controllers.routes.Assets.versioned(new controllers.Assets.Asset(url))。toString()'のように見えます。ここで 'url'は単なる文字列です。私は 'Redirect(controllers.routes.Application.index)'を呼び出す必要があると思います。 –

+0

これは完璧に動作します!どうもありがとうございます。 –

関連する問題