前置技术:freemarker(二) --- 基本语法

1.基本语法

1、注释,即<#–和-->,介于其之间的内容会被freemarker忽略
2、FTL指令:和HTML标记类似,名字前加#予以区分,Freemarker会解析标签中的表达式或逻辑。
3、文本,仅文本信息,这些不是freemarker的注释、插值、FTL指令的内容会被freemarker忽略解析,直接输出内容。

<#-- 注释 -->
${user.age}
<#if 条件>
</#if>

2.数据模型

  • 方式1:使用ModelAndView
    • 修改 FreemarkerController,添加 model_a() 方法
@GetMapping("/model_a")
public ModelAndView model_a(){

    ModelAndView modelAndView = new ModelAndView();
    //设置模型(数据)
    Map<String,String> map = new HashMap<>();
    map.put("name","jack");
    map.put("age","18");
    modelAndView.addObject("user" , map);


    //设置视图(页面)
    modelAndView.setViewName("model_a");

    return modelAndView;
}
  • 创建 model_a.ftl 文件在这里插入图片描述
用户名:${user.name} <br/>
密码:${user.age}
  • 方式2:使用Model
@GetMapping("/model_b")
public String model_b(Model model){

    //设置模型(数据)
    Map<String,String> map = new HashMap<>();
    map.put("name","jack");
    map.put("age","19");
    model.addAttribute("user",map);

    //设置视图(页面)
    return "model_b";
}

在这里插入图片描述

  • 方式3:使用自定义数据
@GetMapping("/model_c")
public String model_c(Map map){

    //设置模型(数据)
    Map<String,String> userMap = new HashMap<>();
    userMap.put("name","jack");
    userMap.put("age","20");
    map.put("user",userMap);

    //设置视图(页面)
    return "model_c";
}

在这里插入图片描述

3.List指令:遍历List

  • 语法
<#list 集合 as 变量>
    循环体
</#list>
_index:得到循环的下标,值是从0开始。使用方法"变量_index" 
  • 步骤一:模型数据
@GetMapping("/list")
public String list(Model model){

    //设置模型(数据)
    List<User> list = new ArrayList();
    list.add(new User("jack","1234",18));
    list.add(new User("rose","5678",21));

    model.addAttribute("allUser", list);

    //设置视图(页面)
    return "list";
}
  • 步骤二:编写ftl

在这里插入图片描述

<#list allUser as user>
    ${user_index + 1} -- ${user.username} -- ${user.password} -- ${user.age} <br/>
</#list>
  • 步骤三:访问

在这里插入图片描述

4.List指令:遍历Map

  • 步骤一:模型数据
@GetMapping("/map")
public String map(Model model){

    //设置模型(数据)
    Map<String,User> map = new HashMap<>();
    map.put("user1", new User("jack","1234",18));
    map.put("user2", new User("rose","5678",21));

    model.addAttribute("allUser", map);

    //设置视图(页面)
    return "map";
}
  • 步骤二:编码ftl
    在这里插入图片描述
<#-- 一个数据 -->
${allUser.user1.username} <br/>
${allUser['user1'].username} <br/>

<#-- 遍历一组 -->
<#list allUser?keys as k>
    ${k} -- ${allUser[k].username} -- ${allUser[k].password} -- ${allUser[k].age} <br/>
</#list>
  • 步骤三:访问

在这里插入图片描述

5.if指令

  • 语法
<#if 条件 >
    
</#if>
  • 步骤一:数据模型
@GetMapping("/if")
public String _if(Model model){

    //设置模型(数据)
    model.addAttribute("token", 1234);
    model.addAttribute("token2", "1234");

    //设置视图(页面)
    return "if";
}
  • 步骤二:编写ftl文件
<#if token==1234>
    token 是 1234 <br/>
</#if>

<#if token2 != "5678">
    token2 不是 5678  <br/>
</#if>
  • 步骤三:测试

在这里插入图片描述

6.兼容

  • 情况1:使用${}显示不存在的数据,将抛异常
  • 情况2:使用if比较值相同,但类型不相同的数据时,将抛异常
  • 解决方案:在yml文件中开启兼容
spring:
  freemarker:
    settings:
      classic_compatible: true
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值