输出指令
${}过滤输出
输出表达式的计算结果,并进行过滤,比如:过滤变量中的HTML标签。
格式:
${expression}
示例:
${user.name}
注:HTTL缺省开启了EscapeXmlFilter,以防止HTML注入攻击,参见:安全示例。如果你需要更强的过滤,请自行实现Filter,并配置到value.filters。此处为运行时热点,请注意性能。
如果输出变量的类型为Template,则缺省不过滤,比如:${include("foo.httl")}
$!{}不过滤输出
原样输出表达式的计算结果,不进行任何过滤,通常用于输出HTML片段。
格式:
$!{expression}
示例:
$!{body}
安全示例
HTTL能根椐变量所处的位置,智能使用不同的安全过滤器,比如:
<htmL> <!-- 这里会将html变量中的引号转成" --> <input value="${html}" /> <script type="text/javascript"> // 这里会将js变量中的引号转成",而不是" var value ="${js}"; </script> <style type="text/css"> .div { // 这里同样会将css变量中的引号转成",而不是" 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))