本文将展示通过controller返回一个map,html页面上展示这个map里的内容,其中,map的key是用户(user)对象,map的value是该用户的多个订单(List<Order>)

一:首先引入freemarker的依赖

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

二:创建2个文件夹和一个freemarker模板
1.在src/main/resources文件夹建立一个叫templates的文件夹,用来装freemarker的ftl文件
2.在src/main/resources/templates文件夹下创建一个叫index.ftl的文件
3.在src/main/resources文件夹建立一个叫static的文件夹,这个文件夹用来装静态资源,比如css,js,图片等等
三:配置freemarker(无须配置yml或者properties文件)
此处使用spring封装的freemarker,因为原生freemarker循环map的key只能是String类型,而我们的map的key是User类型,而不是String,spring封装过的就没问题,将该方法放到任意一个由spring管理的类中(多数都是启动类)

@Bean
public FreeMarkerConfigurer freeMarkerConfigurer() {FreeMarkerConfigurer fc = new FreeMarkerConfigurer();fc.setTemplateLoaderPath("classpath:/templates/");Properties pro = new Properties();pro.setProperty("object_wrapper", "freemarker.ext.beans.BeansWrapper");fc.setFreemarkerSettings(pro);return fc;
}

四:创建用户类和订单类

public class User {private String name;public User(String name) {this.name = name;}// 省略get set
}
public class Order {private String number;public Order(String number) {this.number = number;}// 省略get set
}

五:创建controller

@Controller
public class NodesAndResourceGUIController {@RequestMapping("myorders")public ModelAndView currentNodes1() {ModelAndView mav = new ModelAndView();// ftl的文件名字,比如aaa.ftl,那么viewName就应该等于"aaa"mav.setViewName("index");// --------创建第1个用户,该用户拥有2个订单User u1 = new User("人员1");Order o11 = new Order("订单11");Order o12 = new Order("订单12");List<Order> list1 = Arrays.asList(o11, o12);// --------创建第2个用户,该用户拥有2个订单User u2 = new User("人员2");Order o21 = new Order("订单21");List<Order> list2 = Arrays.asList(o21);//---------创建1个返回结果Map<User, List<Order>> map = new HashMap<>();map.put(u1, list1);map.put(u2, list2);mav.addObject("result", map);return mav;}

六:向index.ftl文件写入如下内容(index.ftl文件是步骤二创建的)

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8">// 此处是获取static(步骤二)文件夹下的css文件夹下的css.css文件// 本文虽然没有用这个css,但是依然要记录下来,方便以后使用<link rel="stylesheet" href="${springMacroRequestContext.getContextPath()}/css/css.css"><link rel="stylesheet" href="${springMacroRequestContext.getContextPath()}/css/font.css">
</head>
// 因为freemarker对空限制的非常严格,所以如果你出现了错误,请先保证需要的值一定不为空,或者一定判断了空
// 下面的语义是:先判断controller返回的ModelAndView中的result是否为空
// 如果不为空,则循环,第一次循环,循环的是map,第二次循环,循环的是map
// 中每个元素的value,注意keySet(),这是步骤三中使用spring封装后的freemarker才有的方法
// 原生freemarker没有keySet()
<#if result??>           <#list result.keySet() as user>${user.name}<#list result.get(user) as order>${order.number}</#list></#list>
</#if>
</html>

七:打开浏览器访问localhost:xxxx/myorders

SpringBoot-Freemarker与SpringBoot集成相关推荐

  1. Java项目:后台管理系统脚手架项目(java+SpringBoot+FreeMarker+mysql+JSP)

    源码获取:博客首页 "资源" 里下载! 项目描述: 这是一个基于SpringBoot框架开发的后台管理系统脚手架项目.之所以称为脚手架项目,是因为这个项目复用性很强,如果以后有其他 ...

  2. bootstrap table 分页_Java入门007~springboot+freemarker+bootstrap快速实现分页功能

    本节是建立在上节的基础上,上一节给大家讲了管理后台表格如何展示数据,但是当我们的数据比较多的时候我们就需要做分页处理了.这一节给大家讲解如何实现表格数据的分页显示. 准备工作 1,项目要引入freem ...

  3. 从零打造springboot+freemarker+layui实现简易CMS管理系统(一)

    ·1项目架构 废话不多说,直接上图 maven引用: <dependencies><dependency><groupId>org.springframework. ...

