最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

在Java中FreeMarker?模板來定義字符串模板

 更新時間:2022年04月22日 10:05:43   作者:心城以北?  
這篇文章主要介紹了在Java中FreeMarker?模板來定義字符串模板,文章基于Java的相關資料展開詳細內容,需要的小伙伴可以參考一下

問題描述

  • 一個業(yè)務需求,需要在后端通過代碼渲染一個,列表如下圖所示(下圖只是一個示意):

image.png

這個表格的特點就是數(shù)據(jù)重復比較多,結構簡單,我們可以通過 Java 代碼直接拼字符串。但是這樣的問題就會導致,代碼非常的難看。在 Java 代碼中混雜著很多樣式代碼,可讀性和可維護性比較差。所以我就 pass 著這個方案。

于是我就想到,通過模板 + 參數(shù)的方式來實現(xiàn),這樣可以做到結構和參數(shù)的分離,經(jīng)過比較我選擇了通過 FreeMarker 模板來定義結構,最終完成字符串模板的定義。

代碼實現(xiàn)

  • 導入依賴,這里我是基于 spring-boot 為基礎的。
implementation 'org.springframework.boot:spring-boot-starter-freemarker'
  • FreeMarker 工具方法,主要是實現(xiàn)模板文件的讀取和渲染。
@Slf4j
public class FreeMarkerUtils {

    static Configuration cfg = new Configuration(Configuration.DEFAULT_INCOMPATIBLE_IMPROVEMENTS);

    static {
        cfg.setEncoding(Locale.ENGLISH, "utf-8");
        cfg.setTemplateLoader(new SpringTemplateLoader(new DefaultResourceLoader(),"templates/"));
    }

    /**
     * 獲取模板
     *
     * @param templateName
     * @return
     */
    public static Template getTpl(String templateName){
        try {
            Template template = cfg.getTemplate(templateName);
            return template;
        } catch (Exception e) {
            log.error("獲取模板失敗 {}",templateName,e);
            return null;
        }
    }

    /**
     * 獲取模板寫入后的內容
     *
     * @param templateName
     * @param model
     * @return
     */
    public static Optional<String> getTplText(String templateName, Map<String, Object> model){
        try {
            Template template = cfg.getTemplate(templateName);
            String text = FreeMarkerTemplateUtils.processTemplateIntoString(template, model);
            return Optional.ofNullable(text);
        } catch (Exception e) {
            log.error("獲取模板內容失敗 {}",templateName,e);
            return Optional.empty();
        }
    }


}
  • 定義模板,如下所示(下面知識一個示意):
<#list list as item>
    ${item.url} | ${item.name} | ${item.age}
</#list>
  • 使用模板并且返回渲染后的字符串,最終返回字符串。
Map<String, Object> model = new HashMap<>();
model.put("list", new ArrayList())
FreeMarkerUtils.getTplText("a.html", model);

問題總結

  • 我們使用模板的方式可以減少字符串的拼接,提高代碼的可維護性。
  • 如果我們系統(tǒng)中代碼風格比較統(tǒng)一,我們可以通過這種方式來生成代碼(只需要對數(shù)據(jù)庫的 table meta 進行讀取,然后再定義 Java 代碼模板即可)。

到此這篇關于在Java中FreeMarker 模板來定義字符串模板的文章就介紹到這了,更多相關FreeMarker 定義字符串內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Java中instanceof 關鍵字的使用

    Java中instanceof 關鍵字的使用

    instanceof通過返回一個布爾值來指出,某個對象是否是某個特定類或者是該特定類的子類的一個實例,本文就來詳細的介紹一下instanceof 關鍵字的使用,感興趣的可以了解一下
    2023-10-10
  • java實現(xiàn)銀行ATM管理系統(tǒng)

    java實現(xiàn)銀行ATM管理系統(tǒng)

    這篇文章主要為大家詳細介紹了java實現(xiàn)銀行ATM管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • Java?Dubbo服務調用擴展點Filter使用教程

    Java?Dubbo服務調用擴展點Filter使用教程

    Dubbo是阿里巴巴公司開源的一個高性能優(yōu)秀的服務框架,使得應用可通過高性能的RPC實現(xiàn)服務的輸出和輸入功能,可以和Spring框架無縫集成
    2022-12-12
  • 帶你了解Spring AOP的使用詳解

    帶你了解Spring AOP的使用詳解

    這篇文章主要介紹了Spring AOP的使用詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-07-07
  • Mybatis MapperScannerConfigurer自動掃描Mapper接口生成代理注入到Spring的方法

    Mybatis MapperScannerConfigurer自動掃描Mapper接口生成代理注入到Spring的方法

    這篇文章主要給大家介紹了關于Mybatis MapperScannerConfigurer自動掃描將Mapper接口生成代理注入到Spring的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2019-03-03
  • Java批量向PDF文件中添加圖像水印實現(xiàn)細節(jié)

    Java批量向PDF文件中添加圖像水印實現(xiàn)細節(jié)

    這篇文章主要為大家介紹了Java批量向PDF文件中添加圖像水印實現(xiàn)細節(jié),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-05-05
  • SpringBoot配置發(fā)送Email的示例代碼

    SpringBoot配置發(fā)送Email的示例代碼

    本篇文章主要介紹了SpringBoot配置發(fā)送Email的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07
  • 詳解java構建者模式Builder

    詳解java構建者模式Builder

    這篇文章主要介紹了java構建者模式Builder,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-04-04
  • Spring Data環(huán)境搭建實現(xiàn)過程解析

    Spring Data環(huán)境搭建實現(xiàn)過程解析

    這篇文章主要介紹了Spring Data環(huán)境搭建實現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-08-08
  • springboot集成mybatis?plus和dynamic-datasource注意事項說明

    springboot集成mybatis?plus和dynamic-datasource注意事項說明

    這篇文章主要介紹了springboot集成mybatis?plus和dynamic-datasource注意事項說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01

最新評論

昆山市| 石首市| 彭泽县| 镇安县| 水富县| 榕江县| 怀柔区| 得荣县| 邛崃市| 龙山县| 青阳县| 鸡西市| 怀仁县| 卓尼县| 若尔盖县| 神木县| 本溪| 黎平县| 荣昌县| 永丰县| 页游| 葵青区| 阳城县| 酒泉市| 益阳市| 方正县| 贺兰县| 五峰| 阳高县| 陇川县| 五大连池市| 安图县| 布拖县| 安阳县| 泰州市| 海口市| 河西区| 桐城市| 盐池县| 焦作市| 黔江区|