gpt4 book ai didi

spring - 如何将 MessageSource 注入(inject)到扩展 AbstractView 的 View 中

转载 作者:行者123 更新时间:2023-12-02 05:11:57 29 4
gpt4 key购买 nike

我有一个扩展 AbstractExcelView 的 View 类

public class ExportExcelParticipantsView extends AbstractExcelView  {
...
}

我想向这个 bean 注入(inject)一个 MessageSource。这可能吗?

我使用 ResourceBundleViewResolver 来解析 View (在本例中)

<bean id="resourceBundleViewResolver"
class="org.springframework.web.servlet.view.ResourceBundleViewResolver">
<!-- Classpath needs to have views.properties -->
<property name="basename" value="views" />
<!-- This view resolver is the first one used -->
<property name="order" value="0"/>
<property name="defaultParentView" value="parent-view"/>
</bean>

是否每次请求 View 时都会实例化该 View 类,从而向该类注入(inject)消息源比平常更困难?有可能吗?

目前,我将 MessageSource 作为模型属性从 Controller 传递到 View 。有可能避免这种情况吗?

最佳答案

我建议创建一个 ResourceBundleViewResolver 的简单子(monad)类。该子类将重写 loadView() 方法并将 MessageSource 注入(inject)到 View 对象中:

public class MyViewResolver extends ResourceBundleViewResolver {

@Override
protected View loadView(String viewName, Locale locale) throws Exception {
View view = super.loadView(viewName, locale);
if (view instanceof MessageSourceAware) {
((MessageSourceAware)view).setMessageSource(getApplicationContext());
}
return view;
}
}

此处注入(inject)的 MessageSource 是 appcontext 自己的消息源,但您可以在此处注入(inject)任何您需要的消息源。此外,您的 View 类需要实现 MessageSourceAware。

关于spring - 如何将 MessageSource 注入(inject)到扩展 AbstractView 的 View 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/847372/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com