3

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/

1 Answer 1

3

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.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.