我已经修改了某些Grails Controller的默认URL映射:

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字符串?

最佳答案

我不明白为什么在映射中您将不存在的 Action 称为“show”。
我将其更改为:action = [GET:“view”]

如果您预期的网址是:/ project / remittance / bank,
您可以使用:$ {g.createLink(controller:“remittance”,action:“bank”)}
或:$ {g.createLink(uri:“/汇款/银行”)}

07-27 14:57