2

2つのドメインクラスの2つのコントローラーにスキャフォールディングを使用しています:1セクターからNアイテム:

class Item {

String name

static belongsTo = [sector:Sector]

....

}

class Sector {

String name

static hasMany = [items:Item]

....

}

対応するスキャフォールディングコントローラーを生成したとき、パターン(class)mgr:Sectormgr.groovyとItemmgr.groovyを使用しました。

問題は、生成されたビューの一部で一部のリンクが無効であるということです。これは、コントローラーのデフォルト名に従っていると想定しているためです。例えば:

  • /ectormgr/show/20に移動すると、それに関連付けられているアイテムのリストには、/ itemmgr / show/22ではなく/item/ show/22のリンクがあります。

これに対する簡単な修正はありますか?コントローラーを作成するときに何かが足りませんか?

前もって感謝します

4

2 に答える 2

0

これに対処する方法はいくつかあると思います。最も簡単なのは、コントローラーにSectorController.groovy、ItemController.groovyなどの名前を付けるというGrailsの規則に従うことです。

これを処理するもう1つの方法は、grails-app / conf/UrlMappings.groovyを更新することですデフォルトのスキャフォールディングは次のとおりです。

class UrlMappings {
    static mappings = {
        "/$controller/$action?/$id?"{
            constraints {
                //apply constraints here
            }
        }
        "/"(view:"/index")
        "500"(view:'/error')
    }
}

あなたは次のようなものが欲しいです:

class UrlMappings {
    static mappings = {
        "/${controller}mgr/$action?/$id?"{  //Add mgr after controller
            constraints {
                //apply constraints here
            }
        }
        "/"(view:"/index")
        "500"(view:'/error')
    }
}
于 2010-02-26T13:43:26.797 に答える
0

URLMappingsの変更は私にはうまくいかなかったようで、それははるかにグローバルな変更です。intall-templatesコントローラーへのリンクを実行して変更することsrc/templates/scaffolding/show.gspは、私が採用したアプローチでした。

テンプレートを変更した後、サーバーを再起動する必要があります。

于 2010-03-20T19:54:07.530 に答える