velocity模板其实就是java不分语法的翻译,用到的属性还是java的方法,get,set,等

1.截取部分字段substring

 原始字符串:$!ag.tagValue,也许很长,前端页面展示时需要截取字符串。
#set($str=$!ag.tagValue) #if($str.length()>30)
#set($str=$str.substring(0,30))
$str ...
#else
$!ag.tagValue
#end

使用substring(begin,end)要注意,结束位置为:end索引-1

2.分割成数组split

 #if($!{result.creType} && $result.creType)
#foreach ($element in $result.creType.split(","))
#if($element == 1)
<script>document.getElementsByName("cretype")[0].checked="checked";</script>
#elseif($element == 2)
<script>document.getElementsByName("cretype")[1].checked="checked";</script>
#else
<script>document.getElementsByName("cretype")[2].checked="checked";</script>
#end
#end
#end

3.说到split成数组,就要看数组的几个可以用的方法

velocity 中的数组对应 Java 中的 List 对象。对于 Java 原生 Array 对象, 只能够 #foreach 进行遍历,无法使用 $arr[0] 和 $arr.get(0) 方法。

4.所以学java从不用数组,而用list

--事实上,list很方便,但list比数组效率低很多倍

  • $myarray.isEmpty()list是否为空
  • $myarray.size()获取list元素个数
  • $myarray.get(2)获取list指定下标的元素
  • $myarray.add()增加元素

5.计数用$velocityCount

在foreach中velocityCount表示循环的次数,从1开始,代表第一个循环。

6.空null和空字符串""的判断

在velocity中,非null被认为是真的,所以,判断null可以用

 #if($!变量名)
……
#else
……
#end

或者既可以判断null也可以判断空字符串

 #if("$!varName" != "")
不为null 或 ""
#else
……
#end

7.基本语法错误#end不要忘

最开始的时候经常#if就完了报错,后来都是写完if就end,最后写中间。

8.#macro其实也很简单

原来感觉不懂不敢碰,自从写了个velocity分页后就忽然觉得宏不要太好用。事情是这样的,当时地区三级联动需要多处调用,提取出成公共模块,用#parse导入后出现冲突,因为一个页面用两次地区联动代码,id就重复了。于是想把id给变成参数,当我需要这个公用代码的时候,把id当参数传进去,最后render的结果就是html代码的id为我的参数。这样看来,宏就是一个函数。

想要用宏,先写好,然后parse,然后调用。

一个简单的宏函数:

 #macro( d )
<tr><td></td></tr>
#end

使用它:如果在本页面,直接#d,如果是单独写了一个模板文件,那么需要先#parse(文件路径),再#d,如同js外部引用。

传参数的宏:

 #macro( tablerows $color $somelist )
#foreach( $something in $somelist )
<tr><td bgcolor=$color>$something</td></tr>
#end
#end

一个综合使用,分页

9引用外部文件#include和#parse

我开始经常用#include,后来发现刷新页面没变化,用#parse就好了。字面理解,一个是直接拿过来,一个是解析后。所以,如果是传html代码,可以直接include;若是包含velocity代码的要编译#parse.

