当VelocityContext中找不到值时,Velocity可以为变量设置默认值吗?

hiw*_*way 6 velocity

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)


Wil*_* C. 9

在模板中创建一个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用户指南.