groovy - findAll只获得一个值

时间:2013-06-18 16:11:12

标签: groovy

我很难找到groovy的findAll示例。我有一个非常好的 简单的代码片段,它获取节点的属性并输出它 值。除了我在循环时只获得最后一个值 一系列的属性。这是我在做错的事吗 看起来很简单。

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

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

<%=selectFooterLabel%>

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

findAll返回一个List,其中包含原始列表中闭包返回Groovy-true值的所有项(布尔值为true,非空字符串/ map / collection,非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()