1

コントローラーが GSP ファイルを見つけるために使用する開始フォルダーを構成する方法はありますか?

単一の Grails プロジェクト (v2.0.1) があり、関数を反映するパッケージにコントローラーとビューを整理できるようにしたいと考えています。

つまり、私のコントローラー:

uk.co.myCompany.function1.DashboardController.groovy
uk.co.myCompany.function2.DashboardController.groovy

私のビューのフォルダー構造:

views -> function1 -> dashboard -> index.gsp
views -> function2 -> dashboard -> index.gsp

を呼び出すたびにrender (view: 'index')DashboardControllerを探しviews/dashboard/index.gspます。

代わりに呼び出すように変更できますrender (view: '../function1/dashboard/index')が、これは少し不要なようです。さらに、これらのコントローラーには他にも多数のアクション/ページがあり、すべてのアクションにこれを入力したくないことは明らかです。

デフォルトのフォルダを指定するコントローラ クラスの単純な注釈が理想的です。何か案は?

4

1 に答える 1

1

コントローラーを機能ごとに整理したい場合で、コントローラーに同じ名前を付けることができる場合は、Grails の新しい名前空間サポートを使用することをお勧めします。

機能ごとに 1 つのパッケージを用意する代わりに、プラグインを作成して、コントローラー名をプラグインごとに一意にすることができます。

アプリをテストするためにプラグインの新しいバージョンを生成するのは大規模になる可能性がありますが、それを避けるために、grails.plugin.locationを使用してプラグインの場所を依存関係として指定できます。

この構造を使用すると、Grails の規則に従うことができると思いますが、同時にコードを関数で編成することもできます。


Function1Grailsプラグイン

  • grails-app/controllers/DashboardController
  • grails-app/ビュー/ダッシュボード/*

Function2Grailsプラグイン

  • grails-app/controllers/DashboardController
  • grails-app/ビュー/ダッシュボード/*

MainApp - 変更UrlMappings

static mappings = {
    //requests to /function1 will be handled by the
    //DashboardController provided by the Function1 plugin
    "/function1" {
        controller = 'dashboard'
        plugin = 'function1'
    }

    //requests to /function2 will be handled by the
    //DashboardController provided by the Function2 plugin
    "/function2" {
        controller = 'dashboard'
        plugin = 'function2'
    }
}
于 2013-05-23T16:56:03.093 に答える