我的GSP页面中有一个<g:link action="test" params='["present": "yes"]'
标记,点击后会将我发送到以/test?present=yes
结尾的网址。
如果我定义了这个自定义标签lib:
class HelperTagLib {
static defaultEncodeAs = 'html'
static returnObjectForTags = ['passthrough']
def passthrough = { Map attrs, Object body ->
return attrs
}
}
并将其添加到代码<g:link action="test" params='${passthrough(["present": "yes"])}'
,我的网址突然以/test
结尾,完全丢失参数。
为什么会发生这种情况,我该如何解决?
答案 0 :(得分:1)
允许您的taglib为您呈现该链接。在gsp和taglib中尝试此</g:passthrough>
def passthrough = { attrs, body -> out << g.link(controller: 'foo', action: 'test', params: [present: 'yes']) }
答案 1 :(得分:0)
我在你对taglib的调用中可以看到你想念 g.taglibname ,它应该是这样的
<g:link action="index" params="${g.doSomething(present:true)}">Ir</g:link>
我自己做了,工作得很好
但是如果你想要的是拦截一些参数,然后在完成请求之前进行处理可能更好的解决方案是使用beforeInpreceptor功能或一些过滤器。
有关拦截器的更多信息http://www.grails.org/doc/2.3.x/ref/Controllers/beforeInterceptor.html
希望它可以提供帮助