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] Interêt de typer les données d'un formulaire ?


Sujet :

Struts 1 Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 50
    Points : 36
    Points
    36
    Par défaut [Struts] Interêt de typer les données d'un formulaire ?
    Bonjour,

    J'ai une question qui me dérange concernant la définition du type des données dans mon struts-config.xml.

    J'ai un html:text 'montant' dans lequel je veux saisir un montant.
    Ce montant doit donc être un décimal entier ou non.

    Dans mon formulaire, j'ai défini le type de montant à Double :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      <form-property name="montant" type="java.lang.Double" />
    Mon souci : si je mets des caractères dans ce champ et que je valide le formulaire, mon formulaire me renvoit un double avec la valeur : 0.0
    Je ne peux donc pas tester si le type du formulaire a été bien respecté ou non.



    Par contre, si je défini le type du champ 'montant' à String dans le struts-config.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <form-property name="montant" type="java.lang.String" />
    je peux alors tester si le type est bon ou non dans la méthode validate() de mon formulaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    BigDecimal montant = null;
    try{
      taux = new BigDecimal((String) this.get("taux"));
    }
    catch(NumberFormatException e){
      erreurs.add("taux", new ActionError("gestionRemboursement.erreur.donnees.taux.format"));
    }

    : Ma question est donc trés simple :
    Quel est l'interêt de typer les données d'un formulaire DynaActionForm dans le struts-config.xml

  2. #2
    Rédacteur
    Avatar de lunatix
    Homme Profil pro
    Architecte technique
    Inscrit en
    Novembre 2002
    Messages
    1 960
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 960
    Points : 3 736
    Points
    3 736
    Par défaut
    reponse .. ren !

    euh, non, en fait tu ne peux typer qu'en String ou boolean, mais cela a été prevu pour un cas général (tu pourrais en theorie utiliser autre chose qu'un navigateur web devant Struts, par exemple une interface Swing qui pourrait typer ces champs)

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 50
    Points : 36
    Points
    36
    Par défaut
    Euh, cela veut dire que je devrais donc typer String toutes les données de mes formulaires dans struts-config.xml ?

    Je travaille sur Tomcat en JSP/Java avec Struts et Hibernate.

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 50
    Points : 36
    Points
    36
    Par défaut
    Désolé pour le up, j'aimerais juste une confirmation ou infirmation de ce que je crois avoir compris.
    Cela m'étonne en effet, mais en même temps, je ne suis étonné qu'à moitié.

  5. #5
    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 : 45
    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 tout en String ou boolean. L'interet en plus c'est de pouvoir laisser ton champs renseigné avec la mauvaise valeur dans le cas d'une erreur. Chose que tu ne peux pas faire en typant tes données.
    Etre c'est etre relatif.

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 50
    Points : 36
    Points
    36
    Par défaut
    Citation Envoyé par yolepro
    Oui tout en String ou boolean. L'interet en plus c'est de pouvoir laisser ton champs renseigné avec la mauvaise valeur dans le cas d'une erreur. Chose que tu ne peux pas faire en typant tes données.
    Merci beaucoup Yolepro !!!
    C'est exactement ce que je me disais quand j'ai posé la question, mais j'avais peur de tenir un raisonnement idiot, étant donné que struts propose de nombreux types de données java.

    Vive ce forum et merci !

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 13
    Points : 14
    Points
    14
    Par défaut
    Désolé mais je ne suis pas de cet avis!

    En effet, en typant ta valeur à double,
    tu peux afficher correctement "montant" sous la forme 1 000,00€ et pas 1000.0€ ET ce grace au format="#,##0.00" qui fonctionne avec le type double!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <bean:write name="montant" property="" format="#,##0.00"/>
    Je pense donc que tu as tout intérêt à mettre double.

    Voila,
    vous en penser quoi?

    PAf4

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 50
    Points : 36
    Points
    36
    Par défaut
    Citation Envoyé par paf15
    Désolé mais je ne suis pas de cet avis!

    En effet, en typant ta valeur à double,
    tu peux afficher correctement "montant" sous la forme 1 000,00€ et pas 1000.0€ ET ce grace au format="#,##0.00" qui fonctionne avec le type double!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <bean:write name="montant" property="" format="#,##0.00"/>
    Je pense donc que tu as tout intérêt à mettre double.

    Voila,
    vous en penser quoi?

    PAf4
    J'ai essayé avec le type Double (dans ma classe donnée) et d'une page à l'autre, il ne mettait pas la même chose.
    Un objet qui avait la valeur 10.5 par exemple passait à 10.49999468 ...

    Par contre, avec le BigDecimal, je n'ai aucun problème.
    Mais le BigDecimal n'est pas géré par Struts ou alors je me suis mal démerdé : j'avais lu que c'était possible, mais à chaque fois que je l'utilisais, il mettait un message d'erreur, et plus rien quand je mettais Double.
    En plus, il était écrit que le java.lang.BigDecimal était géré, alors que le BigDecimal se trouve dans java.math ...
    Bref, il y avait trop de flou pour ce problème pour que je continue de tenter avec le BigDecimal.

    Avec les strings, je n'ai plus de pb.
    C'est dans mon action que je convertis le string, et que je teste si la donnée est au bon format (dans le validate du form pour être plus précis).

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 13
    Points : 14
    Points
    14
    Par défaut Re
    Le type double passe correctement dans les FormBean de Struts.

    Le formatage des montants se font en fonction de la langue du navigateur. Donc si tu as "en" tu auras 1,000.00€ et en "fr" tu auras 1 000,00€ à l'affichage.

    Le seul problème que j'ai noté avec les doubles se situe à la saisie. En effet, tu es obligé d utiliser un string en saisie pour le passer dans ton validator. Si tu enregistre 6,4 (et pas 6.4), tu auras 0.0 dans ta variable en type double. Le validator péte...

    Voila,
    PAf4

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 50
    Points : 36
    Points
    36
    Par défaut
    Je voulais dire, que le Double ne semble pas garantir que le nombre qu'il représente reste le même. Je sais pas comment le nombre est implémenté par le Double, mais j'ai l'impression qu'il se plante dans ses calculs.

    Le BigDecimal a l'air plus fiable.

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

Discussions similaires

  1. [MySQL] Typer les données de mysql pour json
    Par frexville dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 24/08/2010, 17h27
  2. [c#]Poster les données d'un formulaire http
    Par waxman1 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 05/05/2006, 18h25
  3. enregistrer les données d'un FORMULAIRE sur une TABLE
    Par godzinho dans le forum Access
    Réponses: 15
    Dernier message: 11/03/2006, 18h03
  4. Recuperer les données d'un formulaire en PHP
    Par mekdar dans le forum Langage
    Réponses: 2
    Dernier message: 29/11/2005, 15h41
  5. Réponses: 5
    Dernier message: 06/11/2005, 11h26

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