我已经编写了非常基本的 Velocity 模板,它使用#foreach
指令。当我运行它时,我在日志中收到以下消息:
[警告]directive.foreach.iterator.name 属性已被弃用。它将在 Velocity 2.0 中被删除(连同 $velocityHasNext 本身)。相反,请使用 $foreach.hasNext 从现在开始访问此值。
但问题是我不使用这个属性,至少是明确的。我只是#foreach
以基本形式使用循环,正如用户指南中所示。
下面是产生此日志警告的简单代码。速度版本是 1.7。
final Properties properties = new Properties();
VelocityEngine velocityEngine = new VelocityEngine();
velocityEngine.init(properties);
StringWriter stringWriter = new StringWriter();
Map<String, Object> velocityVars = new HashMap<>();
List<Date> dates = new ArrayList<>();
dates.add(new Date());
dates.add(new Date());
velocityVars.put("dates", dates);
VelocityContext velocityContext = new VelocityContext(velocityVars);
String template =
"foo\n" +
"#foreach($d in $dates)\n" +
" $d\n" +
"#end \n" +
"bar";
velocityEngine.evaluate(velocityContext, stringWriter, "blah", template);
System.out.println(stringWriter.toString());
所以问题是 - 为什么会记录此警告以及如何构建我的代码以防止它出现?