Grails自定义标记不适用于<g:link params =“”> </g:link>

时间:2014-05-20 01:31:01

标签: grails gsp taglib

我的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结尾,完全丢失参数。

为什么会发生这种情况,我该如何解决?

2 个答案:

答案 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

希望它可以提供帮助