Grails中URL映射的问题:参数不正确

时间:2011-08-08 02:05:47

标签: grails url-mapping

我有一些控制器操作需要几种不同的HTTP方法,例如GET和POST。我没有在控制器操作代码中处理这个问题,而是(错误地)认为如果我将此代码放入UrlMappings.groovy类中它会更快,更简单。

这是我到目前为止所做的:

class UrlMappings {

    static mappings = {

        ...

        "/$controller/(create|edit)/$id" {
            action = [
              GET: "editView",
              POST: "edit"
            ]
        }
    }
}

因此,在每个控制器中,如果第二个URL参数与“edit”匹配,则根据请求的HTTP方法,用户将被转发到两个操作之一。

一切正常,直到代码到达我的editViewedit操作,此代码为:

params.id

评估为edit,而不是此示例请求所预期的1/location/edit/1

这是Grails中的错误吗?

1 个答案:

答案 0 :(得分:1)

我认为您不能按照您的方式使用URL映射语法,您需要将其拆分为两个映射,例如:

    "/$controller/edit/$id" {
        action = [
            GET: "editView",
            POST: "edit"
        ]
    }

    "/$controller/create/$id" {
        action = [
          GET: "editView",
          POST: "edit"
        ]
    }

我意识到这会复制动作块,但我认为除了将另一个变量放入你的动作并根据它决定做什么之外,还有其他办法。

很抱歉,如果我误解了你 - 这本来是评论,但我不允许发布任何内容!