簡體   English   中英

如何從Freemarker宏的上下文中獲取Spring bean?

[英]How to get spring bean from context in freemarker macros?

我需要在宏中從WebApplicationContext獲取spring bean。 我的嘗試是執行以下操作:

<#macro categoryName category>
    <#assign context=springMacroRequestContext.webApplicationContext>
    <#assign lb=context.getBean("localizationBean")/>
    <#assign pp=context.getBean("phraseProvider")/>
    <#assign categoryName=pp.getPhrase(lb.getCategoryMnemo(category))/>
    ${categoryName}
</#macro>

但這是失敗的。 首先,如果我提供一個bean名稱(它是getBean的字符串),它返回一個必須以某種方式進行轉換的Object,那么我也試圖提供完全合格的類名稱,但是freemarker不喜歡它。 那怎么辦呢?

我對這個問題的解決方案是從控制器傳遞一個bean,然后在宏中使用它。

我也建議您在域中是否有例如User實體來創建一個相關的宏文件,如user-macroses.ftl ,其中放置所有與用戶相關的宏。

而且,如果在某些宏中需要調用某些Spring bean方法,則應創建一個類似於UserFtlMacroses的bean, UserFtlMacroses在其中放置與用戶相關的邏輯,因此在視圖上調用某些宏<@user.doSomething/>doSomething宏將調用UserFtlMacroses的方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM