Java Web服务代码首先根据需要设置元素

时间:2015-10-01 07:37:50

标签: java web-services jax-ws

我在java中构建代码优先的Web服务并使用maven构建它。 Web服务本身工作正常,但我无法摆脱

  

的minOccurs =" 0"

在我生成的wsdl:

<xs:complexType name="getHOP">
  <xs:sequence>
    <xs:element minOccurs="0" name="getHopRequest" type="getHopRequest"/>
  </xs:sequence>
</xs:complexType>
<xs:element name="getHOPResponse" type="getHOPResponse"/>
<xs:complexType name="getHOPResponse">
  <xs:sequence>
    <xs:element minOccurs="0" name="return" type="getHopResponse"/>
  </xs:sequence>
</xs:complexType>

我的界面看起来像这样

@WebService
public interface GetHop {

GetHopResponse getHOP(
        @WebParam(name = "getHopRequest") GetHopRequest getHopRequest);
}

这是我的请求类

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "getHopRequest", propOrder = { "companyId", "countryIsoCode",
    "currencyIsoCode", "paymentMethodId", "customerId", "totalAmount",
    "cartId", "successUrl", "failureUrl", "notifyUrl" })
public class GetHopRequest {

@XmlElement(required = true)
private String companyId;
@XmlElement(required = true)
private String countryIsoCode;
@XmlElement(required = true)
private String currencyIsoCode;
@XmlElement(required = true)
private String paymentMethodId;
@XmlElement(required = true)
private String customerId;
@XmlElement(required = true)
private String totalAmount;
@XmlElement(required = true)
private String cartId;
@XmlElement(required = true)
private String successUrl;
@XmlElement(required = true)
private String failureUrl;
@XmlElement(required = true)
private String notifyUrl;

// Getter and setter here

}

已经能够按照

的要求设置getHopRequest中的所有元素
  

@XmlElement(required = true)

但我无法弄清楚如何为请求/响应本身做这件事。

谁能告诉我怎么做?

2 个答案:

答案 0 :(得分:0)

尚未经过验证或测试。

您可以在Web方法的Web服务参数上添加@XmlElement并设置required=true,如下所示:

@WebService
public interface GetHop {

GetHopResponse getHOP(
        @WebParam(name = "getHopRequest") @XmlElement(required=true) GetHopRequest getHopRequest);
}

答案 1 :(得分:0)

原始类型而非基本类型可能在编组对象中具有null值。默认情况下,它们不是必需的,minOccurs="0"表示它们可能根本不存在。

如果您需要删除minOccurs="0",则应使用:

@XmlElement(nillable=false, required=true)

之后生成的WSDL将不包含minOccurs,因为minOccurs具有默认值1并且它被忽略。