У меня есть общий класс ответа, который используется для любого типа возврата в веб-службах весны mvc. Основываясь на необходимости, я устанавливаю объекты на общий ответ. Я ожидаю, что клиент получит ответ в соответствии с приведенной ниже структурой.Проблема с Java-маршаллингом Java
Но всегда есть исключения при одновременном отмене класса Response весной MVC. Я получаю ниже ошибки:
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
}
класс Response, который установлен в ответ:
@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» является довольно низкоуровневым, например, запрещенный ASCII управляющий символ (код <32), встречающийся в XML. Возможно, «другая сторона» (та, которая отправляет ответ) является неправильной. – laune