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(毕竟它是同一个页面)。提前致谢。

更新:终于解决了。

问题是由在我的 gsp 中使用引起的,它基本上将 action url 更改为 index,并将实际 action 作为 post-method 参数发送。为了在我使用的 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 回答