Grails 3 URL映射
如何使用两个ID映射Url: /订单/$id1/订单行/$id2 id2是可选的 /订单/$id1/订单行获取->订单id1的所有订单行 /订单/$id1/订单行/$id2 GET->在订单id1中显示订单行id2 这些方法将映射到OrderLineController 使用SpringMVC@RequestMapping和@PathVariable非常简单 Grails3不允许@RequestMapping(有一些技巧可以让它工作——但我不想走这条路——不必要的复杂)Grails 3 URL映射,grails,grails3,grails3.2.0,Grails,Grails3,Grails3.2.0,如何使用两个ID映射Url: /订单/$id1/订单行/$id2 id2是可选的 /订单/$id1/订单行获取->订单id1的所有订单行 /订单/$id1/订单行/$id2 GET->在订单id1中显示订单行id2 这些方法将映射到OrderLineController 使用SpringMVC@RequestMapping和@PathVariable非常简单 Grails3不允许@RequestMapping(有一些技巧可以让它工作——但我不想走这条路——不必要的复杂) 谢谢你的帮助。我在谷歌上
谢谢你的帮助。我在谷歌上搜索了不少 您可以使用URL映射: 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){
//...
}
def show() {
params.id // Order.id
}
def show() {
params.orderId // Order.id
params.id // OrderLine.id
}
使用嵌套URL映射: UrlMappings.groovy
class UrlMappings {
static mappings = {
"/orders"(resources:"order") {
"/orderLines"(resources:"orderLine")
}
}
}
OrderController.groovy
def someAction1(Long id1){
//...
}
def someAction2(Long id1, Long id2){
//...
}
def show() {
params.id // Order.id
}
def show() {
params.orderId // Order.id
params.id // OrderLine.id
}
OrderLineController.groovy
def someAction1(Long id1){
//...
}
def someAction2(Long id1, Long id2){
//...
}
def show() {
params.id // Order.id
}
def show() {
params.orderId // Order.id
params.id // OrderLine.id
}
如@dmahapatro所述,请查看上的文档。查找“嵌套资源”。非常感谢您提供这一优雅的解决方案。我唯一需要的更改是将这两个方法都放在OrderLineController中。我不需要对OrderController做任何事情,它工作正常。所以我编写了index()方法来处理一个参数(order.id),show()方法处理两个参数。非常感谢。完美的解决方案!