2011-08-03 42 views
5

我正在使用JAX-WS實現使用JAX-WS的java-first Web服務,並嘗試使用@SchemaValidation驗證webMethod參數中的必需元素。 這裏是我如何聲明我的必需屬性;如何在JAX-WS/JAXB中使用schemaValidation驗證非空元素

@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的第一個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?

回答

0

顯然,你可以像說here使用JAXB做到這一點。或者可以使用here所述的模式驗證框架。但是,恕我直言,這兩種方法都會給代碼添加太多混亂,所以我會選擇Guava's Preconditions,這會讓您快速而乾淨地完成此操作。太糟糕了,沒有自動支持這個= /。

相關問題