CKEditor 5 + SpringBoot實戰(五):SpringBoot & Freemarker整合

在本系列的文章中,我將介紹如何在Spring Boot Application中使用CKEditor編輯器。介紹的內容包括基本環境的搭建,文件上傳,SpringData JPA數據持久化,CKEditor5的安裝,CKEditor圖片上傳,CKEditor插入視頻,獲取/設置CKEditor內容等。

項目源碼

本系列文章的項目源碼同步更新至碼雲Github ,你可以任選其一下載源碼到本地。項目地址如下:

  1. 碼雲:https://gitee.com/ramostear/CKEditor5-SpringBoot
  2. Github:https://github.com/ramostear/CKEditor5-SpringBoot

你也可以通過Git命令行工具下載項目源碼,命令如下(二者任選其一):

git clone https://gitee.com/ramostear/CKEditor5-SpringBoot.git
git clone https://github.com/ramostear/CKEditor5-SpringBoot.git

FreeMarker

Apache FreeMarker是一個基於Java語言開發的模板引擎,用於根據模板和不斷變化的數據生成文本輸出(例如:HTML網頁,電子郵件,配置文件,源代碼等)。FreeMarker模板使用FTL模板語言編寫,這是一種簡單的專用語言,在模板中,你專注於如何顯示數據,在模板之外,你專注於呈現什麼樣的數據。

Maven 依賴

在SpringBoot項目中,使用FreeMarker是一件很容易的事情,首先我們需要導入FreeMarker的依賴包。打開pom.xml文件並添加如下配置:

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

FreeMarker配置

SpringBoot遵循約定優於配置的原則,在默認情況下,你只需要導入FreeMarker的依賴包即可在項目中使用它,無需再編寫其他的配置代碼。如果你還需要有其他額外的配置,例如模板的後綴名,模板存放路徑等,則可以按照如下的方式進行配置。

ViewResolver

Spring MVC爲我們提供了ViewResolver接口,該接口將視圖名稱映射到實際的視圖,接下來,我們將創建一個FreeMarkerViewResolver實例,作爲項目的視圖解析器,並覆蓋其中默認的配置參數。

打開上一章中創建的MvcConfiguration.java類,並在其中添加如下的方法:

@Bean
public FreeMarkerViewResolver freeMarkerViewResolver(){
    FreeMarkerViewResolver resolver = new FreeMarkerViewResolver();
    resolver.setCache(false);
    resolver.setPrefix("");
    resolver.setSuffix(".html");
    return resolver;
}

在該方法中,我們關閉了視圖解析器的緩存功能,模板的前綴爲空,模板的後綴名爲".html"。

FreeMarker模板路徑配置

接下來,我們將設置FreeMarker模板的存放路徑,該路徑是指模板在Web上下文中的位置。在Spring Boot應用程序中,FreeMarker模板路徑默認爲"classpath:/templates/"。如果我們有多個模板路徑,則可以按照如下的方法進行配置。

@Bean
public FreeMarkerConfigurer freeMarkerConfigurer(){
    String[] templatePaths = {"classpath:/templates/","file:"+Consts.FILE_STORAGE_ROOT+"/themes/"};
    FreeMarkerConfigurer configurer = new FreeMarkerConfigurer();
    configurer.setTemplateLoaderPaths(templatePaths);
    return configurer;
}

在該配置方法中,除了默認的"classpath:/templates/"路徑外,我們還額外將磁盤的某個路徑設置成了模板路徑。如此配置後,視圖解析器首先會在"/templates/"目錄下查找模板文件,如未找到,則會跳轉到“Constas.FILE_STORAGE_ROOT/themes/”目錄中去查找。

Freemarker 模板

現在,我們可以在“/templates/”目錄下使用Freemarker創建HTML模板。在本示例中,我們僅簡單的輸出一句話:“Hello CKEditor5”。當請求“/hello”url時,Spring將使用我們提供的模型(數據)處理模板。在模板中,我們使用表達式“${message}”來獲取模型。

HelloController

package com.ramostear.ckeditor.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class HelloController {

    @GetMapping("/hello")
    public String hello(Model model){
        model.addAttribute("message","Hello CKEditor5");
        return "hello";
    }
}

hello.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Hello CKEditor5</title>
    <style>
        .msg{
            width: 200px;
            height: 30px;
            position: absolute;
            top: 50%;
            left: 50%;
            transform: translate(-50%,-50%);
        }
    </style>
</head>
<body>
    <h2 class="msg">${message}</h2>
</body>
</html>

最後,啓動應用程序並在瀏覽器中輸入:“ http://localhost:8080/hello ”,然後觀察頁面輸出。輸出結果如下圖:

本章小結

在本章中,主要介紹瞭如何在Spring Boot應用程序中集成FreeMarker。FreeMarker的功能不僅僅是文中所展示的內容,如果你需要查閱更多的信息,請訪問FreeMarker官網:https://freemarker.apache.org/。 在下一章節中,我將介紹CKEditor5的安裝於初始化。

未經作者允許,請勿擅自轉載,轉載請註明文章作者和出處。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章