velocity:允许赋值语句赋值null:#set( $var = ...)

2024-06-11 17:20

本文主要是介绍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 = ...)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1051799

相关文章

C# 中变量未赋值能用吗,各种类型的初始值是什么

对于一个局部变量,如果未赋值,是不能使用的 对于属性,未赋值,也能使用有系统默认值,默认值如下: 对于 int 类型,默认值是 0;对于 int? 类型,默认值是 null;对于 bool 类型,默认值是 false;对于 bool? 类型,默认值是 null;对于 string 类型,默认值是 null;对于 string? 类型,哈哈,没有这种写法,会出错;对于 DateTime 类型,默

SQL Server中,isnull()函数以及null的用法

SQL Serve中的isnull()函数:          isnull(value1,value2)         1、value1与value2的数据类型必须一致。         2、如果value1的值不为null,结果返回value1。         3、如果value1为null,结果返回vaule2的值。vaule2是你设定的值。        如

brew install opencv@2 时报错 Error: Can't create update lock in /usr/local/var/homebrew/locks!

解决方案,报错里已经说明了: 我的解决方案: sudo chown -R "$USER":admin /usr/local   stackoverflow上的答案 I was able to solve the problem by using chown on the folder: sudo chown -R "$USER":admin /usr/local Also you'

BD错误集锦3——ERROR: Can't get master address from ZooKeeper; znode data == null

hbase集群没启动,傻子!   启动集群 [s233 s234 s235]启动zk集群 $>zkServer.sh start $>zkServer.sh status   [s233] 启动dfs系统 $>start-dfs.sh 如果s237 namenode启动失败,则 [s237] $>hadoop-daemon.sh start namenode [s233]启动yarn集群

[分布式网络通讯框架]----Zookeeper客户端基本操作----ls、get、create、set、delete

Zookeeper数据结构 zk客户端常用命令 进入客户端 在bin目录下输入./zkCli.sh 查看根目录下数据ls / 注意:要查看哪一个节点,必须把路径写全 查看节点数据信息 get /第一行代码数据,没有的话表示没有数据 创建节点create /sl 20 /sl为节点的路径,20为节点的数据 注意,不能跨越创建,也就是说,创建sl2的时候,必须确保sl

Java零基础-集合:Set

哈喽,各位小伙伴们,你们好呀,我是喵手。运营社区:C站/掘金/腾讯云;欢迎大家常来逛逛   今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一个人虽可以走的更快,但一群人可以走的更远。   我是一名后端开发爱好者,工作日常接触到最多的就是Java语言啦,所以我都尽量抽业余时间把自己所学到所会的,通过文章的形式进行输出,希望以这种方式帮助到更多的初

MySQL——Insert语句详解

语法: INSERT INTO 表名([字段名1,字段名2,字段名3])VALUES('值1'),('值2'),('值3'),······  注意事项: ·  字段和字段之间,使用英文逗号隔开 ·  字段是可以省略的,但是后面的值必须一一对应,不能少 ·  可以同时插入多条数据,VALUES后面的值,需要使用逗号隔开    VALUES( ) , ( ) 代码演示: --

sqlplus,set linesize ,set pagesize,

http://news.newhua.com/news1/program_database/2010/35/103515315648FH5964A3880I1AFJ6AADGE596E1HFE0375AJKHC4F41.html   Oracle里的set零零碎碎的,这里整理归纳一下 SQL> set timing on;          //设置显示“已用时间:XXXX

为什么 C++ 允许不安全的代码(Bjarne Stroustrup)

为什么 C++ 允许不安全的代码? 也就是说,为什么 C++ 支持可以用来违反静态(编译时)类型安全规则的操作? 为了直接访问硬件(例如,把整数当作指向设备寄存器的指针)为了获取最佳的运行时效率和空间效率(例如,不检测访问数组元素的操作(是否越界),不检测访问对象的指针(是否有效))为了和 C 兼容 所以,当你并不需要以上三种特性时,最好避免有如瘟疫般的不安全代码: 不要用类型转换(cas

webstorm 允许他人通过ip访问项目

webstorm 允许他人通过ip访问项目 如题,在网上搜配置局域网ip访问项目的相关问题,很多都有解释,这里主要是针对wenbstorm设置后依旧无法访问,做下记录。 如图所示,端口需要4位数,相应的地方需要打钩,到这一步,基本就可以通过ip和端口进行远端项目访问。如果还不行,基本就是防火墙的问题。解决步骤如下: 打开windows防火墙,找到webstorm,此时应该处于关闭