如何从Freemarker宏的上下文中获取Spring bean?

马克诺金

我需要从WebApplicationContext宏中获取春豆我的尝试是执行以下操作:

<#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方法,则应创建一个bean,就像UserFtlMacroses在其中放置与用户相关的逻辑一样,因此在视图上调用某些宏时,<@user.doSomething/>这些宏doSomething将从中调用方法UserFtlMacroses

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在Spring上下文中模拟bean

Bean的Spring会话范围如何工作?Web上下文中Bean的默认范围是什么?

Micronaut:从上下文中获取bean的问题

在Spring bean上下文中声明对象数组

在Spring Web上下文中添加动态bean

从Spring上下文中获取一个bean(以编程方式注册)?

如何在servlet上下文中引用bean的属性?

如何在安全上下文中使用@Autowiring从应用程序上下文中调用bean

如何从测试应用程序上下文中排除 Spring Boot 应用程序 bean?

Spring MVC:在实例化bean时如何获取上下文参数?

为什么我无法使用Spring Boot在Spring上下文中获得Bean定义?

从应用程序上下文中获取bean类型的列表

从应用程序上下文中删除Spring Bean

在Spring Boot应用程序上下文中找不到Bean

Kotlin Spring无法在应用程序上下文中注册Bean

在Spring上下文中从异步方法调用bean的方法是否真的是并发的?

Spring MVC在应用程序上下文中刷新数据库Bean

如何限制@Primary Bean的上下文?

如何将bean加载到测试上下文中?

如何在Bean验证上下文中设置默认组

Spring Bean上下文中有许多未使用的bean是否会浪费大量资源?

Spring:依賴庫中的自動配置bean未在Spring上下文中加載

在Spring上下文中没有找到类型类... myPackageHere ...的bean,也没有多个

有没有一种方法可以检查是否在spring上下文中定义了bean?

Spring 4 + Tiles(3 || 2.2.2)-有什么方法可以在视图上下文中访问bean?

使用泛型通过上下文获取Spring bean

从 Tasklet 加载 Spring 集成上下文并访问原型 bean

要确保Spring bean的非簧载上下文

将模拟bean注入spring上下文进行测试