Grails GSP-无法用参数调用body



我已经定义了这样的taglib:

class FooTagLib {
    static namespace = "foo"
    def bar = { attrs, body ->
        out << render(template: "/taglib/foo/bar", model: [body: body])
    }
}

身体闭合需要两个参数,即Baz和Qux,为什么我不能在我的/taglib/foo/_bar.gsp中这样做:

${body(baz: 'Hello', qux: 'world!')}

这就是我在GSP视图中使用此标签的方式:

<foo:bar>
    ${baz} ${qux}
</foo:bar

它打印了身体的内容,但参数都是null

null null

这是一个错误还是我做错了什么?

在taglib内部您永远不会指定任何参数,这不是自动完成的,因为Taglib不知道地图键的名称。您必须在模型中指定地图键和值。

class FooTagLib {
    static namespace = "foo"
    def bar = { attrs, body ->
        def s = body()
        def tokens = s.tokenize()
        out << render(template: "/taglib/foo/bar", model: [body: [baz:tokens[0], qux:tokens[1]] ])
    }
}

也许身体划分并不是您应该做的,但这只是为了使事情变得清晰。

您更容易使用attrs,而不是用参数构建身体闭合。

相关内容

  • 没有找到相关文章

最新更新