как проверить ненулевые элементы, используя с schemaValidation в JAX-WS / JAXB - PullRequest
5 голосов
/ 03 августа 2011

Я реализую первые в Java веб-службы, используя JAX-WS, и пытаюсь использовать @SchemaValidation для проверки необходимых элементов, которые есть в моих параметрах webMethod.вот как я объявляю свой обязательный атрибут:

@XmlElement(required=true) отображает мою схему wsdl идеально (minOccur больше не 0), но schemaValidation не проверяет переданные нулевые элементы.

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

Любой клиент, использующий мой API, может передавать нулевые элементы.У меня нет способа предотвратить это с помощью JAXB.

С другой стороны, проверка бинов работает следующим образом.Однако не для строковых полей

@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

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

связанных сообщений;

Проверка для сгенерированных классов JAXB (JSR 303 / Spring)

Как включить проверку схемы, чтобы JAXB отклонял пустой элемент?

1 Ответ

0 голосов
/ 11 октября 2013

Видимо, вы можете сделать это, используя JAXB, как сказано здесь . Или, может быть, использовать платформу проверки схемы, как описано здесь . Но, IMHO, оба подхода добавляют слишком много беспорядка к коду, поэтому я бы пошел на Предварительные условия Guava , что дает вам быстрый и чистый способ сделать это. Жаль, что нет автоматической поддержки для этого = /.

...