0

你如何映射一个有两个 id 的 Url:

/orders/$id1/orderlines/$id2

id2 是可选的

/orders/$id1/orderlines GET -> 订单 id1 的所有订单行 /orders/$id1/orderlines/$id2 GET -> 在订单 id1 中显示订单行 id2

这些方法将被映射到 OrderLineController

使用 Spring MVC @RequestMapping 和 @PathVariable 非常容易。

Grails 3 不允许@RequestMapping(有一些技巧可以让它工作——但我不想走那条路——不必要的复杂)。

感谢帮助。我做了很多谷歌搜索。

4

2 回答 2

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){
  //...
}
于 2017-02-02T09:55:44.683 回答
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 所述,请查看有关嵌套资源的文档。

于 2017-02-02T18:56:47.527 回答