使用Getter但没有Setter的JAXB Java运行时错误

时间:2014-11-26 16:56:26

标签: java xml jaxb

我使用以下课程:

package com.mycom.ecnviewerview.viewer;

import java.util.ArrayList;
import java.util.List;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement
public class Report {

private String srunDate = null;
private String sUserID = null;
private List<Result> results = new ArrayList<Result>();

@XmlElement
public String getRunDate()
{
    return this.srunDate;
}

public void setRunDate(String pRunDate)
{
    this.srunDate = pRunDate;
}

@XmlElement
public String getUser()
{
    return this.sUserID;
}

public void SetUser(String pUser)
{
    this.sUserID = pUser;
}

@XmlElement
public List<Result> getResults()
{
    return results;
}

public void SetResults(List<Result> pResults)
{
    results = pResults;
}

}

当我拨打以下代码时:

JAXBContext jaxbContext = JAXBContext.newInstance(Report.class);
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();

jaxbUnmarshaller.setEventHandler(new ValidationEventHandler() {
public boolean handleEvent(ValidationEvent event ) {
throw new RuntimeException(event.getMessage(),
event.getLinkedException());
}
});     

Report report = (Report) jaxbUnmarshaller.unmarshal(new FileReader("C:\\Temp\\File.xml"));

txtRunBy.setText(report.getUser());
txtRunDate.setText(report.getRunDate());
results = report.getResults();

错误是:

Err = java.lang.RuntimeException:该属性有一个getter&#34; public java.lang.String com.mycom.ecnviewerview.viewer.Report.getUser()&#34;但没有二传手。对于解组,请定义setter。 (或者,如果这是一个集合属性,请确保getter返回一个集合实例。)

我很困惑,因为我相信我有一个吸气剂和一个二传手。

有什么想法吗?

谢谢, 凯文

1 个答案:

答案 0 :(得分:2)

在Java中,约定是以小写名称开头的方法。从

更改您的二传手
public void SetUser(String pUser)
{
    this.sUserID = pUser;
}

public void setUser(String pUser)
{
    this.sUserID = pUser;
}

和其他人。