使用spring-boot配置内容协商时遇到困难。
我想保留大多数默认的spring-boot配置。
我关注了以下https://spring.io/blog/2013/05/11/content-negotiation-using-spring-mvc/
不是最近的教程。目前,当我发送对application/json
或txt/html
的请求时,视图似乎没有得到解决,但是当我打开@EnableWebMvc
时,它似乎得到了解决。
下面是我当前的配置。
@Configuration // according to the spring-boot docs this should be enough with spring-boot
//@EnableWebMvc If I enable this content-negotiation seems to work without any configuration, but I loose the default spring-boot configuration
public class MvcConfiguration implements WebMvcConfigurer {
@Bean(name = "jsonViewResolver")
public ViewResolver getJsonViewResolver() {
return new JsonViewResolver();
}
@Override
public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
// Simple strategy: only path extension is taken into account
configurer.favorPathExtension(true)
.defaultContentType(MediaType.TEXT_HTML)
.mediaType("html", MediaType.TEXT_HTML)
.mediaType("json", MediaType.APPLICATION_JSON);
}
@Bean
public ViewResolver contentNegotiatingViewResolver(ContentNegotiationManager manager) {
ContentNegotiatingViewResolver resolver = newContentNegotiatingViewResolver();
resolver.setContentNegotiationManager(manager);
return resolver;
}
}
答案 0 :(得分:1)
您没有在内容协商管理器中注册解析器。
请尝试以下修改:
@Bean
public ViewResolver contentNegotiatingViewResolver(ContentNegotiationManager manager){
ContentNegotiatingViewResolver resolver = newContentNegotiatingViewResolver();
resolver.setContentNegotiationManager(manager);
List<ViewResolver> resolvers = new ArrayList<>();
ViewResolver aViewResolver = getJsonViewResolver();
resolvers.add(aViewResolver);
resolver.setViewResolvers(resolvers);
return resolver;
}