1

コントローラーにこのメソッドがあります。これは、基本的にエンティティを検証して保存するか、エラーがあればレンダリングします。

def initCreateProduct() {
    render view: "/admin/product/createProduct"
}

def createProduct(params) {
    def product = new Product(params)
    if (product.validate()) {
        flash.message = "product.createSuccess"
        product.save(failOnError: true);
        redirect action: "initCreateProduct"
    } else {
        render view: "/admin/product/createProduct", model: [product: product]
    }
}

検証が成功した場合 (ブラウザーの URL は "product/initCreateProduct" で問題ありません) は問題なく動作しますが、検証が失敗した場合は URL が "product/index" に変更されますが、これは間違っています。私が必要としているのは、両方の場合で同じ URL を取得することです (結局のところ、同じページです)。前もって感謝します。

更新:ついに解決しました。

この問題は、基本的にアクション URL をインデックスに変更し、実際のアクションをポストメソッド パラメータとして送信する gsp で使用されているために発生します。代わりに使用したURLにアクションを保存するには

4

1 に答える 1

0

コントローラーのリダイレクトを行っており、URL を解決できません。IIRC では、grails は追加のパラメーターを index メソッドに渡して、そのアクションを見つけます。

次のようなことをすると、うまくいきません。

if (product.validate()) {
        flash.message = "product.createSuccess"
        product.save(failOnError: true)
        initCreateProduct()
}
于 2013-07-06T09:02:43.253 に答える