在 gsp 上创建自定义 URL 映射的 URL 字符串
Creating URL String of a Custom URL Mapping on gsp
我已经修改了某个 Grails 的默认 URL 映射 Controller
:
BankRemittanceController.groovy
class BankRemittanceController{
def view(String bankCode, String refNo) {
...
}
}
UrlMappings.groovy
class UrlMappings {
...
/*
* Will accomodate the following URLs
*
* /project/remittance/bank/
* /project/remittance/bank/hsbc/
* /project/remittance/bank/hsbc/8959-87s-777-EI-02
*/
"/remittance/bank/$bankCode?/$refNo?"{
controller={"bankRemittance"}
action=[GET:"show"]
}
...
}
我已经测试了这些 URL 并且有效。问题是当我尝试在 .gsp
上动态生成 URL 字符串时,它会生成默认的 URL:
<script>
var redirectURL = "${g.createLink(controller: "remittance", action: "view")}"
// The URL generated here is still:
// /project/bankRemittance/view
//
// instead of the mapped URL in UrlMappings.groovy:
// /project/remittance/bank
//
</script>
如何生成预期的 URL 字符串?
我不明白为什么在映射中调用不存在的操作 'show'。
我已将其更改为:action=[GET:"view"]
如果您预期的 url 是:/project/remittance/bank,
你可以使用:${g.createLink(控制器:"remittance",动作:"bank")}
或者:${g.createLink(uri: "/remittance/bank")}
首先,更改定义映射的声明。来自
"/remittance/bank/$bankCode?/$refNo?"{
controller={"bankRemittance"}
action=[GET:"show"]
}
设为:
name mappingName: "/remittance/bank/$bankCode?/$refNo?"{
controller={"bankRemittance"}
action=[GET:"show"]
}
然后在 .gsp
上声明它时使用 createLink() mapping
attribute 而不是 controller
和 action
:
<script>
var redirectURL = "${g.createLink(mapping: "mappingName")}"
</script>
如果要传递两个可选参数(bankCode
和 refNo
),请使用 createLink() params
属性:
<script>
var redirectURL = "${g.createLink(mapping: "mappingName",
params: [bankCode: "...", refNo: "...")}"
</script>
我已经修改了某个 Grails 的默认 URL 映射 Controller
:
BankRemittanceController.groovy
class BankRemittanceController{
def view(String bankCode, String refNo) {
...
}
}
UrlMappings.groovy
class UrlMappings {
...
/*
* Will accomodate the following URLs
*
* /project/remittance/bank/
* /project/remittance/bank/hsbc/
* /project/remittance/bank/hsbc/8959-87s-777-EI-02
*/
"/remittance/bank/$bankCode?/$refNo?"{
controller={"bankRemittance"}
action=[GET:"show"]
}
...
}
我已经测试了这些 URL 并且有效。问题是当我尝试在 .gsp
上动态生成 URL 字符串时,它会生成默认的 URL:
<script>
var redirectURL = "${g.createLink(controller: "remittance", action: "view")}"
// The URL generated here is still:
// /project/bankRemittance/view
//
// instead of the mapped URL in UrlMappings.groovy:
// /project/remittance/bank
//
</script>
如何生成预期的 URL 字符串?
我不明白为什么在映射中调用不存在的操作 'show'。 我已将其更改为:action=[GET:"view"]
如果您预期的 url 是:/project/remittance/bank, 你可以使用:${g.createLink(控制器:"remittance",动作:"bank")} 或者:${g.createLink(uri: "/remittance/bank")}
首先,更改定义映射的声明。来自
"/remittance/bank/$bankCode?/$refNo?"{
controller={"bankRemittance"}
action=[GET:"show"]
}
设为:
name mappingName: "/remittance/bank/$bankCode?/$refNo?"{
controller={"bankRemittance"}
action=[GET:"show"]
}
然后在 .gsp
上声明它时使用 createLink() mapping
attribute 而不是 controller
和 action
:
<script>
var redirectURL = "${g.createLink(mapping: "mappingName")}"
</script>
如果要传递两个可选参数(bankCode
和 refNo
),请使用 createLink() params
属性:
<script>
var redirectURL = "${g.createLink(mapping: "mappingName",
params: [bankCode: "...", refNo: "...")}"
</script>