文档章节

FreeMarker | 取值篇

冯文议
 冯文议
发布于 2018/06/14 09:09
字数 623
阅读 175
收藏 2

第一部分: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

© 著作权归作者所有

冯文议
粉丝 11
博文 47
码字总数 47895
作品 0
成都
高级程序员
私信 提问
FreeMarker | 数据篇

变量及运算 1、变量定义和赋值 2、判空 防止为空 FreeMarker 不区分单双引号 逻辑判空 对象、集合 1、对象 2、集合 3、Map 可以根据key直接取值可以获取所有key然后遍历也可以直接遍历值 资料...

Wenyi_Feng
2018/06/15
59
2
Freemarker中如何遍历List

Freemarker中如何遍历List摘要:在Freemarker应用中经常会遍历List获取需要的数据,并对需要的数据进行排序加工后呈现给用户。那么在Freemarker中如何遍历List,并对List中数据进行适当的排序...

oecp
2011/05/18
426
0
FreeMarker 发布 Google AppEngine 的版本

来自 FreeMarker 在 Twitter 上的消息:FreeMarker 在上个月发布了一个新版本,该版本主要是提供了对 Google AppEngine 平台的支持。 下载 FreeMarker for GAE:freemarker-gae-pre3.jar Fre...

红薯
2010/07/04
2.8K
2
FreeMarker在eclipse中的入门例子

今天海浪为大家分享一个FreeMarker在eclipse中的入门例子。 一、在eclipse中创建FreeMarker模板 在FreeMarker中模板的概念就是:包含一些由${…}包围的特殊代码的文件。这些特殊代码是FreeM...

oecp
2011/04/26
923
0
Tomcat和Undertow并发性能

Undertow(SpringBoot内置版)篇 JVM参数: -Xms1024m-Xmx1024m 测试参数: 压测工具,参数最大化,连续测试10分钟,得出各种曲线。 软件架构: JDK1.8SpringBoot全家桶,version1.4.2SpringM...

RippleChan
2017/01/18
2.5K
6

没有更多内容

加载失败,请刷新页面

加载更多

视频如何加水印?

很多视频制作者的视频都被他人盗用过,为了防止自己的劳动成果被他人窃取,给视频加水印对于视频制作者来说,是一件非常重要的事情。那么下面分享一个手机给视频加水印的方法,一起来看看吧!...

白米稀饭2019
16分钟前
2
0
004-Envelop-基于Blockstack的文件传输dapp

本篇文章主要介绍基于Blockstack的文件传输工具; ####A-链接地址 官网地址:https://envelop.app/ Github地址:https://github.com/envelop-app ####B-特性: 1: Share private files easil...

Riverzhou
19分钟前
5
0
SpringCloud——声明式调用Feign

Feign声明式调用 一、Feign简介 使用Ribbon和RestTemplate消费服务的时候,有一个最麻烦的点在于,每次都要拼接URL,组织参数,所以有了Feign声明式调用,Feign的首要目标是将Java HTTP客户端...

devils_os
24分钟前
5
0
《JAVA核心知识》学习笔记 (22. 数据结构)

22.1.1. 栈(stack) 栈( stack)是限制插入和删除只能在一个位置上进行的表,该位置是表的末端,叫做栈顶 (top)。它是后进先出(LIFO)的。对栈的基本操作只有 push(进栈)和 pop(出栈...

Shingfi
30分钟前
5
0
你对AJAX认知有多少(1)?

AJAX(一) AJAX技术对于前段或者后端工程师来说,都是必不可缺的 那我们这几期都来细细品味一下AJAX的相关知识,直接上干货喽~ 1、什么是AJAX,为什么要使用Ajax(请谈一下你对Ajax的认识) 什么...

理性思考
38分钟前
12
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部