#foreach
ディレクティブを使用するかなり基本的なVelocityテンプレートを作成しました。実行すると、ログに次のメッセージが表示されます。
[警告]directive.foreach.iterator.nameプロパティは非推奨になりました。Velocity 2.0では($velocityHasNext自体とともに)削除されます。代わりに、$ foreach.hasNextを使用して、今後この値にアクセスしてください。
しかし、問題は、少なくとも明示的に、このプロパティを使用しないことです。ユーザーガイド#foreach
に示されているように、基本的な形式でループを使用します。
以下は、このログ警告を生成する単純なコードです。Velocityバージョンは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());
したがって、問題は、この警告がログに記録されるのはなぜですか。また、コードが表示されないようにコードを構造化するにはどうすればよいですか。