Velocity用法以及注意事项


Velocity:

首先我们来看看Velocity、Freemarker、Jsp之间到底有什么区别。
模板技术在现代的软件开发中有着重要的地位,而目前最流行的两种模板技术恐怕要算freemarker和velocity了。
模板技术作为view的好处是很多,尤其和jsp比较起来优点更大,众所周知jsp需要在第一次被执行的时候编译成servlet,那么这个过程是很慢的,
当然很多应用服务器都提供预编译的功能,但是在开发的时候仍然给我们程序员带来了很多痛苦,每次修改都要多几秒钟,
那在一天的开发中就有很多时间浪费在jsp的编译上了。
我们把模板技术引入到view中去可以带来更好的开发效率,而且模板的速度要比jsp快。
当然模板技术可以用在很多领域,可不只在view那里。
我们可以通过模板技术来生成xml,生成jsp,生成java文件等等。
至于Velocity和Freemarker之间,区别不是很大,我们可以随意选择其中一个作为View

Velocity是一个基于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




以上






  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值