我的数据结构如下所示:
public class Foo {
public Bar bar;
public List<Foo> foos = new ArrayList<>();
}
Foo的每个实例都可以包含任意数量的Foo
S,这当然反过来又可以包含更多的Foo
S等等。那么,我该如何让FreeMarker通过这样的列表呢?
可以使用静态方法释放标记。
将静态方法添加到Foo类printMe或do某物
add public static printMe() { ...
}
此函数将自动打印,并根据需要打印列表。
现在只需从freemarker模板调用它
${statics["packageName.Foo"].printMe()}
请参见访问静态方法
FreeMarker宏(和函数)支持递归。比如说:
<#macro dumpFoo foo>
${foo.bar}
<#list foo.foos as childFoo>
<@dumpFoo childFoo />
</#list>
</#macro>
<@dumpFoo myFoo />
示例数据模型(使用http://try.freemarker.org/语法,但它同样适用于List
-s和Foo
bean):
myFoo = {
"bar": "root",
"foos": [
{
"bar": "child 1",
"foos": [
{
"bar": "child 1.1",
"foos": []
}
]
},
{
"bar": "child 2",
"foos": []
}
]
}
输出:
root
child 1
child 1.1
child 2
我想迭代嵌套在映射中的列表,数据结构如下所示: Freemarker模板: 详细异常消息: FreeMarker模板错误:“...[...]”左操作数:需要序列或字符串或自动转换为字符串的东西(数字、日期或布尔值),但计算结果为extended_hash(包装器:f.t.simplehash):==>groups 那么,问题出在哪里呢? 附言。 我尝试了而不是,它会抛出一个新的异常堆栈:
问题内容: 我是一名编程新手,在理解python教科书(Magnus Lie Hetland的“ Beginning Python”)中的示例时遇到了一些麻烦。该示例针对的是递归生成器,该生成器旨在展平嵌套列表的元素(具有任意深度): 然后,您将输入嵌套列表,如下所示: 我了解flatten()中的递归如何帮助缩小到此列表的最内层元素“ 1”,但是我不明白的是当“ 1”实际上作为“嵌套”传递回fl
我试图创建一个正则表达式模式来匹配每个(内容*),但是该模式可以在另一个((内容)(内容))中找到。我尝试了,但这返回了外部的。 例如:字符串应返回: 第一个匹配: 第二个匹配: 编辑: 我试过:但在?R(未知标志)附近出现错误
问题内容: 我有一个带有自我参照字段的模型,称为parent。模型: 序列化器: 现在,我要序列化区域的父级及其父级及其父级,直到父级为none。我发现了针对孩子而不是父母的递归序列化方法。我怎样才能做到这一点? 问题答案: 尝试在此处使用SerializerMethodField: 我不确定DRF是否有内置方法,但是您可以使用查询来获取所需的方法。
我想我理解了教科书中对尾部递归函数的定义:在函数调用后不执行任何计算的函数。我还发现,作为一个结果,尾部递归函数的内存效率会更高,因为它每次调用只需要一条记录,而不是每次都需要保留一条记录(就像在普通递归中那样)。 我不太清楚的是,这个定义如何应用于嵌套调用。我将提供一个例子: 我最初给出的答案是,根据定义,它不是尾部递归的(因为外部调用是在计算内部调用之后执行的,所以其他计算是在第一次调用之后完
我有一个对象列表,我想从它的字段中得到一个列表<假设我通过了列表