【发布时间】:2014-09-13 14:00:23
【问题描述】:
我有一个通用响应类,它用于 spring mvc web 服务中的任何返回类型。 根据需要,我将对象设置为通用响应。我希望客户按照以下结构接收响应。
但是在 Spring MVC respose 中解组 Response 类时总是有异常。我收到以下错误:
org.springframework.integration.transformer.MessageTransformationException: org.springframework.integration.MessageHandlingException: org.w3c.dom.DOMException: INVALID_CHARACTER_ERR: 指定了无效或非法的 XML 字符。
请参阅下面的 Java 类。有人可以指导我问题出在哪里。问题是否是由于每个类中存在多个 XMLRootElement?
Response.java
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "Response", propOrder = { "value", "businessMessages" })
public class Response<T> implements Serializable {
/**
* Generated serial version UID
*/
private static final long serialVersionUID = -2079538531780930420L;
/**
* The value.
*/
@XmlElement(name = "Value")
private T value;
/**
* The business messages.
*/
@XmlElementWrapper(name = "BusinessMessages")
@XmlElement(name = "BusinessMessage")
private List<BusinessMessage> businessMessages;
public List<BusinessMessage> getBusinessMessages() {
return this.businessMessages;
}
public T getValue() {
return this.value;
}
public void setBusinessMessages(List<BusinessMessage> arg0) {
this.businessMessages = arg0;
}
public void setValue(T arg0) {
this.value = arg0;
}
}
BusinessMessage.java
@XmlRootElement
@XmlType(name = "BusinessMessage", propOrder = {"mibCode", "parameters", "severity"})
@XmlAccessorType(XmlAccessType.FIELD)
public class BusinessMessage implements Serializable, Cloneable {
private static final long serialVersionUID = 1L;
@XmlElement(name = "MibCode")
private String mibCode;
@XmlElement(name = "Severity")
private BusinessMessageServerityEnum severity;
@XmlElementWrapper(name = "Parameters")
@XmlElement(name = "Parameter")
private List<String> parameters;
// getter and setter ommited
}
响应中设置的响应类:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"messageId"
})
@XmlRootElement(name = "GetPrelogonInfoResponse")
public class GetPrelogonInfoResponse implements Serializable {
/**
* Serial version identifier generated
*/
private static final long serialVersionUID = -3109695678881152603L;
@XmlElement(name = "MessageId", required = true)
protected String messageId;
// getter and setter ommited
}
【问题讨论】:
-
该消息听起来好像 XML 数据已损坏。 “无效或非法的 XML 字符”是相当低级的,例如 XML 中出现的禁止的 ASCII 控制字符(代码
标签: xml spring spring-mvc jaxb