Grails formRemote 404 Not Found

时间:2015-06-04 16:30:51

标签: grails

我难以让我的ajaxform正常工作。我正在使用Grails 2.4.4并具有以下remoteForm代码。

查看usedProducts

<div id="updateMe">
    <g:each in="${productList}" var="product">
        ${product.item} Success1
    </g:each>
</div>

<g:formRemote name="myForm"
    url="[controller:'product', action: 'save']" update="updateMe">
    <g:textField name="item" required="" value="${newProduct?.item}" />
    <g:submitButton name="Save" />
</g:formRemote>

Controller ProductController

def usedProducts = {
    [productList:Product.findAll()]
}

@Transactional
def save(Product productInstance) {
    productInstance.save flush:true

    [productList: Product.findAll()]
}

控制台错误

POST http://localhost:8080/TekDays/product/save

404 Not Found         54ms
jquery -... e = false(第9631行) “NetworkError:404 Not Found - http://localhost:8080/TekDays/product/save

1 个答案:

答案 0 :(得分:1)

我担心你不能这样做,你正试图这样做。

请注意,当用户有效执行AJAX调用时,不再有GSP标记。只有CSS,HTML和Javascript。这是浏览器世界。

请将渲染放在你要返回的地方并进行测试。

@Transactional
def save(Product productInstance) {
    productInstance.save flush:true    
    render Product.findAll()   
}

您将看到DIV updateMe的内容将被save方法呈现的内容替换。内容是findAll方法返回的包含所有Product对象的列表。

使用渲染时,返回的内容(GSP模板,变量或HTML的内容)将在当前HTML中呈现,例如,通过AJAX调用。

对于使用return关键字的另一方,需要一个与控制器方法同名的GSP。因为你得到了404,因为找不到save.gsp。注意:如果省略return关键字(就像你正在做的那样)那么groovyc(Groovy编译器)会隐式地为你设置它。

如果我很清楚你想要做什么,那么你必须渲染内容(不归还)。