Как разрешить невозможность маршалирования типа «java.lang.String» в качестве элемента, поскольку отсутствует аннотация @XmlRootElement - PullRequest
0 голосов
/ 08 мая 2019

Я получаю сообщение об ошибке "com.sun.istack.internal.SAXException2: невозможно маршалировать тип" java.lang.String "в качестве элемента, так как отсутствует аннотация @XmlRootElement", когда объект запроса ниже отправляется как вход для Marshalling.

<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>

Я создал JAXbElement (ниже), как объяснялось в большинстве решений для всех элементов (ID, num, detailId), у которых нет аннотации @XmlRootElement. Но это все равно дает мне ту же ошибку.

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>

Может кто-нибудь проверить и сообщить, какую ошибку я делаю?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...