2011-10-22 49 views
1

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

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

回答

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; 
} 
+0

这是否意味着客户端仍然会看到名为HIDDEN的元素? – Shichao

+0

你也可以返回'null' – Osw

+0

我还是不明白。这是否意味着我可以使用'StatusEnum.DELETED'作为内部使用,并且客户端可以使用'ClientStatusEnum.HIDDEN'?你是什​​么意思返回'null'? – Shichao