【问题标题】:Groovy gsp: merge listsGroovy gsp:合并列表
【发布时间】:2012-08-14 14:12:29
【问题描述】:

我正在尝试将许多列表合并到 gsp 中的单个列表中。例如:

  1. A 类有一个 B 类实例列表

  2. 当我尝试使用表达式时:${a.findAll(some_condition).b} 我得到了 B 实例列表的列表

我希望表达式返回一个列表,其中 b 的所有实例属于每个满足 some_conditiona

【问题讨论】:

  • 等等。如果a.findAll返回的是A对象的集合,那你怎么直接在集合中调用属性b呢?这还行得通吗?不应该是这样的:${yourList*.b} ??
  • @TiagoFarias * 是可选的。 See Ted's answer here
  • 我不知道。我猜它会产生 *.记号没用啊?
  • 如果这是常规的 groovy 对象,那么 Tim 的答案是最好的。如果AB 是具有关系的域对象,则可以使用projections (grails.org/doc/latest/guide/GORM.html#criteria) 或HQL 获取与某些A 相关的所有B 实例满足任一条件的条件。
  • @TiagoFarias *. 表示法并非在所有情况下都没有用。对于属性,它是可选的(例如:foos.namefoos*.name 都返回 name 值的列表),但如果你想对所有内容运行方法,则需要使用 *.,(例如 @987654338 @,如果没有*.,它会在列表中调用toString,而不是每个单独的值)。

标签: grails groovy gsp


【解决方案1】:

你可以试试:

${a.findAll(some_condition).b.flatten()}

这应该会给你一个列表

${a.findAll(some_condition).b.flatten().unique()}

还应该删除重复项

【讨论】:

  • 正是我想要的。谢谢!
猜你喜欢
  • 2011-02-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-29
  • 2011-01-05
  • 1970-01-01
  • 1970-01-01
  • 2023-03-13
相关资源
最近更新 更多