Reputation: 59
I have added the following into my Application
@Bean
public MappingJackson2XmlHttpMessageConverter mappingJackson2XmlHttpMessageConverter() {
MappingJackson2XmlHttpMessageConverter xmlConverter = new MappingJackson2XmlHttpMessageConverter();
XmlMapper objectMapper = new XmlMapper();
objectMapper.configure(ToXmlGenerator.Feature.WRITE_XML_DECLARATION, true);
xmlConverter.setObjectMapper(objectMapper);
return xmlConverter;
}
However, the xml returned as follows i.e. the xml declaration is missing. any ideas what else I need to add?
<Data>
<description></description>
<codeList>
<codeList>
<description>User ID</description>
<key>dfdfeee</key>
</codeList>
<codeList>
<description>Activation ID</description>
<key>2ddddd9881</key>
</codeList>
</codeList>
Upvotes: 1
Views: 3551
Reputation: 1
may be you can try to use @Order(1)
,it will be replace default bean.
@Configuration
@Order(1)
public class HttpMessageConverterConfig {
@Bean
public MappingJackson2XmlHttpMessageConverter mappingJackson2XmlHttpMessageConverter(
Jackson2ObjectMapperBuilder builder) {
XmlMapper xmlMapper = builder.createXmlMapper(true).build();
xmlMapper.configure(ToXmlGenerator.Feature.WRITE_XML_DECLARATION, true);
return new MappingJackson2XmlHttpMessageConverter(xmlMapper);
}
}
Upvotes: 0
Reputation: 472
Declare bean:
@Bean
public MappingJackson2XmlHttpMessageConverter mappingJackson2XmlHttpMessageConverter(Jackson2ObjectMapperBuilder builder) {
XmlMapper xmlMapper = builder.createXmlMapper(true).build();
xmlMapper.configure(ToXmlGenerator.Feature.WRITE_XML_DECLARATION, true);
return new MappingJackson2XmlHttpMessageConverter(xmlMapper);
}
BTW, this should override the bean auto-configured in
org.springframework.boot.autoconfigure.web.JacksonHttpMessageConvertersConfiguration.MappingJackson2XmlHttpMessageConverterConfiguration
Also, this way should apply all XmlMapper/ObjectMapper customizations, if you have.
Upvotes: 5