模板引擎Velocity学习系列-#set指令
#set指令
#set指令用于向一个变量或者对象赋值。
格式: #set($var = value)
LHS是一个变量,不要使用特殊字符例如英文句号等,不能用大括号括起来。测试发现#set($user.name = 'zhangsan'),#set(${age} = 18)均赋值失败。
RHS可以是变量、字符串字面值、数字字面值、方法、ArrayList、Map、表达式。
测试案例
User对象类
public class User {
private String name;
private int age;
public User(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
测试类TestVelocity
public class TestVelocity {
public static void main(String[] args) {
VelocityEngine engine = new VelocityEngine();
// 初始化VelocityEngine
engine.setProperty("resource.loader", "file");
engine.setProperty("file.resource.loader.class",
"org.apache.velocity.runtime.resource.loader.FileResourceLoader");
engine.setProperty("input.encoding", "utf8");
engine.setProperty("output.encoding", "utf8");
engine.setProperty(VelocityEngine.FILE_RESOURCE_LOADER_PATH, "D:\\conf");
engine.init();
Template template = engine.getTemplate("hellovelocity.vm");
VelocityContext ctx = new VelocityContext();
ctx.put("user", new User("zhangsan", 18));
StringWriter stringWriter = new StringWriter();
template.merge(ctx, stringWriter);
System.out.println(stringWriter.toString());
}
}
测试模板文件 hellovelocity.vm
#set($name = 'john')
#set($age = 18)
#set($array = ['a', 'b', 'c'])
#set($map = {'a' : 'a', 'b' : 'b', 'c' : 'c'})
#set($userName = "$!{user.getName()}")
#set($userAge = "$!{user.getAge()}")
#set($userTest1 = $user.getAge_())
#set($userTest2 = "$!{user.getAge_()}") $name $age $array.get(0) $array.get(1) $array.get(2) $map.get('a') $map.get('b') $map.get('c')
$userName $userAge $userTest1 $userTest2
输出结果
john 18 a b c a b c
zhangsan 18 $userTest1
说明:
#set($userTest1 = $user.getAge_())
#set($userTest2 = "$!{user.getAge_()}")
右边$!{user.getAge_()}表达式计算失败情况下,放在双引号里面,赋值空串,放在外面将不会赋值。
在使用#set时,字符串的字面值如果放在双引号里,将会被解析,放在单引号里面,将会被当做字面量。
#set($test1 = "$userName") #set($test2 = '$userName') $test1=字符串zhangsan,$test2=字符串$userName。
模板引擎Velocity学习系列-#set指令的更多相关文章
- 模板引擎 Velocity
模板引擎 Velocity 一.Velocity简介: Velocity是一个基于java的模板引擎(template engine).它允许任何人仅仅简单的使用模板语言(template langu ...
- lavarel模板引擎blade学习
blade 模板学习 特点 主要的两个优点是:模板继承和区块 继承页面布局 布局文件(layout.php) + 详情文件 (page.php) 的组合,即一般到具体的组合.在blade文件之中的体现 ...
- web基础----->模板引擎Velocity的使用(一)
Velocity 是一个基于 Java 的模板引擎框架,提供的模板语言可以使用在 Java 中定义的对象和变量上.今天我们就学习一下Velocity的用法. Velocity的第一个例子 项目的主体是 ...
- [Java] 模板引擎 Velocity 随笔
Velocity 是一个基于 Java 的模板引擎. 本博文演示 Velocity 的 HelloWord 以及分支条件. HelloWord.vm,模板文件. templateDemo.java, ...
- OSCHina技术导向:Java模板引擎velocity
OSChina 采用 velocity 作为页面模板 Velocity是一个基于java的模板引擎(template engine).它允许任何人仅仅简单的使用模板语言(template langua ...
- apache的开源项目-模板引擎(Velocity)(转)
然后修改conf文件下的server.xml文件,在server.xml里的 <Connector port="8080" .... />字段后 ...
- web基础----->模板引擎Velocity的使用(二)
这里面是关于velocity的一些用法,比较基础的使用.愿你生命中有够多的云翳,来造成一个美丽的黄昏. velocity生成javaBean 一.定义一个简单的bean类 public class C ...
- 模板引擎jade学习
语言参考 标签列表 doctype Tags Block Expansion Attributes Boolean Attributes Class Attributes Class Literal ...
- Velocity模板引擎入门
类似于PHP中的Smarty,Velocity是一个基于Java的模板引擎(template engine).它允许任何人仅仅简单的使用模板语言(template language)来引用由java代 ...
随机推荐
- 快速了解Python并发编程的工程实现(下)
关于我 一个有思想的程序猿,终身学习实践者,目前在一个创业团队任team lead,技术栈涉及Android.Python.Java和Go,这个也是我们团队的主要技术栈. Github:https:/ ...
- 讲解开源项目:功能强大的 JS 文件上传库
本文作者:HelloGitHub-kalifun HelloGitHub 的<讲解开源项目>系列,项目地址:https://github.com/HelloGitHub-Team/Arti ...
- BeanUtils开发包的使用
对内省技术有了一定的了解之后,我们就可以来学习一下BeanUtils开发包的使用了. 我们先假设一个情景,有一个JSP文件,如果要将该JSP文件中表单数据封装到Servlet文件应该怎么办?此时方法显 ...
- Nginx总结(二)基于ip的虚拟主机配置
前面讲了如何安装配置Nginx,大家可以去这里看看nginx系列文章:https://www.cnblogs.com/zhangweizhong/category/1529997.html 今天要说的 ...
- Linux Capabilities 简介
为了执行权限检查,Linux 区分两类进程:特权进程(其有效用户标识为 0,也就是超级用户 root)和非特权进程(其有效用户标识为非零). 特权进程绕过所有内核权限检查,而非特权进程则根据进程凭证( ...
- c#滑窗缓存
前言 在大数据时代,软件系统需要具备处理海量数据的能力,同时也更加依赖于系统强大的存储能力与数据响应能力.各种大数据的工具如雨后春笋般孕育而生,这对于系统来说是极大的利好.但在后端采用分布式.云存储和 ...
- Nacos(九):Nacos集群部署和遇到的问题
前言 前面的系列文章已经介绍了Nacos的如何接入SpringCloud,以及Nacos的基本使用方式 之前的文章中都是基于单机模式部署进行讲解的,本文对Nacos的集群部署方式进行说明 环境准备 J ...
- Java网络编程之URLConnection
Java网络编程之URLConnecton 一.URLConnection简介 URLConnection是一个抽象类,表示指向URL指定资源的活动连接.URLConnection有两个不同但相关的用 ...
- 正则表达式-Regex详解
1.什么是正则表达式 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符.及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑.给定一个正 ...
- 2019DX#5
Solved Pro.ID Title Ratio(Accepted / Submitted) 1001 fraction 辗转相除 4.17%(7/168) ok 1002 three arr ...