velocity的一些用法的更多相关文章

  1. Velocity教程【转】

    原文:http://blog.csdn.net/qq_25237663/article/details/52262532 Velocity是一个基于Java的模板引擎,通过特定的语法,Velocity ...

  2. Velocity教程 (zhuan)

    http://blog.csdn.net/qq_25237663/article/details/52262532 ****************************************** ...

  3. 《Velocity 模板使用指南》中文版[转]

    转自:http://blog.csdn.net/javafound/archive/2007/05/14/1607931.aspx <Velocity 模板使用指南>中文版 源文见 htt ...

  4. Velocity.js初识

    Velocity.js官网:http://julian.com/research/velocity/ 兼容IE8和Android2.3 Velocity.js基本用法 效果图: CSS .box{ w ...

  5. Velocity的学习1

    Velocity 是一个基于Java的的模板引擎,通过特定的语法,速度可以获取在的Java语言中定义的对象,从而实现界面和Java的代码的真正分离,这意味着可以使用Velocity替代JSP的开发模式 ...

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

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

  7. Velocity学习

    原创:转载需注明原创地址 https://www.cnblogs.com/fanerwei222/p/11790482.html Velocity学习: 1. velocity对大小写敏感 2. ve ...

  8. Pyhton开源框架(加强版)

    info:Djangourl:https://www.oschina.net/p/djangodetail: Django 是 Python 编程语言驱动的一个开源模型-视图-控制器(MVC)风格的 ...

  9. Python开源框架

    info:更多Django信息url:https://www.oschina.net/p/djangodetail: Django 是 Python 编程语言驱动的一个开源模型-视图-控制器(MVC) ...

随机推荐

  1. JDK 对应的设计模式

    一.设计模式是什么 (1)反复出现问题的解决方案 (2)增强软件的灵活性 (3)适应软件不断变化二.学习JDK中设计模式的好处 (1)借鉴优秀代码的设计,有助于提高代码设计能力 (2)JDK的设计中体 ...

  2. SQL Server选取本周或上一周数据

    有关SQL Server中有关周的数据查询主要思路来自下面这个语句 select getdate(), dateadd(wk, datediff(wk, 0, DateAdd(Day,-1,getda ...

  3. Web Essentials之Markdown和自定义编辑器(Web Essentials完结)

    返回Web Essentials功能目录 本篇目录 功能 自定义编辑器 开源项目都会在项目的根目录放一个Readme.md文件来告诉读者一些重要的说明,那么就可以在VS中直接编辑Markdown文件. ...

  4. Python中的几种数据类型

    大体上把Python中的数据类型分为如下几类:   Number(数字) 包括int,long,float,complex String(字符串) 例如:hello,"hello" ...

  5. MYSQL分页存储过程及事务处理

    最近给客户做的一小系统是SQLSERVER的数据库,因为特殊原因要切换到MYSQL上去,切换数据库确实让人头疼的,SQLSERVER和MYSQL的存储过程还是有很大差别的,下面是我做切换时转换的MYS ...

  6. MySQL—FOREIGN KEY

    作用:保持数据一致性,完整性.实现一对一或一对多关系.(学习的过程中,老师说,实际的生产中,一般不使用物理上的外键约束的,都是使用逻辑上的外键约束) 要求: 父表与子表的存储引擎必须相等,而且只能是I ...

  7. C-Lodop 非典型应用

    Lodop是什么? 有人说她是报表打印工具,因为那个add_print_table语句把报表统计的那点事弄了个明明白白: 有人说她是条码打印工具,因为用了她再也不用后台生成条码图片了,前端一行指令就动 ...

  8. 缓存篇~第六回 Microsoft.Practices.EnterpriseLibrary.Caching实现基于方法签名的数据集缓存

    返回目录 这一讲中主要是说EnterpriseLibrary企业级架构里的caching组件,它主要实现了项目缓存功能,它支持四种持久化方式,内存,文件,数据库和自定义,对于持久化不是今天讨论的重要, ...

  9. MVVM架构~knockoutjs系列之验证信息自定义输出~续

    返回目录 上一讲中,我以一个实际中的例子说明了knockoutjs的自定义验证功能,在使用过程中,出现了一个问题,当然了不是问题,只是一种需求,上一讲中自定义验证的表现是:当页面加载后,自动显示有问题 ...

  10. Atitit 图像处理—图像形态学(膨胀与腐蚀)

    Atitit 图像处理-图像形态学(膨胀与腐蚀) 1.1. 膨胀与腐蚀1 1.2. 图像处理之二值膨胀及应用2 1.3. 测试原理,可以给一个5*5pic,测试膨胀算法5 1.4. Photoshop ...