0

この問題に関する投稿を見たことがありますが、私は jaxB を初めて使用するので、ルート要素を設定して XML 要素も宣言するのに少し問題があります。ここで何が間違っていますか?

このエラーが発生しています

org.springframework.oxm.MarshallingFailureException: JAXB marshalling exception; nested exception is javax.xml.bind.MarshalException
 - with linked exception:
[com.sun.istack.internal.SAXException2: unable to marshal type "au.test.Search.ws.model.SearchRequest" as an element because it is missing an @XmlRootElement annotation]

ただし、これは私の SearchRequest クラスです

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
        "searchControls",
        "searchCriteria",
        "searchFilters"
})
@XmlRootElement(name = "searchRequest")
public class SearchRequest {

    @XmlElement(required = true)
    protected SearchControls searchControls;
    @XmlElement(required = true)
    protected NameSearchCriteria searchCriteria;
    @XmlElement
    protected NameSearchFilters searchFilters;

    public SearchControls getSearchControls() {
        return searchControls;
    }

    public void setSearchControls(SearchControls value) {
        this.searchControls = value;
    }

    public NameSearchCriteria getSearchCriteria() {
        return searchCriteria;
    }

    public void setSearchCriteria(NameSearchCriteria value) {
        this.searchCriteria = value;
    }

    public NameSearchFilters getSearchFilters() {
        return searchFilters;
    }

    public void setSearchFilters(NameSearchFilters value) {
        this.searchFilters = value;
    }
}

searchControls、criteria、および Filters の設定方法

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "NameSearchFilters", propOrder = {

})
public class NameSearchFilters {

    protected FilterOperator operator;

    public FilterOperator getOperator() {
        return operator;
    }

    public void setOperator(FilterOperator value) {
        this.operator = value;
    }
}

org.springframework.ws.client.core.WebServiceTemplate.marshalSendAndReceive を使用して要求に応じてアンマーシャリングする方法

public SearchResponse performSearch(SearchRequest searchRequest) {
    searchResponse = (SearchResponse) getWebServiceTemplate()
            .marshalSendAndReceive(searchRequest);            
4

1 に答える 1

0

ここでの問題は、依存関係 jar を作成する Ant ビルドが古いバージョンであり、Ant ビルドをやり直す必要があり、すべてのエラーが修正されたことです。Castor を Jaxb に変換していたので、要素の設定は正しいので参考にできます。

この問題があり、依存関係の問題ではない場合、問題の最も可能性の高い原因はマーシャリングにあります。

于 2012-08-06T04:52:04.330 に答える