问题描述
在Jersey内,我可以执行以下模式:
return Response
.ok(objectFactory.createAboAntwort(new AboAntwortType()),APPLICATION_XML_TYPE)
.build();
当我尝试使用Spring Boot做同样的事情时,我能做的最好的就是使用下面的代码在每个函数中手动呈现XML文档,这非常难看。
StringWriter sw = new StringWriter();
Domresult domresult = new Domresult();
jaxb2Marshaller.marshal(objectFactory.createAboAntwort(new AboAntwortType()),domresult);
Transformer transformer = TransformerFactory.newInstance().newTransformer();
transformer.transform(new DOMSource(domresult.getNode()),new StreamResult(sw));
return sw.toString();
当我刚刚返回成为JAXBElement时,已定义了默认的上下文类型。
return objectFactory.createAboAntwort(new AboAntwortType());
我收到警告,没有任何输出。
Resolved [org.springframework.http.converter.HttpMessageNotWritableException: No converter for [class javax.xml.bind.JAXBElement] with preset Content-Type 'null']
@Override
public void configureMessageConverters(
List<HttpMessageConverter<?>> converters) {
converters.add(marshallingMessageConverter());
}
@Bean
public MarshallingHttpMessageConverter marshallingMessageConverter() {
MarshallingHttpMessageConverter converter = new MarshallingHttpMessageConverter();
converter.setMarshaller(jaxbMarshaller());
converter.setUnmarshaller(jaxbMarshaller());
return converter;
}
@Bean
public Jaxb2Marshaller jaxbMarshaller() {
Jaxb2Marshaller marshaller = new Jaxb2Marshaller();
marshaller.setPackagesToScan("de.vdv453");
return marshaller;
}
我想我的主要问题是,没有XmlRootElement批注,默认设置不起作用。但是我不知道如何将正常工作的 Transform 插入。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)