How to add a MessageSource to a view that extends AbstractView

I have a view class that extends AbstractExcelView

public class ExportExcelParticipantsView extends AbstractExcelView  {
...
}

I would like to introduce a MessageSource into this bean. Is it possible?

I am using ResourceBundleViewResolver to allow views (in this case)

<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> 

Is it really so that this presentation class is created every time a view is requested, and thus entering a message source into this class is more complicated than usual? Is it possible?

I am currently passing MessageSource as an attribute of the model from the controller to the view. Can this be avoided?

+3
source share
1 answer

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.

+1

Source: https://habr.com/ru/post/1708068/


All Articles