Grails 3 UrlMappings

时间:2017-02-02 03:07:47

标签: grails grails3 grails3.2.0

如何使用两个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(有一些技巧可以让它发挥作用 - 但我不想走这条路 - 不必要地复杂化。)

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

2 个答案:

答案 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上的文档。