Play Framework 始めた。
controllers 内にサブパッケージを作成して、その中のクラスおよびメソッドへのルーティングで一度失敗したのでメモ。
controller 直下のクラスにアクセスする
まず基本のおさらい。
パッケージ名:controllers
クラス名:MyClass
メソッド名:index
↑ココにアクセスしたい場合は以下のように routes とテンプレートファイルを編集する。
POST /index controllers.MyClass.index()
@form(action = routes.MyClass.index) {
}
controller 下のサブパッケージのクラスにアクセスする
本題はこのクラスのサブパッケージ内に作成する場合。
パッケージ名:controllers.sub
クラス名:MyClass
メソッド名:index
まず routes を修正する。
POST /index controllers.sub.MyClass.index()
その後に scala.html 内のPOST先 action を修正。
サブパッケージ名をクラス名に付けてみる。
サブパッケージ名をクラス名に付けてみる。
@form(action = routes.sub.MyClass.index) {
}
これでアクセスしてみると…
value sub is not a member of object controllers.routes
「"sub"なんてオブジェクトないよ」とのエラーメッセージ。
調べてみたところ完全修飾名で書けばOKとのこと。
調べてみたところ完全修飾名で書けばOKとのこと。
There is a routes subpackage for each controller package. So the rightfully qualified name of your route is:@controllers.foo.routes.Home.index()
It's done this way to "see" the routes subpackage relatively from any
controllet package as "routes"
[2.0] [Scala] routes for controller sub-packages - Google Groups -
下記の通り修正したら無事通るようになった。
@form(action = controllers.sub.routes.MyClass.index) {
}