美文网首页
FreeMarker | 取值篇

FreeMarker | 取值篇

作者: 冯文议 | 来源:发表于2018-06-13 21:47 被阅读65次

    第一部分:Spring Boot 集成 FreeMarker

    1、pom.xml 需要这些依赖

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

    2、yml

    我喜欢 yml,所以删掉 application.properties,新建 application.yml

    3、配置

    application.yml 中添加如下配置

    # freemarker
    spring:
          freemarker:
                    template-loader-path: classpath:/templates/
                    cache: false
                    charset: UTF-8
                    check-template-location: true
                    content-type: text/html
                    expose-request-attributes: true
                    expose-session-attributes: true
                    request-context-attribute: request
                    suffix: .html
    

    4、Controller - View

    package com.fengwenyi.demo.freemarker.example.controller;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.servlet.ModelAndView;
    
    
    /**
     * @author Wenyi Feng
     */
    @Controller
    public class HomeController {
    
        @RequestMapping("/")
        public ModelAndView home() {
            ModelAndView mv = new ModelAndView("home");
            return mv;
        }
    
    }
    
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>freemarker</title>
    </head>
    <body>
    <center>
        <h1>Hello FreeMarker!</h1>
        <h6>Welcome to Learn FreeMarker With Me!</h6>
        <div><i>目录</i></div>
        <div>
            <ul>
                <li><a target="_blank" href="/value/get">取值 - 2018.06.13</a> </li>
                <li><a target="_blank" href="/value/get">运算,集合 - 2018.06.14</a> </li>
                <li><a target="_blank" href="/value/get">高级技巧 - 2018.06.15</a> </li>
            </ul>
        </div>
    </center>
    </body>
    </html>
    

    5、运行效果

    Hello World

    第二部分:取值

    1、学过 freemarker 的的童鞋都知道,需要在spring的配置文件中添加上一些属性,那Spring boot 应该怎么做呢?

    # freemarker
    spring:
          freemarker:
                    template-loader-path: classpath:/templates/
                    cache: false
                    charset: UTF-8
                    check-template-location: true
                    content-type: text/html
                    expose-request-attributes: true
                    expose-session-attributes: true
                    request-context-attribute: request
                    suffix: .html
                    settings:
                          #number_format: '0.##'   #数字格式化,无小数点,如果有小数,只保留两位小数
                          number_format: '0.#############################################'
                          date_format: 'yyyy_MM_dd HH:mm:ss' # 这个是对java.sql.Date起作用
                          # boolean_format: 'Y, N' # 一般不这么配置,因为我们需要逻辑值,如果需要,我们可以在需要的地方将Boolean->String
    

    2、Controller

    
    @GetMapping("/get")
    public ModelAndView getValue() {
        ModelAndView mv = new ModelAndView("get-value");
        mv.addObject("intVar", 100);
        mv.addObject("longVar", 100000000000000L);
        mv.addObject("stringVar", "我是字符串");
        mv.addObject("doubleVar", Math.PI);
    //        mv.addObject("doubleVar", 3.14);
    //        mv.addObject("doubleVar", 3.1415D);
        mv.addObject("booleanVar", Boolean.TRUE);
        mv.addObject("dateUtilVar", new Date());
        mv.addObject("dateSqlVar", new java.sql.Date(new Date().getTime()));
        mv.addObject("nullVar", null);
        return mv;
    }
    

    3、View

    <table border="1">
        <tr>
            <th width="200">Type</th>
            <th width="300">Value</th>
        </tr>
    
        <tr>
            <td align="center">Integer</td>
            <td align="center"><font color="red">${intVar}</font></td>
        </tr>
        <tr>
            <td align="center">Long</td>
            <td align="center"><font color="red">${longVar}</font></td>
        </tr>
        <tr>
            <td align="center">String</td>
            <td align="center"><font color="red">${stringVar}</font></td>
        </tr>
        <tr>
            <td align="center">Double</td>
            <td align="center"><font color="red">${doubleVar}</font></td>
        </tr>
        <tr>
            <td align="center">Boolean</td>
            <td align="center"><font color="red">${booleanVar?string('Yes', 'No')}</font></td>
        </tr>
        <tr>
            <td align="center">java.util.Date</td>
            <td align="center"><font color="red">${dateUtilVar?string('yyyy/MM/dd HH:mm:ss')}</font></td>
        </tr>
        <tr>
            <td align="center">java.sql.Date</td>
            <td align="center"><font color="red">${dateSqlVar}</font></td>
        </tr>
        <tr>
            <td align="center">null</td>
            <td align="center"><font color="red">${nullVar!}</font></td>
        </tr>
        <tr>
            <td align="center">null</td>
            <td align="center"><font color="red">${nullVar! '-'}</font></td>
        </tr>
        <tr>
            <td align="center">不存在的变量</td>
            <td align="center"><font color="red">${notExist! '-'}</font></td>
        </tr>
    </table>
    

    4、效果

    取值

    资料

    1、FreeMarker 模块的代码已上传至Github:
    https://github.com/fengwenyi/FreeMarker-demo

    2、学习视频:Java模板引擎之Freemarker

    相关文章

      网友评论

          本文标题:FreeMarker | 取值篇

          本文链接:https://www.haomeiwen.com/subject/oxmseftx.html