我正在尝试使用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;
}
答案 0 :(得分:2)
答案取决于您的要求。
只要JSTL在类路径上可用, setupViewResolver
和jspViewResolver
就会这样做:
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的构建器方法。