【发布时间】:2012-08-14 14:12:29
【问题描述】:
我正在尝试将许多列表合并到 gsp 中的单个列表中。例如:
A 类有一个 B 类实例列表
当我尝试使用表达式时:
${a.findAll(some_condition).b}我得到了 B 实例列表的列表
我希望表达式返回一个列表,其中 b 的所有实例属于每个满足 some_condition 的 a
【问题讨论】:
-
等等。如果a.findAll返回的是A对象的集合,那你怎么直接在集合中调用属性b呢?这还行得通吗?不应该是这样的:${yourList*.b} ??
-
@TiagoFarias
*是可选的。 See Ted's answer here -
我不知道。我猜它会产生 *.记号没用啊?
-
如果这是常规的 groovy 对象,那么 Tim 的答案是最好的。如果
A和B是具有关系的域对象,则可以使用projections(grails.org/doc/latest/guide/GORM.html#criteria) 或HQL 获取与某些A相关的所有B实例满足任一条件的条件。 -
@TiagoFarias
*.表示法并非在所有情况下都没有用。对于属性,它是可选的(例如:foos.name或foos*.name都返回name值的列表),但如果你想对所有内容运行方法,则需要使用*.,(例如 @987654338 @,如果没有*.,它会在列表中调用toString,而不是每个单独的值)。