本文主要是介绍velocity:允许赋值语句赋值null:#set( $var = ...),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
velocity的模板中赋值语句#set( $var= ....)
默认是不允许对变量设置为null的。
参见velocity官方文档说明:https://velocity.apache.org/engine/devel/vtl-reference.html#set-establishes-the-value-of-a-reference
因为不能赋值null,在循环语句中,变量的值就还是停留在上一个不为null的值,就会导致生成的内容混乱。所以我在实际应用中需要允许#set
语句赋值null.
经过仔细跟踪代码,发现可以通过设置参数配置模板引擎(VelocityEngine)允许null赋值。
示例如下:
VelocityEngine velocityEngine = new VelocityEngine();
/** 允许 set null */
velocityEngine.setProperty(VelocityEngine.SET_NULL_ALLOWED, "true");
也可以将配置参数封装为以Properties
对象,然后调用Velocity.init(Properties)
方法来初始化模板引擎:
public static void init(Properties vprops) {if (null == vprops) {vprops = new Properties();/** 设置velocity默认的初始化参数 */vprops.put(Velocity.SET_NULL_ALLOWED, "true");vprops.put(Velocity.INPUT_ENCODING, "UTF-8");vprops.put(Velocity.OUTPUT_ENCODING, "UTF-8");vprops.put(Velocity.RESOURCE_LOADER, "classpath");}Velocity.init(vprops);}
VelocityEngine.SET_NULL_ALLOWED
是定义在org.apache.velocity.runtime.RuntimeConstants
中的一个常量:
/** if set to true then allows #set to accept null values in the right hand side. */String SET_NULL_ALLOWED = "directive.set.null.allowed";
这篇关于velocity:允许赋值语句赋值null:#set( $var = ...)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!