如何使用两个ID映射网址:
/命令/ $ ID1 / orderlines / $ ID2
id2是可选的
/ orders / $ id1 / orderlines GET - >订单id1的所有订单行 / orders / $ id1 / orderlines / $ id2 GET - >在订单id1
中显示订单行ID2方法将映射到OrderLineController
使用Spring MVC @RequestMapping和@PathVariable非常容易。
Grails 3不允许@RequestMapping(有一些技巧可以让它发挥作用 - 但我不想走这条路 - 不必要地复杂化。)
感谢帮助。我做了很多谷歌搜索。
答案 0 :(得分:1)
您可以使用UrlMappings:
UrlMappings.groovy
class UrlMappings {
static mappings = {
"/orders/$id1/orderlines"(controller: 'orderLine', action: 'someAction1')
"/orders/$id1/orderlines/$id2"(controller: 'orderLine', action: 'someAction2')
}
}
OrderLineController.groovy
def someAction1(Long id1){
//...
}
def someAction2(Long id1, Long id2){
//...
}
答案 1 :(得分:0)
使用嵌套的URLMappings:
UrlMappings.groovy
class UrlMappings {
static mappings = {
"/orders"(resources:"order") {
"/orderLines"(resources:"orderLine")
}
}
}
OrderController.groovy
def show() {
params.id // Order.id
}
OrderLineController.groovy
def show() {
params.orderId // Order.id
params.id // OrderLine.id
}
如@dmahapatro所述,请查看Nested Resources上的文档。