猿问

Spring Boot内容协商配置

我在使用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;

    }

}


沧海一幻觉
浏览 189回答 1
1回答

蝴蝶不菲

您没有在内容协商管理器中注册解析器。请尝试以下修改:@Beanpublic ViewResolver contentNegotiatingViewResolver(ContentNegotiationManager manager){&nbsp; ContentNegotiatingViewResolver resolver = newContentNegotiatingViewResolver();&nbsp; resolver.setContentNegotiationManager(manager);&nbsp; List<ViewResolver> resolvers = new ArrayList<>();&nbsp; ViewResolver aViewResolver = getJsonViewResolver();&nbsp; resolvers.add(aViewResolver);&nbsp; resolver.setViewResolvers(resolvers);&nbsp; return resolver;}
随时随地看视频慕课网APP

相关分类

Java
我要回答