我花了好几个小时想知道怎么做。。。
我已经探索了转换器类,但似乎找不到任何东西。
有人能给我指出正确的方向来转换object类型的responsebody吗?object是一个自定义对象,并指导我在responseentity contenttype设置为text/plain时如何返回它的.tostring值。
如:
@PostMapping("/example")
public ResponseEntity<Object> example() {
Example eg = new Example("Hello World");
return ResponseEntity.ok().contentType(MediaType.TEXT_PLAIN).body(eg);
}
这将与
warn 2204---[nio-8080-exec-1].w.s.m.s.defaulthandlerexceptionresolver:已解析[org.springframework.http.converter.httpmessagenotwritableexception:没有预设内容类型为“text/plain”的[class example.example]的转换器]
我知道这是因为spring不知道如何将这个对象转换为文本/纯格式,我知道我可以将body转换为例如tostring(),但是应用程序需要动态响应类型,因此如果我可以创建一个转换器来实现这一点,这将是理想的。
谢谢
1条答案
按热度按时间niknxzdl1#
在玩了一番
ObjectToStringHttpMessageConverter
类,我注意到在让对象返回响应时没有出现错误-它返回“1”,内容类型为text/plain。我看了托马斯在上述评论中提供的文档(非常感谢)。我注意到这个类是一个“httpmessageconverter,它使用stringhttpmessageconverter读取和写入内容,使用conversionservice将字符串内容与目标对象类型进行转换”。
未能让这个类正常工作后,我决定尝试创建自己的实现
HttpMessageConverter
. 这起到了作用,见下文:}
canread=return false(不关心将字符串解析到相应的对象)
canwrite=true(如果x类不受支持或某个媒体类型不受支持,您可以通过添加使其返回false的条件来提高故障安全性)
getsupportedmediatypes-我希望此转换器将对象转换为纯文本
read=不关心阅读
write=将object.tostring()方法写入outputmessage outputstream
然后,只需将此转换器添加到配置类中的转换器列表中: