提问人:Richard 提问时间:5/27/2022 最后编辑:Richard 更新时间:5/27/2022 访问量:247
SAXException2:在 IDREF 属性中找到对象,但此对象没有 ID
SAXException2: Object is found in an IDREF property but this object doesnt have an ID
问:
我正在使用 Java8 开发一个 SpringBoot 应用程序,该应用程序是用于将 REST 接口放在 SOAP 服务上的代理。因此,我需要将许多 POJO 转换为生成的 SOAP 对象来调用 SOAP 服务。
这一切都很完美,但是我有一个生成的类给出了一个错误,因为它没有定义的成员变量(即它的类型)。Object
邻近位置:.java
public class ProximityToLocation extends Locator implements Serializable {
@XmlElement(
required = true
)
@XmlIDREF
@XmlSchemaType(
name = "IDREF"
)
protected Object to;
正如你在上面生成的类中看到的,它有一个名为 .通过查看对服务的其他SOAP调用,我知道该对象需要为生成类型。ProximityToLocation
to
Object
to
GPSLocator
GPS移动器.java
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(
name = "GPSLocator",
propOrder = {"latitude", "longitude"}
)
public class GPSLocator extends Locator implements Serializable {
private static final long serialVersionUID = 1L;
protected double latitude;
protected double longitude;
因此,我将对象设置为 ,但是当它尝试调用 SOAP 服务时,它会出现以下错误:to
GPSLocator
SAXException2:对象 “com.xxx.transit._2008a.location.GPSLocator@6b3cda96”位于 IDREF 属性,但此对象没有 ID
我将 设置为 a,因为当我拦截正在工作的直接 SOAP 调用时,我看到这是设置的。Object
GPSLocator
溶液
对我来说,对象似乎需要一个 ID,但我不明白如何设置它,因为类不是我的(即我无法更改它们)。to
我想如果该类具有以下内容,它将起作用:GPSLocator
@XmlID
@XmlElement
public String getId() {
return id;
}
问题
上面提到的类是由托管 SOAP 服务的第三方生成的类,因此我无法修改这些类。
问题
如何将不属于我的生成类添加到生成的类中?id
更多信息
感谢下面的评论,建议我对类进行子类化并添加 .所以我尝试了以下方法:GPSLocator
id
public class GPSLocator extends com.xxx.transit._2008a.location.GPSLocator {
protected String id = Double.toString(Math.random()*1000);
@XmlID
@XmlElement
public String getId() {
return id;
}
}
但是,即使我使用这个新类,我仍然会收到上面相同的错误。
[com.sun.istack.SAXException2: Object "com.xxx.restosgi.dto.transit.location.GPSLocator@6ea818f2" is found in an IDREF property but this object doesnt have an ID.]
我做错了什么吗?
答: 暂无答案
评论
GPSLocator
@XmlElement
@XmlAttribute
@XmlID
GPSLocator