从 apache freemarker 中的嵌套对象构建列表?

Build list from nested object in apache freemarker?

我有一个对象列表,我想从它的字段中获取一个列表。
假设我将 List<Auto> autos 从 java 端传递到文档端的模板。每个 Auto 都有一个速度字段。 所以结果应该是速度列表。
我可以手动循环汽车并从速度字段构建新列表。 在 freemarker 中是否有更简单的内置解决方案,例如 'autos.speed?tolist'

您正在寻找内置序列 map,它从版本 2.3.29 开始提供。它 returns 一个新序列,其中所有元素都替换为参数 lambda、函数或方法的结果。这使您可以:

autos?map(auto -> auto.speed)

如果您想在 Java 中执行此操作,请参阅:

  • Create list of object from another using Java 8 Streams

归结为:

autos.stream().map(Auto::getSpeed).collect(Collectors.toList());