0

我正在努力寻找带有 groovy 的 findAll 示例。我有一个非常简单的代码片段,它获取节点的属性并输出它的值。除非我在循环一系列属性时才获得最后一个值。我在这里做错了什么吗,这看起来很简单。

JcrUtils.getChildNodes("footer").findAll{ 
 selectFooterLabel = it.hasProperty("footerLabel") ? it.getProperty("footerLabel").getString() : ""
}

在我的 jsp 中,我只是打印属性:

<%=selectFooterLabel%>

谢谢您的帮助!

4

1 回答 1

2

findAll返回一个List包含原始列表中所有项目的 a,闭包为其返回一个 Groovy-true 值(布尔值 true,非空字符串/映射/集合,非 null 任何其他值)。看起来你可能想要collect

def footerLabels = JcrUtils.getChildNodes("footer").collect{ 
 it.hasProperty("footerLabel") ? it.getProperty("footerLabel").getString() : ""
}

这将为您提供闭包返回的值的列表。如果您只想要那些不为空的子集,您可以使用findAll()不带闭包参数,它为您提供列表中本身为 Groovy-true 的值的子集

def footerLabels = JcrUtils.getChildNodes("footer").collect{ 
 it.hasProperty("footerLabel") ? it.getProperty("footerLabel").getString() : ""
}.findAll()
于 2013-06-18T16:23:31.837 回答