2009-03-25 4 views
0

J'ai un objet que j'ai besoin de valider. Cet objet a des propriétés qui ne peuvent pas être nulles, des chaînes qui ne peuvent pas dépasser une taille donnée et des chaînes de dates dont j'ai besoin de vérifier l'exactitude du format.Validation d'objet

Comment effectueriez-vous cette validation. Je ne veux pas aller au-dessus de tout l'objet, je cherche quelque chose de plus dynamique

EDIT:

Cet objet sera utilisé dans l'entrée de webservices de sorte que toute validation setter sera inutile aussi je ne sais pas comment le système se comportera avec la dépendance ajoutée de tout système à base d'annotation

Im la recherche d'une solution personnalisée (oui je sais réinventer la roue)

Répondre

1

Il semble que vous souhaitiez que l'objet soit validé du côté serveur d'un service Web. Si oui, la réponse que je suggère pourrait s'appliquer à votre situation.

Comme vous l'avez sans doute déjà vu, il existe plusieurs façons de valider les champs d'un objet. Mais vous savez ce qui doit être fait: vérifiez chaque champ pour voir si sa valeur est valide. Il n'y a pas de magie ici: il suffit de vérifier les champs. Si vous souhaitez conserver votre code de validation au même endroit, vous pouvez créer un schéma xml contenant votre logique de validation, générer votre classe à partir de celle-ci et valider les objets que vous récupérez en utilisant le schéma comme référence. Cela facilite la maintenance de votre code de validation et de votre classe: il vous suffit de mettre à jour le schéma et de générer de nouveau la classe. (Je ne garderais même pas la classe dans le contrôle de la source, mais je la générerais avant de compiler votre code.Cela garantit que votre classe est toujours synchronisée avec votre schéma.) Je suis sûr qu'il existe des bibliothèques pour Java (JAXB, peut-être?), Mais je n'ai pas travaillé avec Java depuis des années. C'est un très chose commune à faire dans de nombreuses langues.

1

Sans le scénario exact, je peux vous recommandons d'utiliser les méthodes de réglage de l'objet (vous fait rendre les champs privés pas vrai?) pour valider chaque modification des valeurs. les poseurs de chaîne peuvent appeler le code-validation de la longueur, les faiseurs de date peuvent appeler le code de format validant, etc.

Hope this helps,

Yuval = 8)

+0

Cela doit être un POJO pas de logique à l'intérieur. Merci pour l'aide –

+0

POJO ne veut pas dire aucune logique à l'intérieur. – CoverosGene

+0

@NunFur: heureux d'être de service. Peut-être que vous vouliez dire «haricot»? = 8-) – Yuval

1

Vérifier Hibernate Validator.

+0

thx pour le lien, im essayant d'éviter l'annotation, une solution serait d'utiliser oVal mais je cherchais une solution personnalisée. Je ne cherche pas de frameworks spécifiques mais des solutions, des algorithmes –

+0

pourquoi éviter les annotations? – trunkc

+0

Cet objet sera utilisé dans les services web, je ne sais pas comment il se comporterait avec des dépendances supplémentaires. De toute façon, comme je l'ai dit ci-dessus, je cherchais une solution personnalisée. (oui je sais réinventer la roue) = D –

0

vous suggère de faire votre validation avant de définir les propriétés de l'objet. Par exemple, si vous avez une propriété int que vous êtes en train d'analyser à partir d'une chaîne, vous devrez vérifier la valeur de la chaîne vide, vide, est un nombre, etc., avant même de le définir. Sinon, vous rencontrerez des problèmes de type de toute façon. Et, si vous souhaitez afficher la valeur erronée à un utilisateur, vous devez conserver la chaîne d'origine.

S'il s'agit d'une application Web, il existe de nombreux frameworks qui feront cette partie pour vous, puis initialiseront votre objet avec les valeurs déjà validées et sécurisées. Struts ou Spring-MVC viennent à l'esprit, mais je ne suis pas un développeur web. Ils utilisent une sorte de configuration XML qui décrit votre objet et la validation associée, que vous pouvez également étendre. Si ce n'est pas une chose web alors ils pourraient gêner légèrement car ils voudront gérer les erreurs et afficher les pages d'erreur directement à vos utilisateurs.

Pour quelque chose d'un peu plus bas, essayez Apache Commons Validator.

1

La validation de base pour webservice est gérée au niveau WSDL/XSD.