GrailsのScaffoldingとWicketプラグインの共存について

前回からの続きです。

さて、Wicketプラグインをインストールしたはいいが、従来のGrailsのScaffoldingと共存が出来れば、いろいろとおもしろい使い方が出来ると思われます。

まずは、

  • grails-app/conf/*UrlMappings.groovy を削除。
  • ドメインクラスの作成(User.groovy)。
  • ドメインコントローラの作成(UserController.groovy)。
  • 動的scaffoldingの指定(def scaffold = User.class)。

をしてみます。その結果、

となります... orz

次に、上記の状態から、

  • grails-app/conf/*UrlMappings.groovy を復活(ただし、最初に作成された状態で)。

をしてみます。その結果、

となります... orz

推察するに、「grails-app/conf/*UrlMappings.groovy」の有無でこの違いとなるため、手がかりはこのファイルにあるのではないかと。

で、このファイルを見てみます。


class WickethelloUrlMappings {
static mappings = {
"/$controller/$action?/$id?"{
constraints {
// apply constraints here
}
}
}
}
とあり、「http://localhost:8080/wickethello/user」の"/user"、「http://localhost:8080/wickethello/app」の"/app"が上記のURL mappingsにマッチし、マッチした場合は、Grailsサーブレットが動いてしまうのではないかと。で、UserControllerはあるのでリスト表示されるが、AppControllerはないので「404 Not Found」になるのではないかと。

とすると、AppControllerを作成しても意味がないので、「"/app"をURL mappingsにマッチさせなければよいのでは?」となります。

で、「"/app"をマッチさせない」方法が見つけられなかったので、「"/user"がマッチする」方法をとりました。つまり、


class WickethelloUrlMappings {
static mappings = {
"/user/$action?/$id?"{
controller = "user"
}
}
}
という方法です。この変更で実行すると、

となりました(^_^)V

ただし、この方法では、URLマッチさせたい設定をすべて記述する必要があります。コントローラの数が多いと馬鹿になりません(-_-;) 誰か、もっとスマートな方法をご存じありませんか?