Templates 如何使用SimpleTemplateEngine循环遍历模板中的列表

Templates 如何使用SimpleTemplateEngine循环遍历模板中的列表,templates,groovy,Templates,Groovy,我想知道是否可以在SimpleTemplateEngine groovy中循环遍历一个值列表。例如: def values = [ "1", "2", "3" ] def engine = new groovy.text.SimpleTemplateEngine() def text = '''\ ??? ''' def template = engine.createTemplate(text).make(values) println template.toString() 我如何

我想知道是否可以在SimpleTemplateEngine groovy中循环遍历一个值列表。例如:

def values = [ "1", "2", "3" ]
def engine = new groovy.text.SimpleTemplateEngine()
def text = '''\
    ???
'''
def template = engine.createTemplate(text).make(values)
println template.toString()
我如何获得:

1
2
3
通过更改变量文本?

您的意思是

def values = [ "1", "2", "3" ]
def engine = new groovy.text.SimpleTemplateEngine()
def text = '''
    ${values.each { println it} }
'''
println engine.createTemplate(text).make([values: values])
你是说

def values = [ "1", "2", "3" ]
def engine = new groovy.text.SimpleTemplateEngine()
def text = '''
    ${values.each { println it} }
'''
println engine.createTemplate(text).make([values: values])

如果您想要一个优雅的模板,没有很多引号,也没有很多命令式编程,那么您可以执行以下操作

def text = '''
<% for (item in values) { %>
<%= item %>    
<% } %>

'''
规则很简单:

如果存在值的呈现,则使用。 如果存在流控制处理if/else,则使用for循环,。。。
如果您想要一个优雅的模板,没有很多引号,也没有很多命令式编程,那么您可以执行以下操作

def text = '''
<% for (item in values) { %>
<%= item %>    
<% } %>

'''
规则很简单:

如果存在值的呈现,则使用。 如果存在流控制处理if/else,则使用for循环,。。。
我想是的-此打印:1 2 3[1,2,3]我不希望数组在结尾。${values.each{}在结尾返回数组。使用此代码时,我遇到以下错误:StreamingTemplateScript23.groovy:1:意外字符:0xFFFF@line 1,column 308。换行符或i,s,e;}。我想是的-此打印:1 2 3[1,2,3]我不希望数组在结尾。${values.each{}在结尾返回数组。使用此代码时,我遇到以下错误:StreamingTemplateScript23.groovy:1:意外字符:0xFFFF@line 1,column 308。换行符或i,s,e;}。asWritable}此解决方案按预期工作,上面的在结尾打印冗余阵列[1,2,3]此解决方案按预期工作,上面的在结尾打印冗余阵列[1,2,3]