Apache Velocity中的错误或隐藏功能

时间:2015-09-27 06:30:17

标签: java templates velocity

我使用Apache Velocity 1.7进行Perl代码生成。并且有典型的Perl语法用于通过键($map{key})从哈希访问值,这使得Velocity变得疯狂。以下是显示我的问题的代码:

    String template = "#$language hash usage example:\n" +
            "my $value = $map{key};";
    Map<String, Object> context = new HashMap<String, Object>();
    context.put("language", "Perl");
    VelocityContext cntx = new VelocityContext(context);
    StringWriter output = new StringWriter();
    Velocity.evaluate(cntx, output, "Template1", template);
    System.out.println(output.toString());

以下是我在输出中的内容:

    #Perl hash usage example:
    my $value = $map{;

我试图在文档中找到有关此类行为的内容,但失败了。有没有人知道那里发生了什么?

1 个答案:

答案 0 :(得分:1)

这绝对是一个错误。我在代码库中修复它,但在等待下一个版本(可能需要一段时间)时,以下模板将保持perl模板文件的可维护性并避免错误:

 my $value = $map{ key };

只有前面的空间是必要的,第二个空间是出于审美目的。