หลังจาก sruggling เป็นเวลาสองวันฉันพบวิธีแก้ปัญหาคุณสามารถใช้คลาสObjectFactoryเพื่อแก้ไขปัญหาสำหรับคลาสที่ไม่มี @XmlRootElement @XmlRootElementObjectFactory มีวิธีโอเวอร์โหลดเพื่อล้อมรอบ JAXBElement
วิธีการ: 1ทำการสร้างวัตถุอย่างง่าย
วิธีการ: 2จะล้อมวัตถุด้วยล้อม @JAXBElement @JAXBElement
ใช้เสมอ วิธี : 2เพื่อหลีกเลี่ยง javax.xml.bind.MarshalException - โดยมีข้อยกเว้นที่เชื่อมโยงหายไปมีการเพิ่มความคิดเห็น @XmlRootElement
กรุณาค้นหารหัสตัวอย่างด้านล่าง
วิธีการ: 1ทำการสร้างวัตถุอย่างง่าย
public GetCountry createGetCountry() {
return new GetCountry();
}
วิธีการ: 2จะตัดวัตถุที่มี@JAXBElement
@XmlElementDecl(namespace = "my/name/space", name = "getCountry")
public JAXBElement<GetCountry> createGetCountry(GetCountry value) {
return new JAXBElement<GetCountry>(_GetCountry_QNAME, GetCountry.class, null, value);
}
ตัวอย่างรหัสการทำงาน:
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
WebServiceTemplate springWSTemplate = context.getBean(WebServiceTemplate.class);
GetCountry request = new GetCountry();
request.setGuid("test_guid");
JAXBElement<GetCountryResponse> jaxbResponse = (JAXBElement<GetCountryResponse>)springWSTemplate .marshalSendAndReceive(new ObjectFactory().createGetCountry(request));
GetCountryResponse response = jaxbResponse.getValue();