如何在JAX-WS / JAXB中使用schemaValidation验证非null元素

时间:2011-08-03 16:47:11

标签: jaxb jax-ws

我正在使用JAX-WS实现java-first Web服务,并尝试使用@SchemaValidation来验证webMethod参数中所需的元素。 这是我如何声明我的必需属性;

@XmlElement(required=true)完美映射我的wsdl模式(minOccur不再为0),但schemaValidation未验证传递的null元素。

@XmlElement(required=true, nillable=false)
public String getClubName() {
    return clubName;
}

任何使用我的API的客户端都可以传递null元素。我无法使用JAXB来阻止这种情况。

另一方面,bean验证工作如下。但不适用于字符串字段

@Column(name = "FOUNDATION_YEAR", nullable = false) 
private Integer foundationYear;   //schemaValidation validates

@Column(name = "CLUB_NAME", length=100, nullable = false)
private String clubName;    //schemaValidation does not validate

如何使用schemaValidation来验证字符串值?一种方法是设置限制,但在使用java-first Web服务时不能这样做

<xsd:simpleType name="NotEmptyString">
  <xsd:restriction base="xsd:string">
    <xsd:minLength  value="1"/>
  </xsd:restriction>
</xsd:simpleType>

相关帖子;

Validation for generated JAXB Classes (JSR 303 / Spring)

How to enable schema validation so that JAXB rejects empty element?

1 个答案:

答案 0 :(得分:0)

显然你可以像使用J here一样使用JAXB。或者可以使用描述here的模式验证框架。但是,恕我直言,这两种方法都会给代码增加太多的混乱,所以我会选择Guava's Preconditions,这样就可以快速而干净地实现这一目标。太糟糕了,没有自动支持这个= /。