我有一个扩展AbstractExcelView
的视图类public class ExportExcelParticipantsView extends AbstractExcelView {
...
}
我想向这个bean注入一个MessageSource。这可能吗?
我使用ResourceBundleViewResolver来解析视图(在本例中)
<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>
是否每次请求视图时都会实例化此视图类,因此向此类注入消息源比平时更难?它甚至可能吗?
目前,我将MessageSource作为模型属性从控制器传递给视图。有可能避免这种情况吗?
答案 0 :(得分:1)
我建议创建一个ResourceBundleViewResolver的简单子类。此子类将覆盖loadView()方法并将MessageSource注入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;
}
}
此处注入的MessageSource是appcontext自己的消息源,但您可以在此处注入所需的任何消息源。此外,您的View类需要实现MessageSourceAware。