1、概念
表示返回的内容为XML,它依赖于J2XB技术,这是标准的Java API,自带的。
Controller的Handler方法返回值不是viewName,而是MarshallingView对象实例。
2、使用
2.1 MarshallingView
当返回值MarshallingView对象时,使用的步骤如下:
- 第一步,编写实体类,添加J2XB相关的注解
- 第二步,在hanlder方法中建立Jaxb2Marshaller与实体对象之间的关系
- 第三步,在handler方法中建立Jaxb2Marshaller与MarshallingView之间的关系。
2.2 配置
与JSON的配置类似,,它的使用步骤如下:
- 第一步,配置响应内容类型,调用configureContentNegotiation。
- 第二步,配置HttpMessageConverter。需要引入jackson-dataformat-xml架包
- 第三步,验证,返回任意的实体对象。
3、示例
直接向responseBody写Xml字符串的示例省略。
通过配置方式将实体对象转换为xml的示例省略,与Json的唯一区别是HttpMessageConverter的实现类不同
下述是handler方法返回MarshallingView对象的示例
1、第一步,编写实体类,添加J2XB相关的注解
@XmlRootElement @Getter @Setter public class User { // 姓名 private String name; // 年龄 private int age; }
2、第二步,编写handler方法,建立MarshallingView,Jaxb2Marshaller,实体类之间的关系。它的返回值为MarshallingView
@GetMapping("/xml") public MarshallingView getUserByXml(@ModelAttribute User user) { Jaxb2Marshaller marshaller = new Jaxb2Marshaller(); marshaller.setClassesToBeBound(User.class); MarshallingView view = new MarshallingView(); view.setMarshaller(marshaller); return view; }
MarshallingView设置marshaller属性的值为Jaxb2Marshaller,Jaxb2Marshaller用于解析实体对象。
3、验证,发现返回结果为解析实体对象的结果。
<ResponseEntity> <code>200</code> <message>some message</message> <data> <name>Jack</name> <age>10</age> </data> </ResponseEntity>