【问题标题】:setting up spring view resolver using spring-java-config使用 spring-java-config 设置 spring 视图解析器
【发布时间】:2015-11-05 10:33:35
【问题描述】:

我正在尝试使用 java-config 为 spring 设置视图解析器。我尝试了 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/

【问题讨论】:

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


    【解决方案1】:

    答案取决于您的要求。

    setupViewResolverjspViewResolver 执行相同的操作,只要 JSTL 在类路径上可用:

    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 开箱即用的构建器方法。

    【讨论】:

      猜你喜欢
      • 2013-02-23
      • 2011-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-10
      • 2017-04-19
      • 2012-07-01
      • 2013-08-12
      相关资源
      最近更新 更多