У меня есть конечная точка spring-ws и я использую jaxb (поставщик moxy) для отмены маршала.Я хочу избежать необходимости указывать пространство имен во всех полях класса, если пространство имен совпадает с содержащим классом.
Допустим, я хочу отправить этот простой xml
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:p="http://example.com/parents"
xmlns:c="http://example.com/children">
<soapenv:Header/>
<soapenv:Body>
<p:parent>
<c:child>
<c:field1>value1</c:field1>
<c:field2>value2</c:field2>
<c:field3>value3</c:field3>
</c:child>
</p:parent>
</soapenv:Body>
</soapenv:Envelope>
Этиявляются ли мои доменные объекты
@XmlRootElement(name="parent", namespace="http://example.com/parents")
public class Parent {
private Child child;
@XmlElement(namespace = "http://example.com/children")
public Child getChild() {
return child;
}
public void setChild(Child child) {
this.child = child;
}
}
@XmlType(namespace = "http://example.com/children")
public class Child {
private String field1;
private String field2;
private String field3;
@XmlElement(name = "field1", namespace = "http://example.com/children")
public String getField1() {
return field1;
}
public void setField1(String field1) {
this.field1 = field1;
}
public String getField2() {
return field2;
}
public void setField2(String field2) {
this.field2 = field2;
}
@XmlElement(name = "field3")
public String getField3() {
return field3;
}
public void setField3(String field3) {
this.field3 = field3;
}
}
Я заметил, что field1 имеет значение value1, однако field2 и field3 имеют значение null.Я ожидал бы, что пространства имен в XmlType или пространства имен в дочернем поле в Parent было бы достаточно.
Я также попытался использовать класс packge-info.java
@XmlSchema(
namespace="http://example.com/parents",
xmlns={
@XmlNs(prefix="p", namespaceURI="http://example.com/parents"),
@XmlNs(prefix="c", namespaceURI="http://example.com/children")
},
elementFormDefault=XmlNsForm.UNQUALIFIED)
package com.example.domain;
И я добавил это к field2
@XmlElement(name = "c:field2")
После этого field1 и field2 установлены на правильное значение, но field3 по-прежнему равно нулю.Я ценю любую помощь.
версии:
spring.ws: 3.0.4.RELEASE
moxy: 2.7.3