Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
grails 3标记库、html生成器和createLInk_Grails_Taglib - Fatal编程技术网

grails 3标记库、html生成器和createLInk

grails 3标记库、html生成器和createLInk,grails,taglib,Grails,Taglib,在Grails3中是否可以使用createLink和HTMLBuilder创建标记库。我试过: def buttonTaglib = { attrs, body -> def mb = new groovy.xml.MarkupBuilder(out) mb.button(type: "button", class: "btn btn-success") { g.createLink(controller: 'test', actio

在Grails3中是否可以使用createLink和HTMLBuilder创建标记库。我试过:

def buttonTaglib = { attrs, body ->
        def mb = new groovy.xml.MarkupBuilder(out)
        mb.button(type: "button", class: "btn btn-success") {
            g.createLink(controller: 'test', action: 'show', id: 1) { mkp.yield "buttonTaglib" }
        }
    }


没有成功。

标准使用的典型out是否足够,如果是这样,就这么简单:

def buttonTaglib2 = { attrs, body ->
        out << """
<a href="${g.createLink(controller:"test", action:"show")}" class="btn btn-success">Test</a>
"""
    }

您也可以只渲染模板并将参数或属性传递给tempalate。然后按照通常从控制器到视图的方式处理您的值。

这一个对我有用:

def button = { attrs, body ->
        def mb = new groovy.xml.MarkupBuilder(out)
        out << link(controller: attrs.controller, action: attrs.action, id: attrs.id, params: attrs.params ) {
            mb.button(type: attrs.type, class: attrs.class) {
                mkp.yield attrs.name
            }
        }
}
def button = { attrs, body ->
        def mb = new groovy.xml.MarkupBuilder(out)
        out << link(controller: attrs.controller, action: attrs.action, id: attrs.id, params: attrs.params ) {
            mb.button(type: attrs.type, class: attrs.class) {
                mkp.yield attrs.name
            }
        }
}