g:formRemote没有创建适当的代码来更新RESTful资源

时间:2013-11-28 10:19:57

标签: rest grails gsp grails-2.3

我们正在使用grails 2.3.3进行申请。

需要使用REST接口访问资源,因为它可以从Web浏览器和其他应用程序访问。

为此,UrlMapping.groovy包含REST映射,如:

"/toys"(resources:"toy")

控制器继承自ResftulController

import grails.rest.RestfulController

class ToyController extends RestfulController {

    // Derived from RestfulController as described in
    // http://grails.org/doc/latest/guide/webServices.html#REST
    //
    // All RAILS functions implemented in base class

    static responseFormats = ['json', 'html']

    ToyController() {
        super(Toy)
    }

}

我们在使用g:formRemote和jQuery插件更新项目时遇到问题。

<g:formRemote name="updateForm"
              id="${toy.id}"
              method="PUT"
              url="[controller: 'toy', action:'update' ]">

更新时,它不使用正确的URL:

Request URL: http://localhost:8080/app/toy/update
METHOD: PUT
FORM DATA: ...

AFAIK的URL应该是:

Request URL: http://localhost:8080/app/toys/5252
METHOD: PUT
FORM DATA: ...

这是在Grails 2.3中使用g:formRemote和RESTful资源的正确方法吗?

应该g:formRemote能够使用URL映射来创建正确的URL吗?

g:link具有属性资源,用于生成REST资源的链接。表格也有等价物吗?

<g:link resource="${book}">My Link</g:link>

1 个答案:

答案 0 :(得分:0)

你不能通过formRemote传递这样的id。同样适用于params。你必须将它们添加为url param块的一部分,就像这样。

<g:formRemote name="updateForm"
          method="PUT"
          url="[controller: 'toy', action:'update', id: toy.id]">