【发布时间】:2011-10-19 07:04:47
【问题描述】:
我正在使用 JAX-WS 实现 Java 优先 Web 服务,并尝试使用 @SchemaValidation 来验证我的 webMethod 参数中的必需元素。
这是我声明所需属性的方式;
@XmlElement(required=true) 完美地映射了我的 wsdl 模式(minOccur 不再为 0),但 schemaValidation 没有验证传递的 null 元素。
@XmlElement(required=true, nillable=false)
public String getClubName() {
return clubName;
}
任何使用我的 API 的客户端都可以传递空元素。我没有办法使用 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?
【问题讨论】: