您的位置:首页 > 其它

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
以上
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  velocity