velocity使用知识总结

1.后台传递List<bean> ,前台循环获取

List<Lead> leads = leadService.getAllLeadLists();
mv.addObject("lists", leads);
#foreach ($leads in $lists) 
                        <li><input type="checkbox" name="leadListId" value="$leads.id">$leads.name</li>
#end

注意:#foreach和#end是成对出现的;获取bean的属性,$bean.property,如后台传值UserBean ,获取name即为$UserBean.name

2.if else 判断语句

#if($task.status == 1) New
#elseif($task.status == 2) Ready
#elseif($task.status == 3) Proccessing
#elseif($task.status == 4) Finished
#end

注意:#if判断完之后,要以#end结尾

3.velocity 分页:在href中页码不能直接+1 -1

#set($pagePre=$page.pageNum - 1)     ##必须在这里先做减法运算后将值赋给变量,如果下面直接pageNum=$pageNum - 1,如果pageNum为1,输出的1 - 1 ,另外 运算符两边空格勿忘! 
#set($pageNext=$page.pageNum + 1) ##如果运算符两边没有空格,会出错

4.在struts中,一般html页面元素里面的name需要加上bean,如name='user.age' ,在velocity中,自动封装bean , name属性不能加bean

5.velocity引入文件的两个指令:来源(http://www.cnblogs.com/yuepeng/archive/2010/11/23/1885622.html)

#Include和#Parse都是用于将本地文件引入当前文件的指令,而且被引入的文件必须位于TEMPLATE_ROOT。这两者之间有一些区别。

#Include

被#Include引入的文件,其内容不会被Velocity引擎解析,所以这些文件应该是静态模板,即不含有VTL的模板。使用#Include()指令时,参数是被双引号括起来的文件名或者是表示文件名的变量。如果有多个文件,以逗号隔开即可。比如#Include("a.gif", "b.html", $file)。

#Parse

#Parse用来在当前模板中引入并执行另一个(本地的)模板——可以是静态的,也可以是动态的——并把结果嵌入到当前位置。#Parse()指令的参数,可以是一个双引号括起来的文件名,也可以是一个变量,但是它不能接受多个参数

假如a.vm #Parse b.vm,那么a.vm中定义的变量$v,在b.vm中可以随便使用。如果b.vm也定义了$v,那么b.vm中用到的将会是自己的$v,而不是a.vm中的$v。

被#Parse引入的文件仍然可以使用#Parse指令 可以嵌套执行。

6.velocity在页面实现时间格式化,需要使用tools

在springMvc+velocity环境下 ,配置如下:

(1)在web-inf目录下,创建toolbox.xml文件,里面包含引入tools的配置(以时间为例)

<?xml version="1.0" encoding="UTF-8"?>
<toolbox>
<tool>
   <key>date</key>
   <scope>application</scope>
   <class>org.apache.velocity.tools.generic.DateTool</class>
   <parameter name="format" value="yyyy-MM-dd HH:mm:ss"/> 
</tool>
</toolbox> 

(2)在dispatcher-servlet.xml文件中修改视图解析的配置:

<bean id="viewResolver" class="org.springframework.web.servlet.view.velocity.VelocityViewResolver">
          <property name="exposeSpringMacroHelpers" value="true"/> 
          <property name="cache" value="true"/>
        <property name="prefix" value=""/>
        <property name="suffix" value=".vm"></property>
        <!--add for tool -->
        <property name="toolboxConfigLocation" value="/WEB-INF/toolbox.xml" />
</bean>

(3)在页面上面使用即可 $!date.format($task.createdDate)

注意:对于tool标签里面配置parameter  ,也可以不配置,在页面设置格式$!date.format('yyyy-MM-dd HH:mm:ss ',$task.createdDate)

<未完>

原文地址:https://www.cnblogs.com/cuiyf/p/3526565.html