この問題に関する投稿を見たことがありますが、私は 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);