在NVelocity中设置负文字



我试图在NVelocity模板中设置一个负文本,但它无法解析。有什么诀窍可以让它发挥作用吗?

正数有效:
#套($age=27)

负数无效:
#集($age=-27)
#套($age=27*-1)

词法错误:NVelocity.Runtime.Parser.TokenMgrError:第62行第15列出现词法错误。遇到:"-"

我使用的是Castle.NVelocity(dll AssemblyVersion 1.1.1.0,FileVersion=1.1.1.60),而不是旧的Apache版本

你能提供一个失败的单元测试吗?因为负文本对我有效。我使用了NVelocity源代码库的HEAD,但我不知道自1.1.1发布以来该领域有任何变化。如果我的单元测试在那个构建中失败了,如果你愿意的话,我可以看看这是什么时候修复的。

[Test]
public void NegativeLiterals()
{
    Assert.AreEqual("-27", Eval("#set($result = -27)rn$result"));
    Assert.AreEqual("-27", Eval("#set($result = 27 * -1)rn$result"));
    Assert.AreEqual("-27", Eval("#set($result = 27*-1)rn$result"));
    Assert.AreEqual("27", Eval("#set($result = -27*-1)rn$result"));
}
private string Eval(string template)
{
    VelocityEngine velocityEngine = new VelocityEngine();
    velocityEngine.Init();
    using (StringWriter sw = new StringWriter())
    {
        bool ok = velocityEngine.Evaluate(new VelocityContext(), sw, "", template);
        Assert.IsTrue(ok, "Evaluation returned failure");
        return sw.ToString();
    }
}

相关内容

  • 没有找到相关文章

最新更新