2015-11-05 43 views
2

我想爲使用java-config的彈簧設置視圖解析器。我嘗試了3種不同的方法,在3個不同的站點中找到不同的配置。他們都工作正常。我的問題是是否有任何特定的標準/方法/簽名/接口方法來定義視圖解析器?使用spring-java-config設置彈簧視圖解析器

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

回答

2

答案是它取決於你的需求。

setupViewResolverjspViewResolver做同樣的,只要JSTL可在classpath:

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支持力度,Freemarker的,Groovy模板和Tiles出的生成器方法框。