gpt4 book ai didi

grails - MarkupBuilder 从字符串渲染

转载 作者:行者123 更新时间:2023-12-02 14:09:13 26 4
gpt4 key购买 nike

我正在使用 MarkupBuilder 从 taglib 中呈现一些 HTML,如下所示(为了清楚起见,将其删除):

def formContainer = new MarkupBuilder(out)
formConainer.form() {
input() { }
input() { }
}

现在假设在 form() 内部的某个地方我想拉入用户指定的一些元素,因此在文件系统上的文件中我有这样的东西(再次,简化)......
select() {
option()
option()
}

我的问题是,如果我将 select in 作为字符串读取,是否有办法让 taglib 将其解析为 groovy 并使其成为 MarkupBuilder 实例的一部分?
def formContainer = new MarkupBuilder(out)
formConainer.form() {
input() { }
input() { }

// I want the select to render here
}

最佳答案

一种方法是:

String externalMarkup = '''
select() {
option()
option()
}
'''
def out = new StringWriter()

def formContainer = new groovy.xml.MarkupBuilder( out )
formContainer.form() {
input()
input()

// Wrap the string in { -> ... } to make it a closure, and evaluate it
def extern = new GroovyShell().evaluate( "{ it-> ${externalMarkup} }" )
// Set the delegate of this closure to the MarkupWriter
extern.delegate = formContainer
// Then execute the closure
extern()
}
println out.toString()

然而,这对我来说感觉很脆弱......

更好的方法可能是使用 GroovyTemplateEngine将您的值注入(inject)格式化的完整标记位

关于grails - MarkupBuilder 从字符串渲染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7735420/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com