Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Velocity#foreach未按预期工作,字符串作为$value变量传递_Java_String_Foreach_Velocity - Fatal编程技术网

Java Velocity#foreach未按预期工作,字符串作为$value变量传递

Java Velocity#foreach未按预期工作,字符串作为$value变量传递,java,string,foreach,velocity,Java,String,Foreach,Velocity,我最近没有太多地使用Velocity,但我确信以前使用过的东西现在不起作用了——我能想到的唯一区别是,自从我上次使用它以来,现在我们从v1.6.4升级到了v1.7 在Java代码中,我们向脚本上下文添加了一个值,该值是一个逗号分隔的字符串,沿 context.put("value", "'a','b','c'") (本例已对此进行了简化) 在我的速度代码中,如果我说: $value -- it prints 'a','b','c' $value.split(",")[0] -- it prin

我最近没有太多地使用Velocity,但我确信以前使用过的东西现在不起作用了——我能想到的唯一区别是,自从我上次使用它以来,现在我们从v1.6.4升级到了v1.7

在Java代码中,我们向脚本上下文添加了一个值,该值是一个逗号分隔的字符串,沿

context.put("value", "'a','b','c'")
(本例已对此进行了简化)

在我的速度代码中,如果我说:

$value -- it prints 'a','b','c'
$value.split(",")[0] -- it prints 'a'
$value.split(",").size() -- it prints 3
然而,如果我试着说

#foreach ( $val in $value.split(",") )
  -- $val
#end
它不打印任何东西。事实上,如果我说

#set ( $val = $value.split(",") ) 
#if ( ! $val ) 
  -- print null message here
#end
它进入if块并表示$val为null

有一次,我认为我会很聪明,按照下面的思路做一些事情

#set ( $count = $value.split(",").size() )
#foreach ( $item in [0..$count] )
   -- reference $value.split(",")[$item]
#end
但它只是不想使用从$value派生的任何东西的RHS

最后,如果我做以下事情

#set ( $value = "'a','b','c'" )
#foreach ( $val in $value.split(",") ) 
  -- Write out $val
#end
它完全按照预期工作。将其作为变量传递到引擎中会导致无法正确处理

有人知道为什么这样不行吗?有什么可行的解决办法吗

提前感谢,


p、 s.

您需要将一个列表放入上下文中,foreach才能正常工作,如下所示:

context.put("value", Arrays.asList("a", "b", "c"));

谢谢,但不是我想要的答案。如果这是严格正确的,最后一个例子也不会起作用,但它确实起作用了。。。split()返回一个字符串数组,该数组应该是可编辑的-在web上有无数这样的例子,但我无法确定其中是否有一个是在v1.7中完成的…你确定没有像“变量名中有输入错误”这样简单的答案吗?它确实应该可以工作,并且在一个简单的测试中对我有效。您的语句“将它作为变量传递到引擎中会导致它无法正确处理”似乎是一个可能的解释,因为我也无法让它工作,除非我在中的
右侧执行
拆分。