Spring Boot具有JAXBElement <?>结果

问题描述

在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']

我尝试添加WebConfig

    @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 (将#修改为@)