#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指令的更多相关文章

  1. 模板引擎 Velocity

    模板引擎 Velocity 一.Velocity简介: Velocity是一个基于java的模板引擎(template engine).它允许任何人仅仅简单的使用模板语言(template langu ...

  2. lavarel模板引擎blade学习

    blade 模板学习 特点 主要的两个优点是:模板继承和区块 继承页面布局 布局文件(layout.php) + 详情文件 (page.php) 的组合,即一般到具体的组合.在blade文件之中的体现 ...

  3. web基础----->模板引擎Velocity的使用(一)

    Velocity 是一个基于 Java 的模板引擎框架,提供的模板语言可以使用在 Java 中定义的对象和变量上.今天我们就学习一下Velocity的用法. Velocity的第一个例子 项目的主体是 ...

  4. [Java] 模板引擎 Velocity 随笔

    Velocity 是一个基于 Java 的模板引擎. 本博文演示 Velocity 的 HelloWord 以及分支条件. HelloWord.vm,模板文件. templateDemo.java, ...

  5. OSCHina技术导向:Java模板引擎velocity

    OSChina 采用 velocity 作为页面模板 Velocity是一个基于java的模板引擎(template engine).它允许任何人仅仅简单的使用模板语言(template langua ...

  6. apache的开源项目-模板引擎(Velocity)(转)

    然后修改conf文件下的server.xml文件,在server.xml里的           <Connector port="8080" .... />字段后   ...

  7. web基础----->模板引擎Velocity的使用(二)

    这里面是关于velocity的一些用法,比较基础的使用.愿你生命中有够多的云翳,来造成一个美丽的黄昏. velocity生成javaBean 一.定义一个简单的bean类 public class C ...

  8. 模板引擎jade学习

    语言参考 标签列表 doctype Tags Block Expansion Attributes Boolean Attributes Class Attributes Class Literal ...

  9. Velocity模板引擎入门

    类似于PHP中的Smarty,Velocity是一个基于Java的模板引擎(template engine).它允许任何人仅仅简单的使用模板语言(template language)来引用由java代 ...

随机推荐

  1. JAVA开发奇淫巧技(一)

    本章节持续收录常用且好用的IDE开发工具,基于myeclipse 1.Lombok是一种Java实用工具,可以帮助开发人员消除Java的冗长,具体看lombok的官网:http://projectlo ...

  2. springboot + jedisCluster

    如果使用的是redis2.x,在项目中使用客户端分片(Shard)机制. 如果使用的是redis3.x中的集群,在项目中使用jedisCluster. 1.项目结构 2.pom.xml 1 <? ...

  3. 启xin宝app的token算法破解——抓包分析篇(一)

    为了提升逆向技术,最近几日研究了企cha查的sign和启xin宝的token算法,目前已经成功破解,两个app均是最新版,并将企cha查写成爬虫小demo,放在github上,详情查看 https:/ ...

  4. egret之一维,二维数组

    一维数组转换成二维数组下标公式: 行=下标/二维数组列数 列=下标%二维数组列数+1 ] + ); ] + ); 二维数组转一维数组: 下标=(二维数当前行-1)*列数+二维数当前列-1: let i ...

  5. lua_基本语法

    学习lua,首先应该了解热更新. 热更新:可以在不重新下载客户端的情况下更新软件内容.在使用软件过程中,我们经常会遇到这种情况:升级软件,没错,这就使用的是热更新. C#不能直接热更新,原因为:C#脚 ...

  6. 欧几里得(Euclid)与拓展的欧几里得算法

    欧几里得(Euclid)与拓展的欧几里得算法 欧几里得(Euclid)与拓展的欧几里得算法 欧几里得算法 原理 实现 拓展的欧几里得算法 原理 递归求解 迭代求解 欧几里得算法 原理 欧几里得算法是一 ...

  7. 2019-07-26-hexo博客图片问题

    本人的解决方案 *** 将hexo的主页配置文件中的_config.yml里的post_asset_folder设置为true. 在git bash里运行npm install hexo-asset- ...

  8. WebGL简易教程(三):绘制一个三角形(缓冲区对象)

    目录 1. 概述 2. 示例:绘制三角形 1) HelloTriangle.html 2) HelloTriangle.js 3) 缓冲区对象 (1) 创建缓冲区对象(gl.createBuffer( ...

  9. 洛谷 P3627 【抢掠计划】

    题库:洛谷 题号:3627 题目:抢掠计划 link:https://www.luogu.org/problem/P3627 思路 : 这道题是一道Tarjan + 最长路的题.首先,我们用Tarja ...

  10. HDU - 4370 0 or 1 最短路

    HDU - 4370 参考:https://www.cnblogs.com/hollowstory/p/5670128.html 题意: 给定一个矩阵C, 构造一个A矩阵,满足条件: 1.X12+X1 ...