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; }