当收到以下请求对象时,我收到错误“ com.sun.istack.internal.SAXException2:无法将类型“ java.lang.String”作为元素编组,因为它缺少@XmlRootElement批注”编组的输入。
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header/>
<SOAP-ENV:Body>
<ns:sampleRequest xmlns:ns="http://samplenamespace.com/x">
<ID>7cbb07d7-ca09-4f5b-b441-88f43eee9546</ID>
<item>
<num>1</num>
<details>
<detailId>22</detailId>
</details>
<details>
<detailId>22</detailId>
</details>
</item>
</ns:sampleRequest>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
我为大多数没有@XmlRootElement注释的元素(ID,num,detailId)的大多数解决方案中的说明创建了JAXbElement(如下)。但这仍然给我同样的错误。
private final static QName _ID_QNAME = new QName("", "ID");
@XmlElementDecl(namespace = "", name = "ID")
public JAXBElement<String> createtransactionID(String value)
{
return new JAXBElement<String>(_ID_QNAME , String.class, null, value);
}
但是,下面的请求没有问题(即使那不是我想要发送的请求)。
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header/>
<SOAP-ENV:Body>
<ns:sampleRequest xmlns:ns="http://samplenamespace.com/x">
<ns:sampleRequestType>
<ns:sampleRequest xmlns:ns="http://samplenamespace.com/x">
<ID>7cbb07d7-ca09-4f5b-b441-88f43eee9546</ID>
<item>
<num>1</num>
<details>
<detailId>22</detailId>
</details>
<details>
<detailId>22</detailId>
</details>
</item>
</ns:sampleRequest>
</ns:sampleRequestType>
</ns:sampleRequest>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
有人可以检查一下,让我知道我在做什么错吗?