IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Struts 1 Java Discussion :

Struts Validation avec plusieurs date pattern, HowTo ? [FAQ]


Sujet :

Struts 1 Java

  1. #1
    Membre du Club

    Profil pro
    Inscrit en
    Mars 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 13
    Points : 43
    Points
    43
    Par défaut Struts Validation avec plusieurs date pattern, HowTo ?
    Bonjour,

    J'ai fait un formulaire avec un champs date. La date devait avoir le format dd/MM/yyyy .
    J'ai mis en place dans validation.xml le controle de surface pour valider que la date saisie ait bien le bon format.

    Or, aujourd'hui, on me demande que pour la saisie de la date, deux pattern soit acceptés:
    - dd/MM/yyyy
    - ddMMyyyy

    J'aimerais savoir si le struts validator permet ce genre de controle ou si il faut redéfinir une fonction javascript complète.

    Ou éventuellement, avez vous une autre solution ?

    Merci

    Did

  2. #2
    zl
    zl est déconnecté
    Membre régulier
    Inscrit en
    Août 2005
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 75
    Points : 90
    Points
    90
    Par défaut
    La solution la plus adaptée pour les champs de type dates est de proposer une façon unique de choisir les dates. Le plus souvent, c'est composant JavaScript qui est exposé aux utilistaeurs pour leurs demander de choisir une date.

    Regardes donc du côté des composants JavaScript ( Calendar components).

    Zl.

  3. #3
    Membre éprouvé
    Avatar de yolepro
    Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2002
    Messages
    918
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Mai 2002
    Messages : 918
    Points : 1 144
    Points
    1 144
    Par défaut
    Je pense que c'est faisable en uilisant le validation.xml

    Maintenant comment ? il faut juste regarder ici : http://www.torsten-horn.de/techdocs/jsp-struts-dynaval.htm#validation.xml (c'est un exemple).

    Une petite expression réguliere et le tour est joué.

  4. #4
    Membre du Club

    Profil pro
    Inscrit en
    Mars 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 13
    Points : 43
    Points
    43
    Par défaut
    Citation Envoyé par zl
    La solution la plus adaptée pour les champs de type dates est de proposer une façon unique de choisir les dates. Le plus souvent, c'est composant JavaScript qui est exposé aux utilistaeurs pour leurs demander de choisir une date.

    Regardes donc du côté des composants JavaScript ( Calendar components).

    Zl.

    c'est que les users demandent de pouvoir saisir la date sous les deux formats. Donc c'est assez pénible.
    La solution que j'ai mise en place : l'utilisation d'une fonction javascript externe.

    Voici mon code si ca peut servir à d'autres.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
     
     
    function verif_date(input)
    {
    	var regex = new RegExp("[/-]");
    	var date = input.split(regex);
    	var nbJours = new Array('',31,28,31,30,31,30,31,31,30,31,30,31);
    	var result = true;
     
    	if ( date['2']%4 == 0 && date['2']%100 > 0 || date['2']%400 == 0 )
    	nbJours['2'] = 29;
     
    	if( isNaN(date['2']) )
    		result=false;
     
    	if ( isNaN(date['1']) || date['1'] > 12 || date['1'] < 1 )
    		result=false;
     
    	if ( isNaN(date['0']) || date['0'] > nbJours[Math.round(date['1'])] || date['0'] < 1 )
    		result=false;
     
    	return result;
    }
     
     
    function validateDateFormat(form) {
     
    	var isValid = true;
    	var dateToValid = form.dateNaissance.value; 	
     
    	// Cas où la date n'est oas saisie (longueur = 0)
    	if (dateToValid.length == 0)
    	{
    		isValid = true;
    	}
    	// Cas où la date saisie fait 8 caractères
    	else if (dateToValid.length == 8)
    	{
    		dateTemp = dateToValid;
    		dateToValid = dateTemp.substring(0,2) + "/" + dateTemp.substring(2,4) + "/"  + dateTemp.substring(4,8);
     
    		isValid = verif_date(dateToValid);
    		if (isValid) form.dateNaissance.value = dateToValid;
    	}
    	// Cas où la date saisie fait 10 caractères
    	else if (dateToValid.length == 10)
    	{
    		isValid = verif_date(dateToValid);
    	}
    	// Cas où la date est non vide, ne fait ni 8, ni 10 caractères
    	else {
    		isValid = false;
    		alert("La date doit etre de la forme ddMMyyyy ou dd/MM/yyyy");
    	}
    	return isValid;
    }
    et dans la jsp, j'appelle en premier lieu le controle sur la date, puis le validateForm() généré par le struts validator.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <html:form action="/recherchePersonne" onsubmit="return validateDateFormat(this); return validateRecherchePersonneForm(this);}">

    Seul bug restant :
    ca passe pas sous IE mais sous FireFox !!!!!

  5. #5
    Membre du Club

    Profil pro
    Inscrit en
    Mars 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 13
    Points : 43
    Points
    43
    Par défaut
    Citation Envoyé par yolepro
    Je pense que c'est faisable en uilisant le validation.xml

    Maintenant comment ? il faut juste regarder ici : http://www.torsten-horn.de/techdocs/jsp-struts-dynaval.htm#validation.xml (c'est un exemple).

    Une petite expression réguliere et le tour est joué.

    Il me semble que la regExp etant liée à un controle par mask, il n'est pas "possible" de controler que la date est cohérente.

  6. #6
    Membre éprouvé
    Avatar de yolepro
    Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2002
    Messages
    918
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Mai 2002
    Messages : 918
    Points : 1 144
    Points
    1 144
    Par défaut
    oui effectivement, je parlais de validation syntaxique et non pas de coherence de date.

    Maintenant tu peux trouver ca facilement sur le net pour la partie javascript :

    http://www.smartwebby.com/DHTML/date_validation.asp#explanation

  7. #7
    Membre éprouvé
    Avatar de yolepro
    Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2002
    Messages
    918
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Mai 2002
    Messages : 918
    Points : 1 144
    Points
    1 144
    Par défaut
    Pour faire propre tu peux aussi utiliser le validator-rules.xml qui gere les Date

    exemple : http://www.onjava.com/pub/a/onjava/2002/12/11/jakartastruts.html?page=3

    Il faut juste définir une classe de validation et faire ta validation en Java

  8. #8
    Membre du Club

    Profil pro
    Inscrit en
    Mars 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 13
    Points : 43
    Points
    43
    Par défaut
    Citation Envoyé par yolepro
    Pour faire propre tu peux aussi utiliser le validator-rules.xml qui gere les Date

    exemple : http://www.onjava.com/pub/a/onjava/2002/12/11/jakartastruts.html?page=3

    Il faut juste définir une classe de validation et faire ta validation en Java
    Yes.

  9. #9
    Membre éprouvé
    Avatar de yolepro
    Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2002
    Messages
    918
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Mai 2002
    Messages : 918
    Points : 1 144
    Points
    1 144
    Par défaut
    n'oublie pas le tag résolu en bas de page.

    Merci.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [1.x] [sfForm] [sfValidator] Validator avec plusieurs valeurs
    Par coupolites dans le forum Symfony
    Réponses: 4
    Dernier message: 03/11/2010, 08h56
  2. [BO 5.1.9] Rafraîchir requête avec plusieurs dates
    Par michaelknight00 dans le forum Deski
    Réponses: 8
    Dernier message: 28/11/2008, 10h43
  3. Struts form avec plusieurs submit
    Par micanti dans le forum Struts 1
    Réponses: 3
    Dernier message: 29/05/2006, 21h23
  4. Réponses: 4
    Dernier message: 19/05/2006, 23h14
  5. Réponses: 3
    Dernier message: 02/12/2004, 08h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo