使用spring-java-config设置spring view resolver

时间:2015-11-05 10:33:36

标签: spring spring-mvc spring-java-config

我正在尝试使用java-config为spring设置view-resolver。我尝试了3种不同的方法,在3个不同的站点中找到了不同的配置。所有这些都很好。我的问题是是否有任何特定的标准/方法/签名/接口方法来定义视图解析器?

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

重新链接http://habrahabr.ru/post/226663/

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

重新链接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;
}

重新链接http://fruzenshtein.com/spring-java-configurations/

1 个答案:

答案 0 :(得分:2)

答案取决于您的要求。

只要JSTL在类路径上可用,

setupViewResolverjspViewResolver就会这样做:

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

contentNegotiatingViewResolver显示了一个更复杂的示例,您希望根据请求内容类型呈现响应。

如果您只需要注册一个特定的视图解析器,您可以在Spring 4.1中将注册缩短为简单的一行:

@EnableWebMvc
@Configuration
public class HystrixMvcConfiguration extends WebMvcConfigurerAdapter {

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

ViewResolverRegistry支持Velocity,Freemarker,Groovy模板和Tiles的构建器方法。