有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java JaxB无法marshall,表示缺少根元素,但有一个

我看到过关于这个问题的文章,但由于我是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;
    }
}

如何设置搜索控件、条件和筛选器

@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。客户果心WebServiceTemplate。马歇尔发送和接收

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

共 (1) 个答案

  1. # 1 楼答案

    这里的问题是,创建依赖性jar的Ant构建是一个旧版本,Ant构建需要重做,所有错误都需要修复。 我将Castor转换为Jaxb,因此元素的设置是正确的,因此可以用作参考点

    对于有此问题且不是依赖性问题的人,最有可能导致此问题的原因是编组