【问题标题】:Hiding enum element from JAX-WS generated WSDL从 JAX-WS 生成的 WSDL 中隐藏枚举元素
【发布时间】:2011-10-22 15:34:12
【问题描述】:

我有一个像打击这样的枚举类。我正在使用 JAX-WS 生成 WSDL,但我想对客户端隐藏 DELETED 枚举。有没有办法做到这一点?我试过@XmlTransient,但没有用。

@SuppressWarnings("restriction")
@XmlEnum(String.class)
public enum StatusEnum {
    ACTIVE,
    INACTIVE,
    DELETED,
}

【问题讨论】:

    标签: java enums wsdl jax-ws


    【解决方案1】:

    在我看来,如果你出于某些原因想要对客户端隐藏一些枚举条目,那么实际上有两个枚举,它们本质上是不同的——“内部”和“客户端”。您可以在枚举代码中轻松地从另一个权利中生成一个:

    public enum StatusEnum {
      ACTIVE(ClientStatusEnum.ACTIVE),
      INACTIVE(ClientStatusEnum.INACTIVE),
      DELETED(ClientStatusEnum.HIDDEN);
    
      private ClientStatusEnum clientStatusEnum;
    
      StatusEnum(ClientStatusEnum cse) {
        this.clientStatusEnum = cse;
      }
    
      public ClientStatusEnum getClientStatusEnum() {
        return clientStatusEnum;
      } 
    }
    
    @XmlEnum(String.class)
    public enum ClientStatusEnum {
      ACTIVE,
      INACTIVE,
      HIDDEN;
    }
    

    【讨论】:

    • 这是否意味着客户端仍然会看到名为 HIDDEN 的元素?
    • 你也可以返回null
    • 我还是不明白。这是否意味着我可以使用StatusEnum.DELETED 供内部使用,而客户可以使用ClientStatusEnum.HIDDEN?返回null是什么意思?
    猜你喜欢
    • 1970-01-01
    • 2021-10-10
    • 2016-03-05
    • 1970-01-01
    • 2011-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多