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