grails urlMappings中的参数化动作名称

时间:2012-12-26 13:17:03

标签: grails urlmappings.groovy

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

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

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

我尝试了以下网址映射规则而没有任何运气:

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

任何人都尝试过这样的事情

1 个答案:

答案 0 :(得分:2)

我尝试并成功了两个:

"/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只允许这种配置是静态的。也许有人可以深入研究源代码以便稍后查找。