gpt4 book ai didi

Java Velocity foreach 循环

转载 作者:行者123 更新时间:2023-11-30 07:32:46 57 4
gpt4 key购买 nike

我有一个 ArrayList,它在 java 中即时填充并将其传递给速度模板以供使用。现在,当我尝试迭代列表并从列表中创建一个“逗号”分隔的字符串时,我观察到了不稳定的行为。

下面是我的代码

> #set($list_str="")
> #foreach($item in $list)
> #set($list_str=$!list_str+$!item+",")
> #end

现在我看到我的变量 $list_str 包含列表的所有元素,但最后还附加了迭代器“$!item”的变量名。

所以,假设我的列表有 [0,1,2,3,4],我的最终结果($list_str 的值)是 [0,1,2,3,4],$!item,

我不确定这是否是因为列表中的空引用被填充并传递给速度模板。

任何解决此问题的建议都将不胜感激。

谢谢

最佳答案

我快速检查了一下,这似乎是因为您的 ArrayList 中存在空值。

对于如下填充的 ArrayList --

ArrayList list=new ArrayList();
list.add("try");
list.add("to");
list.add("figure");
list.add("it");

并且速度代码如下——

#foreach($iter in $list)
$!iter
#set($list_str=$!list_str+$!iter+",")
#end
$!list_str

我得到以下输出——

try
to
figure
it
try,to,figure,it,

这似乎符合预期。

现在,当我按如下方式填充 Arraylist 时 --

ArrayList list=new ArrayList();
list.add("try");
list.add("to");
list.add("figure");
list.add("it");
list.add(null);

使用与上面相同的速度代码,我得到以下输出 --

try
to
figure
it

try,to,figure,it,$!iter,

所以,我猜您需要在代码中的某处添加空检查来避免这种情况。

谢谢p1nG

PS:正如@Thilo 所指出的,我不确定括号来自何处,也不确定这是否是所需的行为。

关于Java Velocity foreach 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6328868/

57 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com