freemarker模板引擎语法及常用指令学习

22 篇文章 1 订阅
5 篇文章 0 订阅
  • 在springboot中配置freemarker

html页面中普通取值

在controller类方法中使用org.springframework.ui.Model传参

@RequestMapping(value = "/hello")
public String query(Model model) throws Exception {
    model.addAttribute("msg", "hello freemarker");
    return "hello";
}

使用变量值, 在标签中直接使用变量值

<label>${msg}<label/>
  • html页面中使用对象
@RequestMapping(value = "/hello")
public String query(Model model) throws Exception {
    model.addAttribute("msg", "hello freemarker");

    Map<String, Object> person = new HashMap<>();
    person.put("name", "zs");
    person.put("age", 20);
    model.addAttribute("person", person);
    return "hello";
}

在标签中直接使用对象

<label>${msg}</label>
<label>${person.name}</label>
<label>${person.age}</label>

普通运算与字符串

<label>${'姓名:'+person.name}</label>
<label>${'年龄:'+(person.age+10)}</label>

html页面中的逻辑控制

使用if进行控制

<#if person.age==20>
张三都20碎了,要做一个坚强的打工人
<#else>
张三不知道多少碎了
</#if>

if 语句中可以使用的运算符:

比较运算符:

> (gt): 大于号,推荐使用gt
< (lt): 小于号,推荐使用lt
>= (gte): 大于等于, 推荐是用gte
<= (lte): 小于等于,推荐使用lte
== :  等于
!= : 不等于

逻辑运算符:

1. 逻辑与 &&:
${(bt && bf)?string}
2. 逻辑或 ||:
${(bt || bf)?string}
3. 逻辑非 ! :
${(!bt)?string}

if-else-if使用

<#if person.age == 10>
    person.age is 10
<#elseif person.age == 20>
    person.age is 20
<#elseif person.age == 30>
    person.age is 30
<#elseif person.age == 40>
    person.age is 40
<#else>
    person.age is not 10 nor 20 nor 30 nor 40
</#if>

switch

html页面中的循环语句

@RequestMapping(value = "/hello")
public String query(Model model) throws Exception {
    model.addAttribute("msg", "hello freemarker");

    List<Map<String, Object>> personList = new ArrayList<>();
    Map<String, Object> person = new HashMap<>();
    person.put("name", "zs");
    person.put("age", 20);
    personList.add(person);
    model.addAttribute("personList", personList);
    return "hello";
}

在标签中直接使用循环

<#list personList as person>
    <p>
      <span>${person.name}</span>
      <span>${person.age}</span>
    </p>
</#list>

使用循环内置的变量

<#list personList as person>
    <p>
      <span>${person_index}循环索引</span>
      <span>${person.name}</span>
      <span>${person.age}</span>
    </p>
</#list>

freemarker控制html标签属性

控制input值:
<#list personList as person>
      <p>
          <span><input type="text" value="${person.name}"></span>
          <span><input type="text" value="${person.age}"></span>
      </p>
</#list>

三元表达式修改style样式:
<#list personList as person>
      <p>
          <span style="color: ${(person_index%2==1)?string('red','blue')};">测试</span>
          <span style="color: ${'blue'};font-size: ${'30px'}">测试</span>
      </p>
</#list>

freemarker设置html标签属性
<#list personList as person>
    <p>
        <span style="color: ${(person_index%2==1)?string('red','blue')};">测试</span>
         span ${person.name}="${person.age}">测试</span>
    </p>
</#list>

其他标识

${val?"默认值"}  :?? 双问号,如果val为nul的话就输出默认值,不是null就输出val

${date?string('pattern')} : ? 单问号,访问对象的方法,<#if person.age==20?if_exists> if_exists是判断boolean,前面的表达式结果需要为boolean类型, <#if person?>, 如果为不为null, 则执行对应表达式

! :${value!"默认值"}, 如果value为空, 则使用"默认值"进行输出

其他内置函数或操作

  • ${name?if_exists} 变量存在,输出该变量,否则不输出
  • ${name!} 变量存在,输出该变量,否则不输出
  • ${name?default(“”)} 变量不存在,取默认值
  • ${name!“”} 变量不存在,取默认值
  • ${name?html} 对字符串进行html编码,对html中特殊子父进行转义
  • ${name?cap_first} 使字符串第一个字母大写
  • ${name?lower_case} 将字符串转换成小写
  • ${name?upper_case} 将字符串转换成大写
  • ${name?trim} 取消字符串前后空白字符
  • KaTeX parse error: Expected '}', got 'EOF' at end of input: {"test{name!}"} 输出test+变量名
  • ${name[1…4]}取name的1到4个字符
  • ${name?substring(0,4)}截取0到4的字符串
  • ${date?string(‘yyyy-MM-dd’)}日期格式化输出
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值