资讯专栏INFORMATION COLUMN

velocity (vm)模板引擎笔记--上

MasonEast / 3044人阅读

摘要:什么是是基于的模板引擎,它允许页面设计者引用中定义的方法。注意会保留你所留下的空格,所以如拼字符串时都是鼓励用。结果输出因为右边的并没有定义过模板中不会将解释为对象的实例变量。等同于等同于等同于等同于变量的作用域是从上而下往后的都会有。

什么是 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 
保障额度高 B $monkey

年度基础免赔额:1万元 

C $monkey
D $monkey
住院医疗金

重症监护费用:不设单项最高年限额

E $monkey
以上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
#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...

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/105723.html

相关文章

  • 工具集核心教程 | 第四篇: Velocity模板引擎入门到进阶

    摘要:是一个基于的模板引擎。模板中未被定义的变量将被认为是一个字符串。公众号回复全栈,领取前端,,产品经理,微信小程序,等资源合集大放送。公众号回复面试,领取面试实战学习资源。 Velocity是一个基于java的模板引擎(template engine)。它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象。 当Velocity应用于web...

    leon 评论0 收藏0
  • 动手搭建后端框架-Velocity模板引擎的应用

    摘要:目录建造者模式应用。其实不用也可以,因为不是很复杂,只是为了复习一下所学过的设计模式知识目录工厂模式应用。 为了提高开发效率,通常会想办法把一些模式固定的重复性的劳动抽取出来,以后再使用的时候,拿来主义就可以了。这样既可以提高开发效率,又降低了出错的风险。 这一思想在我们的日常工作中可以说随处可见,我们完成一项复杂的工程,并不需要面面俱到什么都自己写,我们完全可以利用第三方的jar包让...

    villainhr 评论0 收藏0
  • velocity的基本使用 && 实例讲解

    摘要:的简介是一个基于的模板引擎。使用,也可以写成。所以,应该使用规范的格式书写现在知道变量是而不是。如当页面中包含,如果对象有值,将显示的值,如果不存在对象同,则在页面中将显示字符。 velocity的简介 Velocity是一个基于java的模板引擎(template engine)。它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象,...

    zhunjiee 评论0 收藏0
  • velocity的基本使用 && 实例讲解

    摘要:的简介是一个基于的模板引擎。使用,也可以写成。所以,应该使用规范的格式书写现在知道变量是而不是。如当页面中包含,如果对象有值,将显示的值,如果不存在对象同,则在页面中将显示字符。 velocity的简介 Velocity是一个基于java的模板引擎(template engine)。它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象,...

    scq000 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<