SpringMVC 接受XML 并自动转化为java对象
SpringMVC 可以接受 XML的请求并能自动转化为java对象,但是在实际的过程中通过注解来配置会配到各种奇葩错误。
1.参数不能接受
<html>
<head>
<meta content="HTML Tidy for Java (vers. 27 九月 2004), see www.w3.org" name="generator"/>
<title>Apache Tomcat/7.0.59 - Error report</title>
<style type="text/css"><!--H1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;
font-size:22px;} H2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} H3
{font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} BODY {font-family:
Tahoma,Arial,sans-serif;color:black;background-color:white;} B
{font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} P
{font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;}A
{color : black;}A.name {color : black;}HR {color : #525D76;}--></style>
</head>
<body>
<h1>HTTP Status 400 -</h1>
<hr noshade="noshade" size="1"/>
<p>
<b>type</b>
Status report
</p>
<p>
<b>message</b>
</p>
<p>
<b>description</b>
<u>The request sent by the client was syntactically incorrect.</u>
</p>
<hr noshade="noshade" size="1"/>
<h3>Apache Tomcat/7.0.59</h3>
</body>
</html>参考配置如下
@RequestMapping(value="/callback",consumes="application/xml",method = RequestMethod.POST)
public String asynCallBack(@RequestBody Person person,final HttpServletRequest request) {consumes="application/xml" 要指定接受XML格式
2.类的两个属性具有相同名
.Caused by: com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException: 1 counts of IllegalAnnotationExceptions INFO | jvm 1 | main | 2017/03/23 14:41:06.711 | 类的两个属性具有相同名秿"ETicketNo"
解决的办法是将 @XmlElement 放在 get方法上,当然别忘了在class上加@XmlRootElement(name="yourNodeName")
@XmlElement(name="ETicketNo")
public String getETicketNo() {
return ETicketNo;
}