微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Java Velocity foreach循环

如何解决Java Velocity foreach循环

| 我有一个ArrayList,它会在Java中进行填充并将其传递给速度模板以供使用。现在,当我尝试遍历列表并从列表中创建一个\'逗号'分隔的字符串时,我观察到了不稳定的行为。 以下是我的代码
> #set($list_str=\"\")
> #foreach($item in $list)
>     #set($list_str=$!list_str+$!item+\",\")
> #end
现在我看到我的变量$ list_str具有列表的所有元素,但最后还附加了迭代器\'$!item \'的变量名。
So,say my list has [0,1,2,3,4],my end result(value of $list_str) is [0,$!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);
并使用与上述相同的velocty代码,我得到以下输出-
try
    to
    figure
    it

try,$!iter,
因此,我想您需要在代码中的某处添加一个空检查来避免这种情况。 谢谢 1 PS:正如@Thilo Im指出的那样,不确定方括号来自哪里,也不确定这是否是所需的行为。     ,        使用力度工具执行此操作 例如
#set($display = $utils.getClass().forName(\"org.apache.velocity.tools.generic.DisplayTool\").newInstance())
#set($myArray=[\"nando\",\"bob\",\"don\"])
$display.list($myArr,\",\")
就是这样,结果将是nando,bob,don 如果您不将第二个参数包括在list方法中,则会得到 南多,鲍勃和唐     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。