SEO DIGEST

Une sélection des meilleurs news SEO

Suivez le SEO DIGEST



Validation automatique des données avec html5 et spring3

lundi 16 avril 2012 - 17h57
validation automatique des donnees avec html5 et spring3

J’ai appris il y a longtemps qu’il était toujours nécessaire de contrôler et valider les données saisies par vos utilisateurs, du côté client comme du côté serveur (en HTML/JavaScript et en Java pour ma part), car généralement les erreurs ou les attaques viennent de là.
    Je n’ai jamais apprécié personnellement cette partie du travail car c’est à chaque fois la même chose et à chaque fois on doit tout refaire à la main …

Validation côté client (HTML5)

Avec HTML5 la validation de surface se fait déjà plus aisément, les nombreux « type » paramétrable dans nos champs de saisie limitent considérablement la saisie au mauvais format, exemple : , , , … (liste complète ici avec support des différents navigateurs).

Ensuite de nouveaux attributs ont vu le jour comme required, min, max, list … qui nous évitent de devoir contrôler que le champ est bien saisi, qu’il est compris dans un intervalle donné ou bien qu’il fait partie d’une liste prédéfinie de valeurs.

Dans mon nouveau projet j’utilise HTML5 comme validateur client de surface plutôt que JavaScript.

Les données envoyées au serveur sont au format JSON, la transformation de mon formulaire en objet JSON est faite avec form2js et l’envoi se fait avec jQuery de la façon suivante :

