[英]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.