• FreeMarker 入门


    FreeMarker是一款模板引擎: 即一种基于模板和要改变的数据,并用来生成输出文本(HTML网页、电子邮件、配置文件、源代码等)的通用工具。 它不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入他们所开发产品的组件。


    一.基本语法编辑

    ${}:FreeMarker将会输出真实的值来替换大括号内的表达式,
    这样的表达式被称为interpolation(插值)。
    

    注释:注释和HTML的注释也很相似,但是它们使用<#-- -->来标识。不像HTML注释那样,FTL注释不会出现在输出中(不出现在访问者的页 面中),因为FreeMarker会跳过它们。

    二.FTL标签(FreeMarker模板的语言标签)

    FTL标签和HTML标签有一些相似之处,但是它们是FreeMarker的指令,
    是不会在输出中打印的。这些标签的名字以#开头。

    if、elseif和else指令可以用来条件判断是否越过模板的一个部分。
    condition必须计算成布尔值,否则错误将会中止模板处理。elseif和else必须出现在if内部
    (也就是在if的开始标签和结束标签之间)

        <#if condition>
        ...
        <#elseif condition2>
        ...
        <#elseif condition3>
        ...
        <#else>
        ...
        </#if>
    

    list指令执行在list开始标签和list结束标签

        <#list users as user>
            ${user}取对象
            ${user_index}取对象的下标
            ${user_index+1}
        </#list>
    

    访问pojo中的属性

    ${key.property}
    

    引入外部资源

    <#include "head.ftl">
    

    四.内建函数

    list的尺寸

    ${users?size}
    

    定义变量

    <#assign text="{'name':'小明','age':'12'}">
    

    变量转换成对象

    <#assign person=text?eval>
    

    日期格式化

    ${date?string('yyyy年MM月dd日')}
    

    空值处理

    ${(name)!'小明')}空值会用括号的值代替
    <#if (a)??>逻辑运算,如果a不为空,处理if里的语句
    

    逻辑运算符(如果使用符号需要用小括号()括起来)

    >gt
    >=gte
    <it
    <=ite
    

    FreeMarker不能引用不存在的变量,除非明确地告诉它当变量不存在时如何处理,
    一个不存在的变量和一个是null值的变量,对于FreeMarker来说是一样的。


    三.Freemarker + Springboot Maven配置

    依赖

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

    Freemarker 页面目录配置

    spring:
      mvc:
         view:
           prefix: /templates/
           suffix: .ftl
    
    ##模版存放路径(默认为 classpath:/templates/)
    spring.freemarker.template-loader-path=classpath:/templates/
    ##是否生成缓存,生成环境建议开启(默认为true)
    spring.freemarker.cache=true
    ##编码
    spring.freemarker.charset=UTF-8
    spring.freemarker.check-template-location=true
    ##content-type类型  (默认为test/html)
    spring.freemarker.content-type=text/html
    ## 设定所有request的属性在merge到模板的时候,是否要都添加到model中  (默认为false)
    spring.freemarker.expose-request-attributes=false
    ##设定所有HttpSession的属性在merge到模板的时候,是否要都添加到model中  (默认为false)
    spring.freemarker.expose-session-attributes=false
    ##RequestContext属性的名称
    spring.freemarker.request-context-attribute=request
    ##模板后缀  (默认为.ftl)
    spring.freemarker.suffix=.html
    
  • 相关阅读:
    Java的内存结构(Memory Structure)和垃圾收集(Garbage Collection)图解
    走遍天下的三大vb控制结构
    程序员快速阅读,绝对不是神话
    Android4.0.3源码分析——开机流程之Zygote
    云端的天使
    提高班的“伞”
    Android 4.0.3 源代码结构分析(一)
    如何在Java中选择Map/List/Set
    关于Hadoop中reducer端combiner的一些思考
    vb添加GIF动态图片
  • 原文地址:https://www.cnblogs.com/loveer/p/11298205.html
Copyright © 2020-2023  润新知