Velocity是一个基于java的模板引擎(template engine),它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象。
配置:
1.在pom.xml增加依赖的velocity包
<dependency> <groupId>org.apache.velocity</groupId> <artifactId>velocity</artifactId> <version>1.7</version> </dependency> <dependency> <groupId>org.apache.velocity</groupId> <artifactId>velocity-tools</artifactId> <version>2.0</version> </dependency>
2、修改dispatcher-servlet.xml文件,将之前的的解析JSP改为html
<!-- 配置SpringMVC的视图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/html/"/>
<property name="suffix" value=".html"/>
</bean>
并增加下面配置
<!-- velocity模板信息设置 -->
<bean id="velocityConfig" class="org.springframework.web.servlet.view.velocity.VelocityConfigurer">
<property name="resourceLoaderPath" value="/WEB-INF/html" />
<property name="configLocation" value="classpath:velocity.properties" />
<property name="velocityProperties">
<props>
<prop key="input.encoding">utf-8</prop>
<prop key="output.encoding">utf-8</prop>
</props>
</property>
</bean>
<!-- 设置视图解析工具 -->
<bean id="velocityViewResolver" class="org.springframework.web.servlet.view.velocity.VelocityViewResolver">
<property name="suffix" value=".html"/>
<property name="order" value="1" />
<property name="requestContextAttribute" value="rc" />
<property name="contentType">
<value>text/html;charset=UTF-8</value>
</property>
</bean>
3、在resource目录下建立velocity.properties文件
#log4j日志配置
runtime.log.logsystem.class = org.apache.velocity.runtime.log.SimpleLog4JLogSystem
runtime.log.logsystem.log4j.category = velocity_log
runtime.log.error.stacktrace = false
runtime.log.warn.stacktrace = false
runtime.log.info.stacktrace = false
runtime.log.invalid.reference = true
#字符编码
input.encoding = UTF-8
output.encoding = UTF-8
##foreach()指令时循环中的计数器名, 在模板中可以通过 $velocityCount 来访问
directive.foreach.counter.name = velocityCount
#foreach()中计数器的起始值.
directive.foreach.counter.initial.value = 1
4、新建testController
@RequestMapping(value="/test")
@Controller
public class TestController {
@RequestMapping(value="/index")
public String index(Model model) {
String name = "tester";
model.addAttribute("name", name);
return "test/index";
}
}
就可以了
=======================================
一、取系统路径:${rc.contextPath}
例子:
1、<script type="text/javascript" src="${rc.contextPath}/static/js/jquery-1.7.2.js"></script>
2、diag.URL = '${rc.contextPath}/user/goEditU.do?USER_ID='+user_id;
二、标识变量或对象
1、用“$”号来标识,例如$user、$userList、$i
2、用"${}"来明确标识一个velocity变量
比如在页面中,页面中有一个$someonename,此时,Velocity将把someonename作为变量名,若我们程序是想在someone这 个变量的后面紧接着显示name字符,则上面的标签应该改成${someone}name。
三、if else
1、
#if(XX && YY || ZZ)
.......
#elseif(AA)
.......
#else
........
#end
四、foreach
#foreach($user in $userList)
console.log("当前是第"+${velocityCount}+"个")
console.log($user.name + )
#end
五、设置变量
1、 #set ($i=1)
六、包含文件
#include("a.html")包含静态页面,不解析,会原样显示
#parse("a.html")包含前会先解析velocity标签
====补充,让外部独立的js也使用velocity变量====
1、增加一套解析JS的
<!-- 设置视图解析工具 -->
<bean id="jsvelocityViewResolver" class="org.springframework.web.servlet.view.velocity.VelocityViewResolver">
<property name="suffix" value=".js"/>
<property name="order" value="2" />
<property name="requestContextAttribute" value="rc" />
<property name="contentType">
<value>text/html;charset=UTF-8</value>
</property>
</bean>
2、html里面
<script type="text/javascript">
#parse("../../static/js/common/xx.js")
</script>