  4. SpringBoot+FreeMarker+flying-saucer-pdf实现PDF预览、分页需求

    文章目录 SpringBoot+FreeMarker+flying-saucer-pdf实现PDF预览.分页需求 需求说明 程序示例 程序示例说明 添加依赖包 FreeMarker模板文件编写 工具类 ...

  5. Springboot Freemarker配置全局变量

    Springboot Freemarker配置全局变量 1.配置全局变量上下文路径来获取资源 @Slf4j @Configuration @Data @NoArgsConstructor @AllAr ...

  6. 基于javaweb的医院分诊挂号住院管理系统(java+springboot+freemarker+mysql)

    基于javaweb的医院分诊挂号住院管理系统(java+springboot+freemarker+mysql) 运行环境 Java≥8.MySQL≥5.7 开发工具 eclipse/idea/mye ...

  7. 基于javaweb+springboot的医院分诊挂号住院管理系统(java+SpringBoot+FreeMarker+Mysql)

    基于javaweb+springboot的医院分诊挂号住院管理系统(java+SpringBoot+FreeMarker+Mysql) 主要实现了从挂号预约到分诊住院出诊等一些列医院基本操作流程的全部 ...

  8. springboot+thymeleaf或者springboot+freemarker的国际化

    springboot+thymeleaf 参考网站http://blog.csdn.net/lwphk/article/details/41822447 pom.xml <dependency& ...

  9. 基于javaweb+springboot的物流快递在线寄查快递系统(java+SpringBoot+FreeMarker+Mysql)

    基于javaweb+springboot的物流快递在线寄查快递系统(java+SpringBoot+FreeMarker+Mysql) 超级管理员:系统管理.用户管理.网点管理.运输点管理.快递员管理 ...

  10. 基于Springboot+freemarker+Mysql实现的宿舍维修上报管理系统

    <基于Springboot+freemarker+Mysql实现的宿舍|寝室维修上报管理系统>该项目含有源码.论文等资料.配套开发软件.软件安装教程.项目发布教程等 使用技术: 前端使用技 ...

最新文章

  1. 数据智能与计算机图形学领域推荐论文列表
  2. x-requested-with 请求头 区分ajax请求还是普通请求
  3. 通信网络基础实验报告_建设亚太信息枢纽港、实现5G网络全覆盖!临港新片区通信基础设施规划发布...
  4. 广联达2018模板算量步骤_广联达gtj2021实操案例,新增6大板块,快速提高算量效率...
  5. easyui日期控件datebox的onchange事件
  6. like语法 mysql_mysql中like语法拼接4种方式
  7. maya导入abc动画_外包过程中的动画重定向以及蒙皮调整经验
  8. 绞尽脑汁!益智解谜的Mac游戏推荐
  9. 计算机组装中如何看硬件型号,如何查看主板型号?(三种方法!)
  10. 将本地图片或者网上图片用post方式上传到图片服务器
  11. 15数字华容道解法 图解_数字华容道最后一行技巧 数字华容道教学步骤
  12. 苹果8p手机的指纹解锁为什么会失灵呢?怎么解决
  13. 高斯消元法求解线性方程组(附python代码)
  14. win10/win1桌面图标锁定,防止桌面图标移动
  15. java properties map_为什么java.util.Properties实现Map而不是Map
  16. Innodb存储引擎-idb文件格式解析
  17. 数据库的基础使用方法
  18. My Interview
  19. 首个比较研究表明维持期强柱患者减量续用TNFi疗效尚佳且药费省
  20. 通向天才之路 : 实时环境映射贴图技术(Real-time Evironmnet Mapping)

热门文章

  1. mysql中更新的命令是_MySQL 语言中,更新表数据的命令是( )。_学小易找答案
  2. arm linux装wine,Ubuntu下安装wine详细介绍
  3. 倍周期分岔 matlab,由倍周期分岔走向混沌-Read.DOC
  4. 半导体八大工艺流程图_大国重器,国芯基石 半导体离子注入机行业研究报告...
  5. jtopo绘图帧数与cpu使用率
  6. Oracle中字符串转义问题总结
  7. javajs ---- 判断字符串中是否包含子串
  8. php中的解析范围符,PHP 范围解析操作符(::)用法分析【访问静态成员和类常量】...
  9. 湖南师范大学数学与计算机学院郭水霞,湖南师范大学数学与计算机科学学院2013备考手册...
  10. mysql 字段加减_Mysql常见问题及优化