输出指令

${}过滤输出

输出表达式的计算结果,并进行过滤,比如:过滤变量中的HTML标签。

格式:
${expression} 示例:
${user.name}

注:HTTL缺省开启了EscapeXmlFilter,以防止HTML注入攻击,参见:安全示例。如果你需要更强的过滤,请自行实现Filter,并配置到value.filters。此处为运行时热点,请注意性能。

如果输出变量的类型为Template,则缺省不过滤,比如:${include("foo.httl")}

$!{}不过滤输出

原样输出表达式的计算结果,不进行任何过滤,通常用于输出HTML片段。

格式:
$!{expression} 示例:
$!{body}

安全示例

HTTL能根椐变量所处的位置,智能使用不同的安全过滤器,比如:

<htmL>

<!-- 这里会将html变量中的引号转成&quot; -->
<input value="${html}" /> <script type="text/javascript">
// 这里会将js变量中的引号转成\",而不是&quot;
var value ="${js}";
</script> <style type="text/css">
.div {
// 这里同样会将css变量中的引号转成\",而不是&quot;
font-family:"${css}"
}
</style>

这一个多月以来,接触到的技术挺多,但仍有很多没有自主学到的知识,以后还会慢慢学习总结的。这次先说说velocity吧。

velocity,是一个基于Java的模板引擎,它允许任何人仅仅简单的使用模板语言来引用由java代码定义的对象。 当Velocity应用于web开发时,界面设计人员可以和java程序开发人员同步开发一个遵循MVC架构的web站点。这是很好的一个地方,可以提高很多效率。下面来说下velocity的语法吧。

1.获取:

$!(var):如果有值则输出,如果为空,则不显示;

${var}:如果有值则输出,如果为空,则将该代码原样输出;

2.设置:

#set{$var=5}:设置var的值为5;

3. 判断:

#if{! $var}判断var为空

#elseif{$var}判断var不为空

#else{}
#end

4.循环:

循环数组或List时:

#foreach($var in list)

##输出当前迭代的次数

$velocityCount

${var}

#end

5.判断是否为null

1)使用 #ifnull() 或 #ifnotnull() 
   #ifnull ($foo) 
   要使用这个特性必须在velocity.properties文件中加入: 
userdirective = org.apache.velocity.tools.generic.directive.Ifnull 
userdirective = org.apache.velocity.tools.generic.directive.Ifnotnull 
2) 使用null工具判断 
   #if($null.isNull($foo))

Velocity $ 和$! 区别的更多相关文章

  1. c#与java的区别

    经常有人问这种问题,用了些时间java之后,发现这俩玩意除了一小部分壳子长的还有能稍微凑合上,基本上没什么相似之处,可以说也就是马甲层面上的相似吧,还是比较短的马甲... 一般C#多用于业务系统的开发 ...

  2. jquery和Js的区别和基础操作

    jqery的语法和js的语法一样,算是把js升级了一下,这两种语法可以一起使用,只不过是用jqery更加方便 一个页面想要使用jqery的话,先要引入一下jqery包,jqery包从网上下一个就可以, ...

  3. 【原】nodejs全局安装和本地安装的区别

    来微信支付有2年多了,从2年前的互联网模式转变为O2O模式,主要的场景是跟线下的商户去打交道,不像以往的互联网模式,有产品经理提需求,我们帮忙去解决问题. 转型后是这样的,团队成员更多需要去寻找业务的 ...

  4. 探究@property申明对象属性时copy与strong的区别

    一.问题来源 一直没有搞清楚NSString.NSArray.NSDictionary--属性描述关键字copy和strong的区别,看别人的项目中属性定义有的用copy,有的用strong.自己在开 ...

  5. X86和X86_64和X64有什么区别?

    x86是指intel的开发的一种32位指令集,从386开始时代开始的,一直沿用至今,是一种cisc指令集,所有intel早期的cpu,amd早期的cpu都支持这种指令集,ntel官方文档里面称为&qu ...

  6. Java中Comparable与Comparator的区别

    相同 Comparable和Comparator都是用来实现对象的比较.排序 要想对象比较.排序,都需要实现Comparable或Comparator接口 Comparable和Comparator都 ...

  7. MySQL中interactive_timeout和wait_timeout的区别

    在用mysql客户端对数据库进行操作时,打开终端窗口,如果一段时间没有操作,再次操作时,常常会报如下错误: ERROR (HY000): Lost connection to MySQL server ...

  8. 设置line-height:1.5和line-height:150%或者line-height:150px的区别

    直接正题: 看一下line-height可能的值: 其实可以分为两类: (1)不带单位的(如line-height:1.5),这种是推荐使用的: (2)带单位的(如line-heigth:30px/1 ...

  9. C#中Length和Count的区别(个人观点)

    这篇文章将会很短...短到比你的JJ还短,当然开玩笑了.网上有说过Length和count的区别,都是很含糊的,我没有发现有 文章说得比较透彻的,所以,虽然这篇文章很短,我还是希望能留在首页,听听大家 ...

  10. select、poll、epoll之间的区别总结

    select.poll.epoll之间的区别总结 05/05. 2014 select,poll,epoll都是IO多路复用的机制.I/O多路复用就通过一种机制,可以监视多个描述符,一旦某个描述符就绪 ...

随机推荐

  1. 最新为Phpstorm配置xdebug 进行断点调试

    额  ,曾经写过一个,现在发现不咋好使了 ,你说咋整,下载xdebug的时候 还得注意系统是32位还是64位,而且一堆下载文件不知道是哪个. 额,所以我现在发现有个更好的方法,啥也不下了 直接配把  ...

  2. stash存储

    比如我的fsm_ngh分支,被a修改了,可是我本地还有没有提交的东西,就不能切换分支也不能下拉,也不能直接上传,否则分支会混乱. 这个时候stash的优点来了,先把你修改的暂存隐藏起来,然后pull远 ...

  3. HTML 图像<img>

    定义和用法: img元素向网页中嵌入一副图像. 请注意:从技术上讲,<img>标签并不会在网页中插入图像,而是从网页上链接图像.<img>标签创建的是被引用图像的占位空间. 属 ...

  4. State(状态)

    props和state.props是在父组件中指定,而且一经指定,在被指定的组件的生命周期中则不再改变. 对于需要改变的数据,我们需要使用state.般来说,你需要在constructor中初始化st ...

  5. iOS开发UI篇—直接使用UITableView Controller

    iOS开发UI篇—直接使用UITableView Controller 一.一般过程 // // YYViewController.h // UITableView Controller // // ...

  6. iOS流量精灵完结版

    从一开始的激动,到现在的三期完结持续了将近三个半月时间,心态也开始变的坦然. 开发期间没有兑现自己的若言,没有写下所有的感悟和困难.我没有借口可言,唯一能说的只能说自己太懒....哈哈 总体来说流量监 ...

  7. jQuery.ajax() 函数详解

    jQuery.ajax()函数用于通过后台HTTP请求加载远程数据. jQuery.ajax()函数是jQuery封装的AJAX技术实现,通过该函数,我们无需刷新当前页面即可获取远程服务器上的数据. ...

  8. Using Interface Builder记录

    1.interface builder的作用主要是用来设计视图,文件的拓展名诶.storyboard或者.xib :这两文件的区别是,.xib文件只能设计一个视图控制器,也就只能显示一个视图,.sto ...

  9. javaweb---html标签

    img标签

  10. eclipse安装插件的三种方式

    方式一:拷贝安装方式 将下载的插件文件中的plugins 和 features 文件夹直接天骄到eclipse中的plugins 和 features 文件夹中. 方式二:update安装方式 Hel ...