2013-03-13 36 views
0

我有通過apache CXF wsdl2java工具生成的java代碼。我打開架構驗證設置:JAX-WS對字符串的nillable模式驗證似乎不起作用

<jaxws:properties> 
    <entry key="schema-validation-enabled" value="true" /> 
</jaxws:properties> 

在.wsdl文件我具備這些元素的種類:

<s:element minOccurs="1" maxOccurs="1" nillable="false" name="propertyName" type="s:string"/> 

他們mappnig上:

@XmlElement(name = "ServiceSeq", required = true, nillable = false) 
protected String propertyName; 

但是,當我送XML包含:

<abc:propertyName></abc:propertyName> 

It pas驗證,並映射爲空字符串。我不想要空串。我希望這些請求不要通過驗證。 JAX-WS是否提供了這種驗證?如果是 - 那麼如何打開它?如果沒有 - 編寫我自己的代碼將拒絕這些請求的最佳方式是什麼?

回答

1

的唯一方法是定義類似元件:

<element minOccurs="1" maxOccurs="1" nillable="false" name="propertyName"> 
    <simpleType> 
     <restriction base="string"> 
     <minLength value="1"/> 
     </restriction> 
    </simpleType> 
</element> 

將其標記爲需要在字符串中的至少1個字符。