我正在使用以下foreach循环
#foreach( $product in $allProducts )
<p>$product</p>
#end
获取
<p>something</p>
<p>something</p>
<p>something</p>
<p>something</p>
<p>something</p>
<p>something</p>
是否可以在Velocity中每3个项目包装一个div?例如,要获得以下结果:
<div>
<p>something</p>
<p>something</p>
<p>something</p>
</div>
<div>
<p>something</p>
<p>something</p>
<p>something</p>
</div>
我尝试在foreach循环中使用#if ($velocityCount % 3 == 0)
,但它不起作用。
答案 0 :(得分:2)
在将它们传递给velocity之前,在java代码中创建产品块是一个更好的解决方案。我的意思是创建一个包含List<Product>
的ProductBlock类,将产品分组到java中的产品块中,将产品块列表传递给速度模板并像消耗它一样
#foreach( $productBlock in $allProductBlocks )
<div>
#foreach( $product in $productBlock.products )
<p>$product</p>
#end
</div>
#end
这将导致更少的模板逻辑,这通常是一个好点。
答案 1 :(得分:1)
您没有告诉我们您使用的是哪个Velocity版本。在最近的版本中不再存在$velocityCount
(至少在1.7.x中)。试试$foreach.index
:
#foreach( $product in $allProducts )
#if( $foreach.index %3 == 0 )
#if( !$foreach.first )
</div>
#end
<div>
#end
<p>$product</p>
#if( $foreach.last )
</div>
#end
#end
答案 2 :(得分:-1)
我不熟悉Velocity,所以我的语法可能会关闭,但这可以使用for
循环而不是forEach
来完成:
<div>
for(int i=0;i<products.size;i++){
<p>$products[i]</p>
if(i%3==0){
</div>
<div>
}
}
</div>