如何使用Spring mvc:annotation-driven和ResponseBody返回缩进的XML

时间:2015-03-03 22:14:12

标签: xml spring spring-mvc

我实现了一个简单的控制器,它使用JAXB和@ResponseBody注释返回转换后的XML对象。

我的问题是我很难配置由mvc:annotation-driven创建的默认转换器,我需要将其配置为渲染我的XML缩进。我知道我可以声明我的视图解析器,但我想继续使用注释驱动。

我已经搜索过并发现我可以通过使用mvc:message-converters来配置mvc:annotation-driven,但是我在查找配置Jaxb2RootElementHttpMessageConverter的良好文档方面遇到了很多麻烦。

1 个答案:

答案 0 :(得分:0)

<mvc:annotation-driven>
  <mvc:message-converters>
    <bean class="org.springframework.http.converter.xml.MarshallingHttpMessageConverter">
      <property name="marshaller" ref="jaxb2Marshaller"></property>
      <property name="unmarshaller" ref="jaxb2Marshaller"></property>
    </bean> 
  </mvc:message-converters>
</mvc:annotation-driven>

<bean id="jaxb2Marshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
   <property name="contextPaths">
     <list>
       <value>put your xml classes path here</value>
     </list>
   </property>
   <property name="marshallerProperties">
       <map>
            <entry key="jaxb.formatted.output">
                <value type="java.lang.Boolean">true</value>
            </entry>
            <entry key="jaxb.encoding" value="UTF-8" />
       </map>
   </property>
</bean>