【问题标题】:Parametric action names in grails urlMappingsgrails urlMappings 中的参数化动作名称
【发布时间】:2012-12-26 13:17:02
【问题描述】:

我正在尝试将 JSON api 映射到我的控制器,例如:

/api/user/1/location GET --> Controller.getLocation()

/api/user/1/location POST --> Controller.setLocation()

我尝试了以下 url 映射规则,但没有任何运气:

    "/api/$controller/$id/$property" {
        action = {[GET: "get${params.property.capitalize()}", POST: "set${params.property.capitalize()}"]}
    }

有人试过这样的

【问题讨论】:

    标签: grails urlmappings.groovy


    【解决方案1】:

    我都尝试过并且成功了:

    "/api/$controller/$id/$property"{
         action = {"get"+params.property.capitalize()}            //put all joint into the {} bracelet
    }
    

    "/api/$controller/$id/$property"{
         action = [GET: "getLocation", POST:"setLocation"]         //remove the {} bracelet
    }
    

    但未能将动态参数分配到 [GET:'',POST:''] 映射中,例如:

    "/api/$controller/$id/$property"{
         action = {["POST": "set"+params.property.capitalize(), "GET": "get"+params.property.capitalize()]}
    }
    

    "/api/$controller/$id/$property"{
         action = [POST: {"set"+params.property.capitalize()}, GET: {"get"+params.property.capitalize()}]
    }
    

    两者都产生了 404 错误。

    所以我猜 Grails 只允许这种配置是静态的。也许有人可以深入研究源代码以便稍后找到。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多