我正在使用 Velocity 1.7 来格式化字符串,但我在使用默认值时遇到了一些问题。Velocity 本身没有特殊语法来处理未设置值并且我们想使用另一个默认值的情况。通过速度,它看起来像:
#if(!${name})Default John#else${name}#end
这对我的情况不方便。谷歌搜索后,我找到了 DisplayTool,根据文档,它看起来像:
$display.alt($name,"Default John")
所以我添加了 maven 依赖项,但不确定如何将 DisplayTool 添加到我的方法中,并且很难找到相关说明。也许有人可以提供建议或提供有用的链接?...
我的方法:
public String testVelocity(String url) throws Exception{
Velocity.init();
VelocityContext context = getVelocityContext();//gets simple VelocityContext object
Writer out = new StringWriter();
Velocity.evaluate(context, out, "testing", url);
logger.info("got first results "+out);
return out.toString();
}
当我发送
String url = "http://www.test.com?withDefault=$display.alt(\"not null\",\"exampleDefaults\")&truncate=$display.truncate(\"This is a long string.\", 10)";
String result = testVelocity(url);
我得到 "http://www.test.com?withDefault=$display.alt(\"not null\",\"exampleDefaults\")&truncate=$display.truncate(\"This is a long string.\" , 10)" 没有变化,但应该得到
"http://www.test.com?withDefault=not null&truncate=This is...
请告诉我我错过了什么。谢谢。