如何通过 jax-rs 公开 Java 接口类型

发布于 2024-12-25 16:41:16 字数 545 浏览 1 评论 0 原文

我正在使用 jax-rs 的 Jersey 实现。我有一个由 REST 资源返回的域对象。它看起来像这样:

@XmlRootElement
@JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL)
@Data
public class SomeObject implements Serializable {

private static final long serialVersionUID = -3711391025272861884L;

private IInterface config;

@XmlElement
public IInterface getConfig() {
    return config;
}
}

其中 IInterface 是 Java 接口类型。

Jax-ws 说出了炸弹,说道: SomeObject 的访问器为 null:接口类型不能是 xml 类型。 -> [帮助1]

我用谷歌搜索了一下,还没弄清楚如何做到这一点。我如何告诉 Jax-ws 如何处理这个接口?

I am using the Jersey implementation of jax-rs. I have a domain object that gets returned by a REST resource. It looks like this:

@XmlRootElement
@JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL)
@Data
public class SomeObject implements Serializable {

private static final long serialVersionUID = -3711391025272861884L;

private IInterface config;

@XmlElement
public IInterface getConfig() {
    return config;
}
}

Where IInterface is a Java interface type.

Jax-ws says bombs out, saying:
Accessor null of SomeObject: An interface type cannot be an xml type. -> [Help 1]

I've googled around and haven't figured out how to do this. How can I tell Jax-ws how to deal with this interface?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

过气美图社 2025-01-01 16:41:17

您可以使用 @XmlElement 注释来映射接口类型的字段/属性来指定具体的 impl 类型:

@XmlRootElement
@JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL)
@Data
public class SomeObject implements Serializable {

    private static final long serialVersionUID = -3711391025272861884L;

    private IInterface config;

    @XmlElement(type=IInterfaceImpl.class)
    public IInterface getConfig() {
        return config;
    }
}

了解更多信息

You can map fields/properties that are of an interface type by using the @XmlElement annotation to specify a concrete impl type:

@XmlRootElement
@JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL)
@Data
public class SomeObject implements Serializable {

    private static final long serialVersionUID = -3711391025272861884L;

    private IInterface config;

    @XmlElement(type=IInterfaceImpl.class)
    public IInterface getConfig() {
        return config;
    }
}

For More Information

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文