我创建了一个自定义Web内容结构,它采用数组作为唯一的输入(称为“theArray”)。类似的东西:
[
["vs303","The first Title","2","4","5","7"],
["vs606","The second Title","4","5","7","8"],
["vs808","The third Title","3","2","11","7"]
]
当我尝试在Velocity Template中循环遍历数组时,它没有显示任何内容:
#set ($foo = ${theArray.getData()})
#foreach ($bars in $foo)
#foreach ($bar in $bars)
<p>$bar</p>
#end
#end
我哪里出错了?我是否需要将var声明为数组?
*注
如果将数组放在模板中,则循环起作用。如果我通过getData
方法从liferay webcontent结构中获取数组,则不输出任何内容。
答案 0 :(得分:1)
你可以像这样循环遍历数组(你不需要使用getData
方法):
#set($foo = [
["vs303","The first Title","2","4","5","7"],
["vs606","The second Title","4","5","7","8"],
["vs808","The third Title","3","2","11","7"]
])
#foreach ($bars in $foo)
#foreach ($bar in $bars)
<p>$bar</p>
#end
#end
答案 1 :(得分:0)
我从你的问题中理解的是1.&gt;当您在模板中设置数组时,因为保留了原始数组数据类型。 2 - ;当你使用你的getData()函数时,你可能会得到一个字符串,速度迭代器无法理解这就是为什么不工作。
我不确定getData()方法的实现,但您可以尝试:
1&GT;如果可能,使getData()的返回类型成为一个数组。
2 - ;如果这是不可能的。您可以创建一个静态方法将theArray.getData()Type转换为Array Type。将此方法设置为velocity上下文,并在模板中使用此静态方法。
#set ($foo = ${STATIC_METHOD(theArray.getData())} )