我昨天在2.3.7下使用了这个相同的片段工作正常,但在Grails 2.4.0下它只返回第一个对象。
只是想知道我的结果是否是闪避,或者确实在2.4.0中是否输出了第一行。如果您注释掉countries <<
行,则会将其全部打印到控制台,启用该行后,它只返回1条记录。
def listCountries() {
def countries = []
def locale = Locale.getAvailableLocales().find { availableLocale ->
def lang=availableLocale?.getLanguage()?.toString()
def country=availableLocale.getCountry().toString() ?: lang
println "---"+lang+"---"+country
countries << "${lang},${country}"
}
render countries
}
答案 0 :(得分:2)
有很多事情需要关注。首先,countries
是列表而不是地图。 :)
listCountries
中的逻辑可以按如下方式向下钻取:
def listCountries() {
render Locale.availableLocales?.collect {
"${it.language.toString()},${it.country.toString()}"
}
}
find
只会在条件满足或评估为Groovy True时返回第一个结果,因此在您的情况下只打印一次。