Springboot框架,SpringBoot-Freemarker與SpringBoot集成

 2023-10-15 阅读 28 评论 0

摘要:本文將展示通過controller返回一個map,html頁面上展示這個map里的內容,其中,map的key是用戶(user)對象,map的value是該用戶的多個訂單(List<Order>) 一:首先引入freemarker的依賴 <dependency>&l

本文將展示通過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
}  

Springboot框架、五:創建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

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/5/136981.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息