[英]setting negative literals in NVelocity
我正在嘗試在我的NVelocity模板中設置否定文字,並且它不會解析。 進行這項工作有技巧嗎?
正數起作用:
#set($ age = 27)
負數不起作用:
#set($ age = -27)
#set($ 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)\r\n$result"));
Assert.AreEqual("-27", Eval("#set($result = 27 * -1)\r\n$result"));
Assert.AreEqual("-27", Eval("#set($result = 27*-1)\r\n$result"));
Assert.AreEqual("27", Eval("#set($result = -27*-1)\r\n$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();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.