Velocity只是打印标签名称,如果在VelocityContext中没有找到任何值,即我的模板文件中的$ name,但VelocityContext中没有"name"的值,所以只打印了"$ name".我希望Velocity在没有变量值的情况下打印默认值,我只是尝试扩展AbstractCotnext并覆盖internalGet()方法,但是internalGet()的返回值将被强制转换为Node对象,我不知道如何在我的internalGet()方法中创建一个新的Node对象,我认为这种方式非常复杂.
是否有一种设置默认值的简单方法(默认值只是一个字符串)?
谢谢.
cen*_*tic 19
据我所知,对于所有变量都不容易,我只是设法为某些变量做了如下具体操作:
模板:
#if ( !$somevar )
#set ( $somevar = "mycontent" )
#end
Var is: $somevar
Run Code Online (Sandbox Code Playgroud)
结果:
Var is: mycontent
Run Code Online (Sandbox Code Playgroud)
在模板中创建一个velocimacro:
#macro(defaultValue $parm)
#if (!$!parm || $!parm == "")
i-like-will
#else
$parm
#end
#end
Run Code Online (Sandbox Code Playgroud)
并在同一个模板中调用它:
#defaultValue($name)
Run Code Online (Sandbox Code Playgroud)
有关velocimacros(和一般速度)的更多信息,请查看Apache Velocity - Velocity用户指南.