【问题标题】:Has URL Mappings changed in Grails 1.3.7?Grails 1.3.7 中的 URL 映射是否发生了变化?
【发布时间】:2011-04-06 15:28:12
【问题描述】:

情况:

假设我有一个名为 AccountController 的示例控制器,其中包含一些显示、编辑和更新操作。

在 Grails URL 映射中,我尝试按方法类型进行映射,例如GET POST 等

然后我有一个指向控制器相应操作的链接,如下所示:

<g:link controller="account" action="edit">Edit my account link</g:link>

具有以下映射:

"/profile"      (controller: "account", action: "show")
"/profile/edit" (controller: "account", action: [GET: "edit", POST: "update"])

这里的问题是生成的链接应该使用映射进行查找并使其在生成的 html 页面中看起来像 "/profile/edit" ,但页面却有 “/account/edit” 根据映射不存在,所以点击时会导致错误。

我什至尝试过以下替代语法:

"/profile/edit" (controller: "account") { action = [GET: "edit", POST: "update"] }

但它仍然指向一个不存在的 url 映射。

这是一个错误还是只是我今天过得不好?

【问题讨论】:

    标签: grails


    【解决方案1】:

    我不知道这(使用 HTTP 方法的反向 URL 映射)在以前版本的 Grails 中是否有效,但我在 1.3.7 中重现了您的问题,我想出的唯一解决方案是使用 @987654321 @。使用它,您的标签将是:

    <g:link controller="account" action="edit" mapping="profileEditing">
        Edit my account link
    </g:link>
    

    编辑映射将是:

    name profileEditing: "/profile/edit" (controller: "account") {
        action = [GET: "edit", POST: "update"]
    }
    

    问候。

    【讨论】:

    • 谢谢。它肯定适用于早期版本。在“Graeme Rocher 的 Grails 权威指南”的第 152 页上,他们展示了第二种方法,其中有一个闭包进行 HTTP 方法映射。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-03
    • 2012-02-12
    • 1970-01-01
    • 2023-04-01
    • 2013-05-27
    • 1970-01-01
    相关资源
    最近更新 更多