$("form").submit(function(event) {  var action = $(this).attr('action');    var formAsObject = $(this).toObject(); // form2js       $.ajax({                url: action,            type: "post",           data: formAsObject,             dataType: 'json',               success: function(jsonFromServer) {                     // callback du serveur          }       });     return false;});

A retenir : il faut utiliser la méthode « submit » de jQuery sur le formulaire plutôt que la méthode « on » ou « bind » sur le bouton submit car sinon la validation des données en HTML5 ne se fera pas.

Validation côté serveur (Spring3)

C’est là que Spring3 entre en jeu ainsi que ses nombreuses annotations qui nous facilitent la tâche, dans notre cas je parle de @ModelAttribute et @Validated.

@RequestMapping(value="/login", method=RequestMethod.
    POST)@ResponseBodypublic UserModel login(@Validated({ UserLoginGroup.class }) @ModelAttribute UserModel user, BindingResult result, HttpServletRequest request, HttpServletResponse response) { // validation de surface faite avec @annotations if (result.hasErrors()) { // des erreurs de validation } else { // aucune erreur de validation en surface }}

La première (@ModelAttribute) permet de transformer automatiquement l’objet json envoyé par notre requête Ajax en objet Java : chaque attribut de l’objet json ayant le même nom (case sensitive) qu’un attribut de l’objet Java sera récupéré automatiquement.

La seconde (@Validated) indique que l’objet annoté doit être validé, la validation est écrite uniquement via des annotations, il en va de même pour les messages d’erreur à retourner.
    J’utilise les annotations de Hibernate Validator qui offrent un plus grand choix, allant de @Email à @NotBlank en passant par @Future pour valider que la date saisie est dans le futur.

Malheureusement il n’existe encore aucun moyen nativement de comparer deux attributs de l’objet à valider, par exemple « email » et « emailConfirm » ou encore « password » et « passwordConfirm », la communauté s’en est chargé en créant une annotation maison « FieldMatch » que j’utilise et qui marche à merveille, voici le lien vers cette annotation.

Vous l’avez compris, avec Spring3 la validation côté serveur est rendue très simple, voici un copier coller d’un objet que je valide automatiquement avec cette méthode :

@FieldMatch.
    List({ @FieldMatch(first = "password", second = "passwordConfirm", message = "Votre confirmation de mot de passe est invalide", groups = { UserRegisterGroup.class }), @FieldMatch(first = "email", second = "emailConfirm", message = "Votre confirmation d'email est invalide", groups = { UserRegisterGroup.class })})public class UserModel implements Serializable { private static final long serialVersionUID = -6014837207296264624L; @NotBlank(message = "Votre email est obligatoire", groups = { UserLoginGroup.class, UserRegisterGroup.class, UserLostPasswordGroup.class }) @Email(message = "Votre email a un format incorrect", groups = { UserLoginGroup.class, UserRegisterGroup.class, UserLostPasswordGroup.class }) @Length(min=3, max=100, message = "Votre email doit faire entre 3 et 100 caractères", groups = { UserLoginGroup.class, UserRegisterGroup.class, UserLostPasswordGroup.class }) private String email; // FieldMatch suffit pour les contrôles private String emailConfirm; @NotBlank(message = "Votre mot de passe est obligatoire", groups = { UserLoginGroup.class, UserRegisterGroup.class }) @Length(min=6, max=100, message = "Votre mot de passe doit faire entre 6 et 100 caractères", groups = { UserLoginGroup.class, UserRegisterGroup.class }) private String password; // FieldMatch suffit pour les contrôles private String passwordConfirm;



Suite et source de l'article indisponible
http://feedproxy.google.com/~r/DesGeeksEtDesLettres/~3/j17Ogr2AyIE/validation-automatique-des-donnees-saisies-avec-html5-et-spring3


News précédentes



Lundi 16 avril 2012

Ahrefs, pour explorer les sites en profondeur
La construction d’un tissage de liens menant vers son site peut rapidement mener dans une impasse au bout d’un moment. En effet, si l’on suit toujours le même schéma de construction de ses backlinks, on peut facilement passer à côté …
logicielseo.fr • 16h57

E-business > facebook et apple menacent la liberté d'internet selon sergey brin
L'un des co-fondateurs de Google a déclaré au Guardian que les principes d'universalité et d'ouverture caractéristiques des débuts d'Internet étaient mis en péril par le cloisonnement imposé par Facebook et Apple. Actualité
journaldunet.com • 15h29

Comment équilibrer des intérêts conflictuels ? “message d'un éditeur adsense”
Note de Google : Nous souhaitons aujourd'hui partager avec vous quelques conseils de l'éditeur AdSense Dave Taylor, auteur et propriétaire du site Web askdavetaylor.com. Dave Taylor exerce une activité en ligne depuis plus de 30 ans, et pendant toutes ces années, il s'est investi dans la création de contenus…
blogspot.fr • 14h50

Un truc de noobs ! “l’optimisation onsite site”
Vous le savez, j’en parle régulièrement sur ce blog, un de mes contacts cherche à organiser une conférence / formation virtuelle SEO en France.  Il faut bien comprendre que le gars, il galère mais pour le moment il ne lache pas le morceau. Au contraire même, pitbull du SEO il sait qu’il a chopé un …
gasymagnifik.com • 14h45

"En référencement naturel, certains backlinks peuvent être toxiques"…
Faut-il toujours croire Google en matière de référencement ? Comment interpréter ses dernières…
journaldunet.com • 14h41

La publicité et le marketing au secours des sans-abris
A l'occasion de la nouvelle campagne d'Ogilvy, voici un petit récap de quelques campagnes marquantes :…
wondercom.info • 13h54

Google condamné à 25 000 dollars pour entrave à la justice “e-business >…
Le géant du web est accusé d'avoir retardé la remise de documents relatifs aux données collectées…
journaldunet.com • 13h52

Google et bing dans les années 80
Vous connaissez les Bulletin Board System ? Cet ancêtre du web ressort des placards à l'occasion de…
######## • 13h30

Apple et facebook menacent internet selon s. brin
Sergey Brin, nous rapporte ZDnet, a déclaré dans le journal anglais The Guardian que le réseau Internet…
moteurzine.com • 13h29

Site de vente de vêtement pour enfant
Il arrive que l’on trouve des sites Internet de ce type qui n’ont pas un design adapté ou ne sont pas…
madrileno.fr • 12h31






gauche
Sous menu









Consultez le classement des sites par qualité

Explication simple et courte du Quality rank

Ajoutez un site dans le classement

Modifier la fiche d'information d'un site




Logiciel de référencement 100 % gratuit,
suivez et optimisez la position de vos mots clefs sous Google



Calculez la moyenne du pagerank d'un site

Recherchez le Quality Rank d'un site

Recherchez le pagerank sur plus de 40 serveurs de Google









cookies   Ce site utilise des cookies, plus d'informations   OK - ne plus afficher