Java XML,正式和实际参数的数量不同,或者解包转换失败

时间:2017-07-25 21:08:47

标签: java-8 ejb jersey-2.0 jaxb2

使用accept: application/xml从端点请求数据时,我不断收到以下错误:

  

javax.xml.bind.MarshalException     - 链接异常:[Exception [EclipseLink-27](Eclipse Persistence Services - 2.6.1.v20150916-55dc7c3):   org.eclipse.persistence.exceptions.DescriptorException异常   描述:尝试在对象上调用方法[getSurveyid]   [com.on24.ejb.mapping.SurveyQuestion]。实际数量和   形式参数不同,或者解包转换失败。   内部异常:java.lang.IllegalArgumentException:对象不是   声明类映射的实例:   org.eclipse.persistence.oxm.mappings.XMLDirectMapping [surveyid - > surveyid /文本()]   描述符:XMLDescriptor(com.on24.ejb.mapping.Survey - >   [DatabaseTable(调查)])]

accept: application/json时响应正常,所以我知道从DB中提取信息不是问题;我只是无法解决这个问题所以任何帮助将不胜感激。

涉及的DTO:

@XmlRootElement
@XmlType (propOrder={"surveyid",
"surveyquestions"})
@XmlAccessorType(XmlAccessType.PUBLIC_MEMBER)
public class Survey {
    private Long surveyid;
    private List<SurveyQuestion> surveyquestions;

    public Survey(){}

    public Long getSurveyid() {
        return surveyid;
    }

    public void setSurveyid(Long surveyid) {
        this.surveyid = surveyid;
    }

    @XmlElementWrapper(name="surveyquestionslist")
    @XmlElement(name="surveyquestion")
    public List<SurveyQuestion> getSurveyquestions() {
        return surveyquestions;
    }

    public void setSurveyquestions(List<SurveyQuestion> surveyquestions) {
        this.surveyquestions = surveyquestions;
    }
}

并且

@XmlRootElement
@XmlType (propOrder={"surveyquestionid",
"surveyquestion",
"surveyanswers"})
@XmlAccessorType(XmlAccessType.PUBLIC_MEMBER)
public class SurveyQuestion {
    private Long surveyquestionid;
    private String surveyquestion;
    private List<String> surveyanswers;


    public SurveyQuestion(){}

    public Long getSurveyquestionid() {
        return surveyquestionid;
    }

    public void setSurveyquestionid(Long surveyquestionid) {
        this.surveyquestionid = surveyquestionid;
    }

    public String getSurveyquestion() {
        return surveyquestion;
    }

    public void setSurveyquestion(String surveyquestion) {
        this.surveyquestion = surveyquestion;
    }

    @XmlElementWrapper(name="surveyanswerslist")
    @XmlElement(name="surveyanswer")
    public List<String> getSurveyanswers() {
        return surveyanswers;
    }

    public void setSurveyanswers(List<String> surveyanswers) {
        this.surveyanswers = surveyanswers;
    }
}

我已经尝试了几次从重构到使用XmlAccessType.PUBLIC_MEMBER, XmlAccessType.FIELD, XmlAccessType.PROPERTY的想法,但没有成功。

我真的很想知道为什么会产生这个错误。如果需要更多信息,我会根据要求添加,谢谢。

0 个答案:

没有答案