字符串的JAX-WS nillable模式验证似乎不起作用

时间:2013-03-13 10:31:36

标签: java-ee jaxb jax-ws cxf wsdl2java

我有apache CXF wsdl2java工具生成的java代码。我通过设置:

打开模式验证
<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>

它通过验证,并且映射为空字符串。我不想要空字符串。我希望那些请求不要通过验证。 JAX-WS是否提供这种验证?如果是 - 那么如何打开它?如果不是 - 编写我自己的代码以拒绝这些请求的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

唯一的方法是定义类似于:

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

将其标记为字符串中至少需要1个字符。