如何在弹簧控制器中返回纯文本?

时间:2015-10-29 13:02:53

标签: spring plaintext spring-restcontroller

我想返回一个简单的纯文本字符串,如下所示:

@RestController 
@RequestMapping("/test")
public class TestController {
    @ResponseStatus(HttpStatus.OK)
    @RequestMapping(value = "/my", method = RequestMethod.GET, produces="text/plain")
    public String test() {
        return "OK";
    }

问题:我还有一个全局ContentNegotiation过滤器,如下所示:

@Configuration
public class ContentNegotiationAdapter extends WebMvcConfigurerAdapter {
    @Override
    public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
        configurer.favorPathExtension(false)
                .favorParameter(true)
                .ignoreAcceptHeader(true)
                .useJaf(false)
                .defaultContentType(MediaType.APPLICATION_XML);
    }

    @Override
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
        super.configureMessageConverters(converters);
    }
}

结果:每当我访问弹簧控制器时,我都会收到错误:

Could not find acceptable representation

问题:即使在内容协商中只配置了XML(我必须保留),如何强制控制器返回纯文本?

3 个答案:

答案 0 :(得分:2)

如果从映射中删除element.focusout(function(event){ element.next().hide(); return event; }); ,它将返回纯文本,但标题设置为produces="text/plain"。这可能是不可取的。 我测试了最新版本的Spring Boot。

如果您使用的是Spring&gt; = 4.1.2版本,则可以尝试使用"application/xml"代替defaultContentTypeStrategy,在标题中设置正确的内容类型:

defaultContentType

答案 1 :(得分:0)

如果我记得很清楚,您可以使用@ResponseBody注释该方法,它将返回纯文本。

Check this

答案 2 :(得分:0)

您需要为测试方法指定@ResponseBody注释,如:

public @ResponseBody String test(){}