Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

setting up spring view resolver using spring-java-config

I am trying to setup view-resolver for spring using java-config. I have tried 3 different method with different config found in 3 different sites. All of them working fine. My question is that Is there any specific standard / method / signature / interface method to defining the view-resolver ?

@Bean 
public InternalResourceViewResolver setupViewResolver()  {
    InternalResourceViewResolver resolver =  new InternalResourceViewResolver ();
    resolver.setPrefix ("/WEB-INF/pages/");
    resolver.setSuffix (".jsp");
    resolver.setViewClass (JstlView.class);
    return resolver;
}

ref-link http://habrahabr.ru/post/226663/

@Bean
public InternalResourceViewResolver jspViewResolver() {
    InternalResourceViewResolver bean = new InternalResourceViewResolver();
    bean.setPrefix("/WEB-INF/pages/");
    bean.setSuffix(".jsp");
    return bean;
}

ref-link https://samerabdelkafi.wordpress.com/2014/08/03/spring-mvc-full-java-based-config/

@Bean
public ViewResolver contentNegotiatingViewResolver(ContentNegotiationManager manager) {
        List< ViewResolver > resolvers = new ArrayList< ViewResolver >();

        InternalResourceViewResolver r1 = new InternalResourceViewResolver();
        r1.setPrefix("/WEB-INF/pages/");
        r1.setSuffix(".jsp");
        r1.setViewClass(JstlView.class);
        resolvers.add(r1);

        JsonViewResolver r2 = new JsonViewResolver();
        resolvers.add(r2);

        ContentNegotiatingViewResolver resolver = new ContentNegotiatingViewResolver();
        resolver.setViewResolvers(resolvers);
        resolver.setContentNegotiationManager(manager);
        return resolver;
}

ref-link http://fruzenshtein.com/spring-java-configurations/

like image 810
ParagFlume Avatar asked May 15 '26 23:05

ParagFlume


1 Answers

The answer is it depends on your requirements.

setupViewResolver and jspViewResolver do the same as long as JSTL is available on the classpath:

public InternalResourceViewResolver() {
    Class<?> viewClass = requiredViewClass();
    if (viewClass.equals(InternalResourceView.class) && jstlPresent) {
        viewClass = JstlView.class;
    }
    setViewClass(viewClass);
}

Whereas contentNegotiatingViewResolver shows a more complex example where you want to render the response depending on the request content type.

If you need to register just a specific view resolver you can shorten registration to a simple one liner in Spring 4.1:

@EnableWebMvc
@Configuration
public class HystrixMvcConfiguration extends WebMvcConfigurerAdapter {

    @Override
    public void configureViewResolvers(final ViewResolverRegistry registry) {
        registry.jsp("/WEB-INF/views/", ".jsp");
    }
}

ViewResolverRegistry supports builder methods for Velocity, Freemarker, Groovy templates and Tiles out of the box.


Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!