我试图从列表中返回我的 groovy 脚本中的 HTML 值并检查是否满足条件,其中代码不检查 else if
条件而只返回 if
条件的返回值.
有什么我遗漏的吗?
def groups = ["test","test1","test2","test3"]
for(group in groups) { //looping list
if(group=="test") {
html= """
<input type="checkbox" json="TEST" name="value" value="TEST">
<label for="TEST">TEST</label>
"""
return html
}
else if(group=="test1") {
html2="""
<input type="checkbox" json="TEST1" name="value" value="TEST1">
<label for="TEST1">TEST1</label>
"""
return html2
}
}
答案 0 :(得分:0)
如评论中所述,由于您在每个 if 分支中返回,您的代码在第一次迭代后停止。
您正在寻找的是一个 collect
,它迭代一个集合并返回该集合根据给定的闭包转换为其他内容:
def groups = ["test","test1","test2","test3"]
def html_list = groups.collect { group ->
if (group == "test") {
return """<input type="checkbox" json="TEST" name="value" value="TEST">
<label for="TEST">TEST</label>"""
} else if (group == "test1") {
return """<input type="checkbox" json="TEST1" name="value" value="TEST1">
<label for="TEST1">TEST1</label>"""
}
}.grep()
println html_list
最后的 grep()
只是为了去掉最后的 null
,因为在这个例子中两个列表的大小不同。为了避免它,你可以有这样的事情:
def groups = ["test","test1","test2","test3"]
def html_list = groups.collect { group ->
def test_name = group.toUpperCase()
return """<input type="checkbox" json="${test_name}" name="value" value="${test_name}">
<label for="${test_name}">${test_name}</label>"""
}
println html_list