为什么 g:link 忽略请求参数?

why is g:link ignoring request params?

在我的 Grails 应用程序中,我有一个 URL 直接映射到 UrlMappings.groovy

中的视图
"/geolocation"(view: "/geolocation/index")

我正在尝试为该视图生成一个 link,其中包含以下请求参数:

<g:link elementId="btnSrcDest" uri="/geolocation" class="mapInfo" 
        params="[mapType: 'foo']">
    Click me
</g:link>

但这会生成以下内容 HTML

<a class="mapInfo" id="btnSrcDest" href="/myApp/geolocation">
    Click me
</a>

而我期待的是:

<a class="mapInfo" id="btnSrcDest" href="/myApp/geolocation?mapType=foo">
    Click me
</a>

为什么 g:linkparams 属性被忽略了?

如果您使用 uri 属性,那么它会被假定为完整的(相对于 webapp)link 并且不会进行进一步的处理。您可以尝试将其改为命名 URL 映射

name geo:"/geolocation" {
  view = "/geolocation/index"
}

然后使用

<g:link elementId="btnSrcDest" mapping="geo" class="mapInfo" 
        params="[mapType: 'foo']">