1

Play-2.1に移行した後、routesコンパイラがroutesファイルに対して機能しなくなるという問題に悩まされました。Play-2.0.4では完全に問題ありませんでしたが、ビルドエラーが発生し、回避策が見つかりません。

私のプロジェクトではケーキパターンを使用しているので、コントローラーのアクションは<package>.<controller class>.<action>、ではなく、を介して表示され<package>.<component registry>.<controller instance>.<action>ます。新しいPlayルートコンパイラは、最後の2つを除くすべてのアクションパスコンポーネントを使用して、マネージドソースで使用されるパッケージ名を形成します( https://github.com/playframework/Play20/blob/2.1でコードを取得できる限り).0 / フレームワーク/src/routes-compiler/src/main/scala/play/router/RoutesCompiler.scala)。私の場合、パッケージ名としてが選択された場合に状況<package>.<component registry>が発生し、ビルド中にエラーが発生します。

[error] server/target/scala-2.10/src_managed/main/com/grumpycats/mmmtg/componentsRegistry/routes.java:5: componentsRegistry is already defined as object componentsRegistry
[error] package com.grumpycats.mmmtg.componentsRegistry;

この問題を実証するためにサンプルプロジェクトを作成しました:https ://github.com/rmihael/play-2.1-routes-problem

コントローラのケーキパターンを落とさずに、この問題をなんとかして回避することは可能ですか?この問題のためにPlay2.1を続行できないのは残念です。

4

2 に答える 2

2

評判のため、コメントを作成できません。

規則では、クラスとオブジェクトは大文字で始まります。この規則は、パターン マッチングにも適用されます。文字列を見ると、パッケージ オブジェクトと通常のオブジェクトの間に違いはないようです (ケースは別として)。Play 2.1 がどのように処理するかはわかりません。そのため、これは回答ではなくコメントです。

于 2013-02-08T07:38:24.057 に答える
0

ルーターで新しい@構文を試すことができます。Globalこれにより、クラスからインスタンスを作成できます。引き続き を指定<package>.<controller class>.<action>しますが、 ではGlobal別の場所 (コンポーネント レジストリなど) から取得します。

「マネージド コントローラー クラスのインスタンス化」の下に、ちょっとした追加情報があります: http://www.playframework.com/documentation/2.1.0/Highlights

このデモ プロジェクトは、その使用法を示しています: https://github.com/guillaumebort/play20-spring-demo

于 2013-02-09T11:58:24.657 に答える