我有一个扩展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作为模型属性从控制器传递到视图。有可能避免这种情况吗?
最佳答案
我建议创建一个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。