我正在将带有String映射的HashMap传递给ArrayList。 该映射包含两个条目,它们是相同长度的ArrayLists,我希望它们水平对齐,所以我认为foreach-range循环比条目上的foreach循环更好。
我有:
#foreach($i in [1..$entry1.size()])
<li>
<h3>$entry1.get($i-1)</h3>
<video width="320" height="240" controls>
<source src="$entry2.get($i-1)" type="video/mp4">
</video>
</li>
#end
Velocity只打印$ entry1.get($ i-1)并将$ entry2.get($ i-1)字面上为$ entry1.size()次,而不是从相应的ArrayList索引中注入值。
速度Documentation说:
注意:对于ArrayList示例,使用ArrayList类中定义的方法可以访问使用[..]运算符定义的元素。因此,例如,您可以使用$ monkey.Say.get(0)访问上面的第一个元素。
示例是:
#set( $monkey.Say = ["Not", $my, "fault"] ) ## ArrayList
我是否正确访问了ArrayList?
答案 0 :(得分:1)
所以,我仍然不确定上面的代码出了什么问题...... 这是我的工作:
#foreach( $title in $entry1 )
<li>
<h3>$title</h3>
<video width="320" height="240" controls>
<source src="$entry2.get($foreach.index)" type="video/mp4">
</video>
</li>
#end
希望它可以帮助任何可能在未来遇到类似问题的人。 我仍然想知道我的初始代码有什么问题!
答案 1 :(得分:0)
我注意到,速度不是在get()
处$entry1.get($i-1)
方法中评估表达式。
尝试这样的事情:
#foreach($i in [1..$entry1.size()])
#set($index = $i - 1)
<li>
<h3>$entry1.get($index)</h3>
<video width="320" height="240" controls>
<source src="$entry2.get($index)" type="video/mp4">
</video>
</li>
#end