0

我希望我的控制器提供以下功能,并且匹配 REST 支持这些功能:

  • 创建颜色
  • 根据 id 获取特定颜色
  • 获取所有颜色

我有以下 URL 方案:

    "/$controller/$action?/$id?"{
        constraints {
            // apply constraints here
        }
    }
    "/color"(controller: "color", parseRequest: true) {
       action = [GET: "list", POST: "save"]
    }
    "/color/$id" (resource: "color")

以上不适用于 REST 和基于浏览器的交互。

http://localhost:8080/color/create最终show转而采取行动。我希望它能够create采取行动来显示表格。

如果我删除最后一个映射"/color/$id" (resource: "color"),那么它工作正常,然后 URLhttp://localhost:8080/color/7中断

问题

使所有这些 URL 一致工作的正确方法是什么?

4

1 回答 1

2

向加号添加约束,urlMapping确保默认映射可用。

"/$controller/$action?/$id?"{
    constraints {
        // apply constraints here
    }
}

"/user/$id" (resource: "user"){
    constraints {
        id validator: {
            !(it in ['create', 'otherAction'])
        }
    }
}

巧合的是,这里回答了一个类似的问题。

于 2013-06-11T02:04:00.160 回答