【问题标题】:Problem with URL mapping in Grails: parameters are incorrectGrails 中的 URL 映射问题:参数不正确
【发布时间】:2011-08-08 02:05:46
【问题描述】:

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

这是我目前所拥有的:

class UrlMappings {

    static mappings = {

        ...

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

因此,在每个控制器中,如果第二个 URL 参数匹配“编辑”,用户将被转发到两个操作之一,具体取决于请求的 HTTP 方法。

在代码到达我的editViewedit 操作之前一切正常:

params.id

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

这是 Grails 中的错误吗?

【问题讨论】:

    标签: grails url-mapping


    【解决方案1】:

    我认为您不能像现在这样使用 URL 映射语法,您需要将其拆分为两个映射,例如:

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

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

    我意识到这会重复操作块,但我认为除了为您的操作放入另一个变量并根据该变量决定要做什么之外,没有其他方法可以解决这个问题。

    对不起,如果我误解了你 - 这本来是一个评论,但我还不能发表任何评论!

    【讨论】:

    • 我想我明白了 - 我只是不明白为什么 Grails 不能直接抛出错误或至少说“嘿,这看起来不对!”。我假设“/$controller/edit/$id”可以是任何正则表达式。
    猜你喜欢
    • 1970-01-01
    • 2012-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多