欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

FreeMarker如何調(diào)用Java靜態(tài)方法及靜態(tài)變量方法

 更新時間:2023年12月27日 16:03:15   作者:Colder丶  
這篇文章主要介紹了FreeMarker如何調(diào)用Java靜態(tài)方法及靜態(tài)變量方法,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

FreeMarker調(diào)用Java靜態(tài)方法及靜態(tài)變量方法

這里介紹下在類似 Spring+FreeMarker 的架構(gòu)中如何在FreeMarker中訪問Java中的靜態(tài)方法以及靜態(tài)變量

為了方便以及可復(fù)用先創(chuàng)建一個工具類

/**
 * FreeMarker Utils.
 *
 * @author chenxinyu
 */
public abstract class FreeMarkerUtils {
 
    /**
     * init for static classes and fields.
     *
     * @param model model
     */
    public static void initStatics(final Model model) {
        // you can also create the Version like: new Version("2.3.27");
        BeansWrapper wrapper = new BeansWrapper(new Version(2, 3, 27));
        TemplateModel statics = wrapper.getStaticModels();
        model.addAttribute("statics", statics);
    }
 
}

這里稍作解釋:

`wrapper.getStaticModels()` 會返回一個 `TemplateHashModel` ,它會利用反射公開所有的靜態(tài)方法和靜態(tài)成員變量,包括 final 和 非final 的。

之后我們將這個 `HashModel` 添加至 Spring 的 Model 參數(shù)里面。 

然后在 `Controller` 里面調(diào)用如上代碼即可

FreeMarkerUtils.initStatics(model);

在FreeMarker的 `.ftl` 文件中調(diào)用靜態(tài)方法和靜態(tài)變量

1.訪問靜態(tài)變量

${statics["com.springboot.constants.TestConstants"].NAME}

引號中間填入靜態(tài)變量所在的類路徑,中括號后面使用 . 來調(diào)用相應(yīng)變量就行。

2.訪問靜態(tài)方法

  • I.首先我們使用 <#assign> 來定義下所要調(diào)用的類:
<#assign DateTimeUtils=statics['com.springboot.util.DateTimeUtils']>
  • II.之后就可以盡情調(diào)用了:
${DateTimeUtils.formatDateTime(datetime)}

雖然網(wǎng)上搜羅出過不少其他解決方案的版本,但自己在沿用的過程中出現(xiàn)過些許不同的坑,于是重新整理了這套可行、可用,且暫未過期的方案

以前所使用的 `new BeansWrapper()` 以及 `BeansWrapper().getDefaultInstance()` 現(xiàn)在均已過期(被標(biāo)記為 @Deprecated)

新的 BeansWrapper 需要利用 BeansWrapperBuilder 來創(chuàng)建。

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Spring Boot與Spring Security的跨域問題解決方案

    Spring Boot與Spring Security的跨域問題解決方案

    跨域問題是指在Web開發(fā)中,瀏覽器出于安全考慮,限制了不同域名之間的資源訪問,本文重點給大家介紹Spring Boot與Spring Security的跨域問題解決方案,感興趣的朋友一起看看吧
    2023-09-09
  • Java中的BlockingQueue接口源碼解析

    Java中的BlockingQueue接口源碼解析

    這篇文章主要介紹了Java中的BlockingQueue接口源碼解析,BlockingQueue接口表示阻塞隊列,是Java并發(fā)包中阻塞隊列的接口定義規(guī)范,阻塞隊列意味著對于該隊列的操作是線程安全的,當(dāng)多個線程存放元素進(jìn)入隊列或者從隊列中取出元素都是線程安全的,需要的朋友可以參考下
    2023-11-11
  • Springboot整合Netty實現(xiàn)RPC服務(wù)器的示例代碼

    Springboot整合Netty實現(xiàn)RPC服務(wù)器的示例代碼

    這篇文章主要介紹了Springboot整合Netty實現(xiàn)RPC服務(wù)器的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • 淺談java中守護(hù)線程與用戶線程

    淺談java中守護(hù)線程與用戶線程

    本篇文章主要介紹了淺談java中守護(hù)線程與用戶線程,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • JAVA多線程實現(xiàn)生產(chǎn)者消費者的實例詳解

    JAVA多線程實現(xiàn)生產(chǎn)者消費者的實例詳解

    這篇文章主要介紹了JAVA多線程實現(xiàn)生產(chǎn)者消費者的實例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • java最新版本連接mysql失敗的解決過程

    java最新版本連接mysql失敗的解決過程

    這篇文章主要給大家介紹了關(guān)于java最新版本連接mysql失敗的解決過程,文中通過圖文以及示例代碼將解決的過程介紹的非常詳細(xì),對遇到這個問題的同學(xué)具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2021-09-09
  • Java如何獲取相對路徑文件

    Java如何獲取相對路徑文件

    這篇文章主要介紹了Java如何獲取相對路徑文件問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • java單鏈表實現(xiàn)書籍管理系統(tǒng)

    java單鏈表實現(xiàn)書籍管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了java單鏈表實現(xiàn)書籍管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • Mac電腦安裝多個JDK版本的詳細(xì)圖文教程

    Mac電腦安裝多個JDK版本的詳細(xì)圖文教程

    目前使用的主流版本還是JDK 8,但偶爾會想體驗下新版本(或者舊版本),如果能裝多個版本的JDK,而且很方便的切換就好了,這篇文章主要給大家介紹了關(guān)于Mac電腦安裝多個JDK版本的相關(guān)資料,需要的朋友可以參考下
    2024-03-03
  • 使用SpringBoot發(fā)送郵件的方法詳解

    使用SpringBoot發(fā)送郵件的方法詳解

    這篇文章主要介紹了使用SpringBoot發(fā)送郵件的方法詳解,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2023-05-05

最新評論