Velocity用法以及注意事项
2015-12-31 17:33
316 查看
Velocity:首先我们来看看Velocity、Freemarker、Jsp之间到底有什么区别。模板技术在现代的软件开发中有着重要的地位,而目前最流行的两种模板技术恐怕要算freemarker和velocity了。模板技术作为view的好处是很多,尤其和jsp比较起来优点更大,众所周知jsp需要在第一次被执行的时候编译成servlet,那么这个过程是很慢的,当然很多应用服务器都提供预编译的功能,但是在开发的时候仍然给我们程序员带来了很多痛苦,每次修改都要多几秒钟,那在一天的开发中就有很多时间浪费在jsp的编译上了。我们把模板技术引入到view中去可以带来更好的开发效率,而且模板的速度要比jsp快。当然模板技术可以用在很多领域,可不只在view那里。我们可以通过模板技术来生成xml,生成jsp,生成java文件等等。至于Velocity和Freemarker之间,区别不是很大,我们可以随意选择其中一个作为ViewVelocity是一个基于java的模板引擎(template engine),缩写为VTL(velocity template language)。以下是velocity在实际应用中的用法以及各用法需要注意的地方:判断一个字符串类型的变量是否为空串或null
可能报错的写法: $!userBaseInfoVO.phone != '' 当userBaseInfo对象为null或userBaseInfoVO.getPhone()返回null,就报错了 建议写法: $stringUtil.isNotBlank($!userBaseInfoVO.phone)判断boolean值
可能报错的写法: #if($stringUtil.equals($resultCode,"true")) 当resultCode对象为boolean类型就报错了 建议写法:#if($resultCode)或者 $stringUtil.equals(“$!resultCode“, "true")判断两个字符串是否相等
可能报错的写法: $!resultCode.toString() == "1000" 当resultCode对象为null就报错了 建议写法: $stringUtil.equals($!resultCode, "1000")判断两个非字符串对象是否相等
可能报错的写法: $accountTransRes.result != $TransResultEnum.TXN_RESULT_SUCCESS 当accountTransRes为null或accountTransRes.getResult()返回null,就报错了;另一种情况是,当accountTransRes.getResult()返回的类型与TransResultEnum.TXN_RESULT_SUCCESS不一致,也会报错。 建议写法: {{!$objectUtil.equals($accountTransRes.result, $TransResultEnum.TXN_RESULT_SUCCESS) }}输出一个值
可能报错的写法: $accountTransRes.transAmount 当accountTransRes为null或accountTransRes.getTransAmount()返回null,就报错了 建议写法: $! {accountTransRes.transAmount}赋值
可能报错的写法: #set ($login_email = $!rundata.request.getParameter('login_email')) 当rundate.getRequest().getParameter('...')返回null,就报错了 建议写法: #set ($login_email = $stringUtil.defaultIfNull($!rundata.request.getParameter('login_email'))) 可能报错的写法: #set ($tradeTransportType = $tradeDetail.tradeLogistics.transportType.intValue()) 当tradeDetail为null或tradeDetail.getTradeLogistics()或tradeDetail.getTradeLogistics().getTransportType()为null,就报错了。 建议写法: #set ($tradeTransportType = $objectUtil.defaultIfNull($!tradeDetail.tradeLogistics.transportType.intValue(), 0))Money类的比较
错误的写法:#if($amount != 0) 因为$amount是money类型,不直接和0做比较。 建议写法:#if($!amount&& (0 != $!amount.cent.intValue()))pojo中boolean属性的读取
如果你有如下的一个javabean: public class MoneyReportModel { …… /**优惠是否为负数,由于调整价格可能为负数,所以必须加上这个 */ private boolean isNegConcession; …… } 在页面上面你应该如何读取isNegConcession这个变量呢? 错误的写法:$moneyReportModel.isNegConcession 正确的写法: $moneyReportModel.isNegConcession() 如果boolean的名字不是以is开头,比如: private boolean freezeFlag; 在页面上用 $moneyReportModel. freezeFlag或$moneyReportModel. isFreezeFlag()都可以获取该变量的值。
<strong>vm页面循环显示list的值</strong>
<select name="status"><option value="">全部</option>#foreach($sysdict in $sdList)<option value="$sysdict.code">$sysdict.name</option>#end</select>vm页面循环显示map的值:
Map m = new HashMap();m.put("113", "test1");request.setAttribute("dds", m);// 后台vm页面#foreach($info in $dds.entrySet())$info.key$info.value#end以上
相关文章推荐
- html文件中jquery与velocity变量中的$冲突的解决方法
- velocity显示List与Map的方法详细解析
- JAVA velocity模板引擎使用实例
- Velocity基本语法介绍
- Spring MVC 集成 Velocity 配置
- Velocity入门例子
- Velocity读取后台数据
- 树形结构
- velocity 注释语法
- velocity include
- Velocity浅析及与Jsp、Freemarker对比
- Velocity 官方实例学习二 (context_example)
- Velocity 官方实例学习一 (app_example1)
- Velocity入门指南——第一章 快速入门
- Velocity入门指南——第二章 注释
- 一些好用的Eclipse 3.0插件
- 一些好用的Eclipse 3.0插件
- DirectX粒子--雪花
- Struts2配置文件
- J2EE概述