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 2 Java Discussion :

Saisie de date et validation


Sujet :

Struts 2 Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Février 2007
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 52
    Par défaut Saisie de date et validation
    Bonjour,

    je cherche à faire entrer une date par l'utilisateur dans ma jsp dans un textfield

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <label for="dateDemande">Date de la demande:</label>
    <input type="text" id="dateDemande" name="rechercheDemande.dateDemande" />
    Je souhaite ensuite valider cette date dans mon fichier DemandeAction-validation.xml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    	<field name="rechercheDemande.dateDemande">
    		<field-validator type="date">
    			<param name="min">01/01/1990</param> 
            	<param name="max">01/01/2010</param>
            	<message>Mauvaise date</message>
    		</field-validator>
    </field>
    mais n'y arrive pas. Si l'utilisateur entre "toto" dans le textfield ça plante avec l'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Unexpected Exception caught setting 'rechercheDemande.dateDemande' on 
    'class DemandeAction: Error setting 
    expression 'rechercheDemande.dateDemande' 
    with value '[Ljava.lang.String;@a6dbf3'
    J'ai trouvé sur ce forum dans la section struts1 la solution
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <var><var-name>datePatternStrict</var-name><var-value>dd/MM/yyyy</var-value></var>
    mais cette solution ne marche pas avec Struts2, la dtd de validation.xml ne reconnaît pas <var>.

    Savez-vous comment faire ?

    Autre question : j'ai vu la balise struts2 datepicker mais je ne peux pas utiliser Ajax, peut-on utiliser cette balise sans Ajax ? Si oui comment ?

    Merci d'avance pour vos réponses.

    Marc

  2. #2
    Membre averti
    Inscrit en
    Septembre 2006
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 60
    Par défaut
    Citation Envoyé par Cram_N7 Voir le message
    Bonjour,

    je cherche à faire entrer une date par l'utilisateur dans ma jsp dans un textfield

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <label for="dateDemande">Date de la demande:</label>
    <input type="text" id="dateDemande" name="rechercheDemande.dateDemande" />
    Je souhaite ensuite valider cette date dans mon fichier DemandeAction-validation.xml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    	<field name="rechercheDemande.dateDemande">
    		<field-validator type="date">
    			<param name="min">01/01/1990</param> 
            	<param name="max">01/01/2010</param>
            	<message>Mauvaise date</message>
    		</field-validator>
    </field>
    mais n'y arrive pas. Si l'utilisateur entre "toto" dans le textfield ça plante avec l'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Unexpected Exception caught setting 'rechercheDemande.dateDemande' on 
    'class DemandeAction: Error setting 
    expression 'rechercheDemande.dateDemande' 
    with value '[Ljava.lang.String;@a6dbf3'
    J'ai trouvé sur ce forum dans la section struts1 la solution
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <var><var-name>datePatternStrict</var-name><var-value>dd/MM/yyyy</var-value></var>
    mais cette solution ne marche pas avec Struts2, la dtd de validation.xml ne reconnaît pas <var>.

    Savez-vous comment faire ?

    Autre question : j'ai vu la balise struts2 datepicker mais je ne peux pas utiliser Ajax, peut-on utiliser cette balise sans Ajax ? Si oui comment ?

    Merci d'avance pour vos réponses.

    Marc
    Tu vois l'exception dans les logs seulement ou est-ce ca fait planté ton application aussi ?

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 716
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 716
    Par défaut
    Bonsoir

    j'ai teste ceci qui fonctionne

    <%@ page language="java" %>
    <%@ taglib prefix="s" uri="/struts-tags" %>
    <%@ taglib prefix="sx" uri="/struts-dojo-tags" %>



    <html>
    <head>
    <sx:head/>
    </head>

    <body>
    <sx:datetimepicker name="employe.joiningdate" label="Format (yyyy-MM-dd)" displayFormat="yyyy-MM-dd"/>

  4. #4
    Membre averti
    Inscrit en
    Février 2007
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 52
    Par défaut
    Bonjour et merci pour vos réponses.

    @jreeman :
    Je vois cette exception dans les logs uniquement. L'application ne plante pas, mais la validation n'est pas faite et on est redirigé vers la page "success" et non vers "input". Le champ rechercheDemande.dateDemande est vide.
    En revanche la validation marche si on entre une date correcte, en dehors de la fourchette min/max.

    @pcouas :
    Oui j'avais vu ce tag déjà mais il est dans la librairie "Ajax Tags" de Struts et je ne peux pas utiliser Ajax pour mon application, malheureusement

  5. #5
    Membre averti
    Inscrit en
    Septembre 2006
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 60
    Par défaut
    Citation Envoyé par Cram_N7 Voir le message
    Bonjour et merci pour vos réponses.

    @jreeman :
    Je vois cette exception dans les logs uniquement. L'application ne plante pas, mais la validation n'est pas faite et on est redirigé vers la page "success" et non vers "input". Le champ rechercheDemande.dateDemande est vide.
    En revanche la validation marche si on entre une date correcte, en dehors de la fourchette min/max.
    C'est bien ce que je pensais, si ton format de date n'est pas correct alors STRUTS va essayer d'apeller la méthode get ayant un string pour paramétre (au lieu de date) dans la signature de la méthode et comme cette méthode n'existe pas, quelque part dans le code spaggethi de struts, struts log cette exception dans les traces.

    Pourquoi fait-il cela ? Je dirais que de manière général STRUTS essaye d'être intelligent, alors il fait un peu tout ce pour quoi on pourrait lui demander d'être intelligent. Pour moi c'est clairement pas comme cela que je conçois un framework, à force d'être prévu pour faire tout et n'importe quoi, rien n'est plus simple et propre.

    Rien à voir, mais il y a aussi un bug sur les locales, struts ne convertit pas correctement ta string en date en fonction de la locale de la requete cliente http://jira.opensymphony.com/browse/XW-670 (6 mois pour corriger un pauvre bug, ca cache quand même que le code ne doit pas être simple...).

    Tu dis que la validation marche pour la fourchette mais pas pour le format de la date ? Bizarre jamais rencontré ce problème. Mais moi je fais les validations dans les validate, j'ai passé l'age de ces .... d'ailleurs je pense que tu n'arriveras jamais à gérer correctement les dates dans struts dans la version actuelle. Je te laisse regardé ce post : http://www.developpez.net/forums/d77...-correctement/

  6. #6
    Membre averti
    Inscrit en
    Février 2007
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 52
    Par défaut
    en effet jreeman j'ai finalement opté pour le validate de cette manière, le champ du formulaire s'appelle maintenant dateFormulaire et écrit dans une String de l'action, qui essaye ensuite d'en faire une date :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    public void validateResultatRechercheDemande() {
    	if (((dateFormulaire)!=null)&&(!"".equals(dateFormulaire))){
    		SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
    		try {
    			Date date = sdf.parse(dateFormulaire);
    			rechercheDemande.setDateDemande(date);
    		}
    		catch (ParseException pe) {
    			addActionError("Veuillez entrer une date au bon format");
    		}
    	}
    }
    Je suis aussi déçu que le xml ne puisse pas (à ma connaissance) gérer cela.

    Merci pour ton aide, je mets un TAG résolu même si je reste sur ma faim

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

Discussions similaires

  1. validation saisie de date en fonction de la locale
    Par Watier_53 dans le forum Struts 1
    Réponses: 34
    Dernier message: 23/10/2008, 15h32
  2. [Composant] Composant de saisie de date
    Par seb_asm dans le forum Composants
    Réponses: 6
    Dernier message: 03/10/2005, 14h36
  3. Saisie des dates
    Par J-P-B dans le forum XMLRAD
    Réponses: 5
    Dernier message: 04/07/2003, 11h08
  4. Réponses: 3
    Dernier message: 19/03/2003, 15h19
  5. tester si une date est valide
    Par Andry dans le forum Langage
    Réponses: 5
    Dernier message: 17/09/2002, 11h54

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