我使用的结构有点像这样,levelOne和levelTwo都是可重复的。
levelOne
levelTwo
levelThree
当使用foreach循环显示数据时,我似乎只能找到levelTwo和levelThree的第一个实例。我已经尝试了很多方法试图获取这些信息,但我开始怀疑它是否超出了Velocitys的能力。
即使我只是从levelOne获取数据并使用
显示所有数据#foreach($i in $levelOne.getSiblings())
<p>$i</p>
#end
我显示的所有内容都是
{name=levelOne, data=levelOneData, type=text, options=[],
levelTwo={name=levelTwo, data=levelTwoData, type=text, options=[],
levelThree={name=levelThree, data=levelThreeData, type=text, options=[]}}}
使用像这样的嵌套foreach
#foreach($i in $levelOne.getSiblings())
#foreach($j in $i.getSiblings())
<p>$j</p>
#end
#end
我得到了相同的结果..
在levelTwo中没有显示有关重复数据的信息。有谁知道这是否是浪费时间试图找出或是否有我遗失的东西?
答案 0 :(得分:2)
我希望我了解你的情况。
如果您需要知道变量存在多少兄弟,您可以使用$yourVar.getSiblings().size()
:它返回兄弟姐妹列表的大小。
这就是像#foreach($i in $levelOne.getSiblings())
这样的代码有效的原因。
以下输出显示您只有一个兄弟(为了简化阅读,我将其缩进):
{
name=levelOne,
data=levelOneData,
type=text,
options=[],
levelTwo={
name=levelTwo,
data=levelTwoData,
type=text,
options=[],
levelThree={
name=levelThree,
data=levelThreeData,
type=text,
options=[]}
}
}
前进......我确信你可以使用Velocity中的嵌套列表和地图...所以我的第一个问题是:你确定你的变量里面有多个Leve2和Level3的实例吗? ?
为了更好地理解尝试修改您报告的第二部分代码
<p>$levelOne</p>
<hr />
#foreach($i in $levelOne.getSiblings())
<p><strong>$i</strong></p>
#foreach($j in $i.getSiblings())
<p>$j</p>
#end
<hr />
#end
你现在看到了什么?
你的$i
循环之前是否有可能出现问题?
但是(第二个问题)......如果我不太了解你的结构......你需要一些不同的东西......你知道Velocity变量的getChildren()
方法吗?
答案 1 :(得分:0)
确定。解决方案如下..
#foreach($i in $levelOne.getSiblings())
#foreach($j in $i.levelTwo.getSiblings())
<p>$j</p>
#end
#end