Using Velocity as Template Engine


工作以来服务端的模板引擎一直使用的是 Velocity,直到最近在试用 Spring Boot 1.5的时候突然发现用不了了,上网一查原来是 SpringBoot 从1.5版本将1.4中标记为deprecated的方法和类直接移除掉了(移除上个版本废弃的内容也是 Spring Boot的一贯做法)。

然后再看看1.4的Release Note,发现velocity被废弃赫然在列(而且是第一条)。

不过在使用1.4.x版本的spring boot时还是支持的,而且现有的代码基本也都是基于velocity,因此有必要熟悉一下velocity的集成方法。

更新Spring Boot的版本

之前的示例都是基于1.5.4版本,在本例中为了使用velocity,需要将版本改回为1.4.5(浪费了我很多时间发现这个问题),并添加velocity的依赖

<!-- Inherit defaults from Spring Boot -->
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.4.5.RELEASE</version>
</parent>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-velocity</artifactId>
</dependency>

创建一个controller

@Controller
public class HelloController {
    @RequestMapping(value="hello.html", method={RequestMethod.GET, RequestMethod.POST}, produces = { "text/html;charset=UTF-8" })
    public String Hello(Model model){
        model.addAttribute("name", "jverson");
        return "welcome";
    }
}

在src/main/resources/templates目录下创建一个vm文件

<html>  
<body>  
  <h1>hello, ${name}</h1>    
</body>  
</html>

这时候不出意外启动程序便可以访问这个页面了。

其它配置

可以在application.properties中对velocity做一些配置(上面的示例使用默认配置即可正常工作),例如:

-----------velocity configurations----------
spring.velocity.charset = UTF-8
spring.velocity.properties.input.encoding = UTF-8
spring.velocity.properties.output.encoding = UTF-8
spring.velocity.resource-loader-path = classpath:/templates/
spring.velocity.suffix=.vm
spring.velocity.toolbox-config-location = /WEB-INF/toolbox.xml

Copyright © jverson.com 2018 all right reserved,powered by GitbookFile Modify: 2019-03-03 22:26:44

results matching ""

    No results matching ""