【Velocity】 (vm)模板引擎
什么是 Velocity?
Velocity是基于Java的模板引擎,它允许页面设计者引用Java中定义的方法。页面设计者和Java开发者能够同时使用MVC的模式开发网站,这样网页设计者能够把精力放在页面的设计上,程序员也可以把精力放在代码开发上。Velocity把Java代码从Web页面中分离, 使网站可维护性更强,同时也在Java服务器页面(JSPs)或者PHP中提供了可视化交互的选择。
一、注释
单行: ## 句子
多行: #* 句子句子 *#
文档格式: #** 句子句子 **#
二、变量
赋值和读取:
//赋值
#set($name = “hello”)
//读取
${name} ,也可以写成:$name。
注意: VM会保留你所留下的空格,所以如拼字符串时 都是鼓励用{}。
eg:
#if($a==1)true enough#elseno way!#end // 这时候会报错 因为没有#elseno这个的语法
#if($a==1)true enough#else no way!#end //这个时候no way前面会有空格
#if($a==1)true enough#{else}no way!#end // 正确示范
注意几点:
- 1.右值是null, 则左值不会被赋值,也就是说会保留以前的值。
eg:
#set( $monkey = "monica" )
#set( $monkey = $monkey_a )
$monkey
结果输出:monica
因为右边的$monkey_a并没有定义过
- 2.velocity模板中不会将reference解释为对象的实例变量。
$foo.Name将被解释为Foo对象的getName()方法,而不是Foo对象的Name实例变量。
$foo.getBar() 等同于$foo.Bar
$data.getUser("jon") 等同于$data.User("jon")
data.getRequest().getServerName() 等同于
$data.Request.ServerName等同于${data.Request.ServerName}
- 3.变量的作用域 是从上而下往后的都会有。 踩过这个坑,描述也不太对看例子
A $monkey
<div class="list">
<div class="item">
<div class="inner-title">
#set( $monkey = "jerry" )
<span class="color_bg point"></span>保障额度高
B $monkey
</div>
<div class="inner-list">
<p>年度基础免赔额:<span class="color bold">1万元</span> </p>
</div>
C $monkey
</div>
<div class="item">
D $monkey
<div class="inner-title">
<span class="color_bg point"></span>住院医疗金
</div>
<div class="inner-list">
<p>重症监护费用:不设单项最高年限额</p>
</div>
</div>
E $monkey
</div>
以上ABCDE的输出结果是
输出结果: 除了A是字符串显示$monkey , 其余的都是:jerry
三、循环
#foreach ($item in $list)
$foreach.index //自带方法 : 计数从0开始 相当于index
$foreach.hasNext //自带方法 : 等于false代表是最后一个
$foreach.count //自带方法 : 计数 从1开始 相对于$velocityCount
$foreach.first //自带方法 : 是否是第一个
$foreach.last //自带方法 : 是否是最后一个
#if( $foreach.count > 3 )
#break //使用 #break指令在任何时候停止循环
#end
$velocityCount //计数 从1开始
This is $item</br>
#end
输出: 1 this is a
//$velocityCount 计数
-------------------------------
例如数据格式
$datas的值:
{
{“key123":{"bonus":"1","name":"aa"}},
{"key124”:{"bonus”:"2","name":”bb"}}
}
$yanShi的值:
{
{“key123":{"title":"特殊门诊医疗金","values":[600000,600000,600000]}},
{"key124”:{"title”:”住院医疗金","values”:[100000,200000,600000]}}
}
方法一:
#foreach ( $key in $datas.keySet())
Key: $key -> Value: $datas.get($key)
#end
输出:Key:key123 -> Value: {"bonus":"1","name":"aa"}
方法二:
#foreach ( $key in $bonus_datas.entrySet())
Key: $key.getKey() -> Value: $key.getValue()
$yanShi.getJSONObject($key.getKey()).get(“title”)
//例如循环datas里面再对应去读yanShi的title
#end
输出:Key:key123 -> Value: {"bonus":"1","name":"aa"}
再补充一些读取不同数据的方法:
.get()
.getString()
.getJSONArray()
.getJSONObject()
.getBooleanValue()
四、条件语句
#if (condition)
#elseif (condition)
#else
#end
五、关系逻辑符
not && ||
#if ( ! $foo)#end
#if ($foo && $foo)#end
#if ($foo1 || $foo2)#end
数组的常用方法操作:
$myarray.isEmpty()数组是否为空
$myarray.size()获取数组元素个数
$myarray.get(2)获取数组指定下标的元素
$myarray.add()增加元素
来源参考:
中文:http://ifeve.com/apache-veloc...
英文:http://velocity.apache.org/en...
参考: http://www.blogjava.net/alexw...
mark一下 仅供参考 欢迎更正补充 end
喈喱前端笔记
学习的付出 从不欺人
推荐阅读
【题目】扁平数据结构转Tree
面试了十几个高级前端,竟然连(扁平数据结构转Tree)都写不出来具体题目详情点击上面查看,树转扁平做得多,扁平转树还真没写过。有意思。上午看到做个笔迹记录下。扁平数据如下: {代码...} 输出结果如下,无限...
Jerry阅读 592
从零搭建 Node.js 企业级 Web 服务器(零):静态服务
过去 5 年,我前后在菜鸟网络和蚂蚁金服做开发工作,一方面支撑业务团队开发各类业务系统,另一方面在自己的技术团队做基础技术建设。期间借着 Node.js 的锋芒做了不少 Web 系统,有的至今生气蓬勃、有的早已夭折...
乌柏木赞 143阅读 12k评论 10
从零搭建 Node.js 企业级 Web 服务器(十五):总结与展望
总结截止到本章 “从零搭建 Node.js 企业级 Web 服务器” 主题共计 16 章内容就更新完毕了,回顾第零章曾写道:搭建一个 Node.js 企业级 Web 服务器并非难事,只是必须做好几个关键事项这几件必须做好的关键事项就...
乌柏木赞 60阅读 6k评论 16
再也不学AJAX了!(二)使用AJAX ① XMLHttpRequest
「再也不学 AJAX 了」是一个以 AJAX 为主题的系列文章,希望读者通过阅读本系列文章,能够对 AJAX 技术有更加深入的认识和理解,从此能够再也不用专门学习 AJAX。本篇文章为该系列的第二篇,最近更新于 2023 年 1...
libinfs赞 39阅读 6.2k评论 12
从零搭建 Node.js 企业级 Web 服务器(一):接口与分层
分层规范从本章起,正式进入企业级 Web 服务器核心内容。通常,一块完整的业务逻辑是由视图层、控制层、服务层、模型层共同定义与实现的,如下图:从上至下,抽象层次逐渐加深。从下至上,业务细节逐渐清晰。视图...
乌柏木赞 41阅读 7.2k评论 6
【关于Javascript】--- 正则表达式篇
基础知识一、元字符 {代码...} 二、量词 {代码...} 三、集合 字符类 {代码...} 四、分支 {代码...} 五、边界 开始结束 {代码...} 六、修饰符 {代码...} 七、贪婪模式和非贪婪模式js默认贪婪模式即最大可能的匹配...
Jerry赞 35阅读 2.9k
从零搭建 Node.js 企业级 Web 服务器(二):校验
校验就是对输入条件的约束,避免无效的输入引起异常。Web 系统的用户输入主要为编辑与提交各类表单,一方面校验要做在编辑表单字段与提交的时候,另一方面接收表单的接口也要做足校验行为,通过前后端共同控制输...
乌柏木赞 32阅读 6.1k评论 9
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。