java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > SpringBoot Freemarker基础配置与使用

SpringBoot Freemarker基础配置与使用方式

作者:孟某人

文章主要介绍了在Spring Boot项目中使用FreeMarker模板引擎的基础配置、使用方法和注意事项,包括依赖引入、配置文件设置、数据类型调用、运算符支持、时间格式转换、逻辑表达式等

1.基础配置

1.1引入依赖

<!-- 引入freemarker模板引擎的依赖 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>

1.2在application.properties配置文件中添加如下配置:

# 是否开启thymeleaf缓存,本地为false,生产建议为true
spring.freemarker.cache=false
spring.freemarker.charset=UTF-8
spring.freemarker.allow-request-override=false
spring.freemarker.check-template-location=true
#类型
spring.freemarker.content-type=text/html
spring.freemarker.expose-request-attributes=true
spring.freemarker.expose-session-attributes=true
#
#文件后缀
spring.freemarker.suffix=.ftl
#路径 .ftl文件就创建在templates下面或者子目录
spring.freemarker.template-loader-path=classpath:/templates/

2.基础使用

首先我在controller类中编写一个测试接口用来测试使用,编写内容如下

@Controller
public class FreeMarkerController {

    Map<String ,Object> map = new HashMap<>();
    List<Object> list = new ArrayList();
    @GetMapping("/freemaker/{id}/{name}")
    public String demo(@PathVariable("id")String id ,@PathVariable("name") String name,Model model){

        map.clear();
        map.put("id",id);
        map.put("name",name);
        list.add(2);
        list.add(4);
        map.put("aa",null);
        model.addAttribute("map",map);
        model.addAttribute("list",list);
        model.addAttribute("date",new Date());
        return "index";
    }
}

以下所有变量都是有上面接口提供

2.1调用map类型数据,实体类也可使用此格式调用属性

/*可直接获取id对应的v值*/
id:${map.id}
name:${map.name}

2.2集合调用,set集合也可用此格式调用相应的元素

list01:${list[0]}
list02:${list[1]}

2.3,字符串拼接的两种方法

${"你好啊${map.name}"}
${"你好啊"+map.name}

2.4FreeMarker表达式中支持“+”、“-”、“*”、“/”、“%”运算符

${list[1]+list[0]}
${list[1]-list[0]}
${list[1]*list[0]}
${list[1]/list[0]}
${list[1]%list[0]}

2.5表达式中支持的比较运算符有如下几种:

1. =(或者==):判断两个值是否相等;
2. !=:判断两个值是否不相等;
注: =和!=可以用作字符串、数值和日期的比较,但两边的数据类型必须相同。而且FreeMarker的比较是精确比较,不会忽略大小写及空格。
3. >(或者gt):大于
4. >=(或者gte):大于等于
5. <(或者lt):小于
6. <=(或者lte):小于等于
注: 上面这些比较运算符可以用于数字和日期,但不能用于字符串。大部分时候,使用gt比>有更好的效果,因为FreeMarker会把>解释成标签的结束字符。可以使用括号来避免这种

2.6时间格式转换

${date?string("yyyy-MM-dd")}

2.7支持逻辑表达式

FreeMarker支持逻辑运算但是只支持布尔型逻辑运算两个值进行比较运算的的时候需要添加括号才能进行逻辑运算,一般用于指令中
1. &&: 逻辑与;
2. ||:逻辑或;
3. !:逻辑非
逻辑运算符只能用于布尔值。

2.8FreeMarker无法理解null值

FreeMarker的变量必须赋值,否则就会抛出异常。而对于FreeMarker来说,null值和不存在的变量是完全一样的,因为FreeMarker无法理解null值。
FreeMarker提供两个运算符来避免空值:
1.!运算
1.1若是msg不存在不报异常默认空值,若是不使用!会报异常<br>
${msg!}
1.2若是存在则输出,若是不存在则默认为abc<br>
${map.a!"abc"}<br>
2.??返回布尔值一般用在指令中下面会有引用此处不解释<br>

2.9 if指令

<#if map.aa?? >
    存在
    <#else >
    不存在
</#if>
<br>
<#if (list[0]>=3) >
    优秀
    <#elseif (list[0]>=2)>
    良好
    <#else >
    差劲
</#if>

2.10 list指令 遍历

<#list list as li>
    ${li}<br>
</#list>

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文