我正在尝试将MediaType.APPLICATION_XML
数据读入模型类以使用Rest API。
示例:代码片段
@PostMapping(value = "test/{id}/updateSome", consumes = { MediaType.APPLICATION_XML })
public ResponseEntity<String> updateSome(@PathVariable String id,
@RequestBody SomeModel reqBody) { ... }
型号:
@Data
@XmlRootElement(name = "TYPES")
class SomeModel {
private String x;
private String y;
}
Rest API XML正文:
<TYPES>
<TYPE>
<x>3</x>
<y>5</y>
</TYPE>
</TYPES>
错误:
当@XmlRootElement(name =“TYPES”)
(x=null, y=null)
当@XmlRootElement(name =“TYPE”)
“状态”:400, “错误”:“错误请求”, “exception”:“org.springframework.http.converter.HttpMessageNotReadableException”, “message”:“无法解组[com.model.SomeModel]:意外元素(uri:\”\“,local:\”TYPES \“)。预期元素是 &LT; {} TYPE取代;嵌套异常是javax.xml.bind.UnmarshalException: 意外元素(uri:\“\”,local:\“TYPES \”)。预期的要素是 &LT; {} TYPE&gt;”中,
答案 0 :(得分:0)
在你的api中你期待
<TYPES>
<x>..
<y>...
附加信息无法识别。
答案 1 :(得分:0)
我已经明白了。
创建了两个Model类并使用了@XmlElement
注释。
模型1:
@Data
@XmlRootElement(name = "TYPES")
@XmlAccessorType(XmlAccessType.FIELD)
class SomeModel {
@XmlElement(name = "TYPE")
private SomeOtherModel[] type;
}
模型2:
@Data
@XmlRootElement(name = "TYPE")
@XmlAccessorType(XmlAccessType.FIELD)
class SomeOtherModel {
private String x;
private String y;
}
获得预期值(x = 3,y = 5)