我是apache velocity的新手,我想从列表对象创建一个子列表对象,它来自.vm文件中的某些服务调用。
我们需要根据部分逻辑呈现列表,因为我们想从列表中创建子列表。
$ table.getBooks()//包含所有Books对象 下面是我尝试的示例代码,但它没有用。
#set($segregatedList = [])
#set($size = $table.getLineItems().size())
#foreach($index in [0..$size-1])
#set($value = $index + 4)
#set($minimum = $math.min($nItems,$value))
$segregatedList.add($table.getBooks().subList($index,$minimum)))
$index += 4
#end
我执行了代码,而渲染$ segregatedList则为null。 我验证了$ table.getBooks()包含了对象,就像我传递它一样,对象被成功渲染。 有人可以告诉我我做错了什么或如何创建子列表?
答案 0 :(得分:0)
首先你的增量索引为4并且可能导致IndexOutOfBoundsException,所以需要改变直到size-5
(因此删除数学最小化检查)
其次,您使用addAll
添加单个元素而不是所有元素第三个尺码检查参数是否错误 - 应与相关$table.getBooks()
最后确保您的列表包含超过5个元素
#set($segregatedList = [])
#set($size = $table.getBooks().size())
#foreach($index in [0..$size-5])
#set($value = $index + 4)
$segregatedList.addAll($table.getBooks().subList($index, $value)))
$index += 4
#end