J'ai créé un service Web Jax-WS, en utilisant Jaxb Annotations sur certains champs de demande pour les rendre obligatoires.
<xs:element name="number" type="xs:string"/>
3 Réponses :
Je propose deux solutions de contournement à votre problème, si vous ne pouvez pas le résoudre:
Je pense que vous pouvez ajouter un rappel JAXB Afterunmarshal () dans votre haricot de demande Java ( Comme décrit ici ) et effectuez toute la validation que vous souhaitez. Validation, ou autres). P>
Par exemple: P>
@XmlRootElement public class YourRequest { @XmlElement(required = true) protected String number; // some code here public void afterUnmarshal(Unmarshaller unmarshaller, Object parent) { if(number == null) { // Throw validation exception } } }
La valeur par défaut pour minocurs est 1. Ainsi, votre valeur doit exister. et, enfin, vous avez un schéma résultant. P> mais , la mise en œuvre de référence JAXB ne vaut aucune validation pour vous. P> Vous devez le faire par vous-même, en utilisant le API de validation Java XML P> Voici un exemple simple de validation de schéma p>
La valeur par défaut pour Nillable est fausse. Donc, votre valeur ne peut pas être vide.
Et vous avez activé la validation du schéma dans votre service Web:
Utilisez un outil tel que Jaxb2-Maven-Plugin pour générer la classe JAXB. et validez avant d'envoyer la charge utile sur Webservice ou avant d'accepter la charge utile dans votre système à l'aide de la spécification JSR 303. Cliquez ici pour voir le validateur JSR 303. P>
Cela rendra votre système robuste. P>
Je viens d'ajouter l'annotation @schemavalidation sur mon WS et il a commencé à travailler:
CVC-Complex-Type.2.4.a: Le contenu non valide a été trouvé à partir de l'élément "Email". Un de '{pwd}' est attendu code>