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

JSF Java Discussion :

convertNumber : comment le forcer à renvoyer un double


Sujet :

JSF Java

  1. #1
    Membre averti
    Inscrit en
    Mars 2003
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 13
    Par défaut convertNumber : comment le forcer à renvoyer un double
    Bonjour à tous.

    Petit soucis d'utilisation du tag <f:convertNumber>

    Dans ma page j'utilise des inputText défini comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <h:inputText value="#{pieceCourante.tauxCommission}" rendered="#{not empty contratCourant.pieceActive}" readonly="#{not ecr_cta_1.editMode}" styleClass="medium">
                 <f:convertNumber  type="number" 
                       minFractionDigits="2" 
                       maxFractionDigits="2"/>
    </h:inputText>
    Mon problème est que tous les attibuts de mes beans sont définis en Double.

    Hors, lorsque je saisi 0, ou un nombre entier, j'ai un IllegalArgumentException du fait qu'il essaie d'insérer un Long dans un Double.

    Comment faire pour le forcer à renvoyer un Double??

    J'utiliserais bien DoubleConverter, mais dans mes valeurs, j'ai originellement 3 chiffres après la virgule et les nouvelle normes m'imposent d'en afficher ou de n'en saisir que 2...

    Une idée??

    Ou bien quelqu'un sait-il ou trouver le source de convertNumber (http://java.sun.com/jsf/core) que je puisse l'appliquer à ma sauce.

    Par avance merci.

    [EDIT] le rajout de la balise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <f:validateDoubleRange minimum="0.0"/>
    ne change rien à l'affaire.

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Tu peux essayer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <h:inputText
      converter="javax.faces.convert.DoubleConverter" />
    Mais tu n'aura pas la possibilité de mettre un limite au niveau des virgule. La doc de numberConverter ne précise pas dans quelle conditions on renvoie Long ou Double. Pour çà elle te renvoir à la classe NumberFormat, qui renvoie un "Number" (donc pas spécifiquement Long ou Double).

    Donc en gros, pour un numberConverter, il faut que ta propriété soit de type Number histoire de tout accepter :s

  3. #3
    Membre averti
    Inscrit en
    Mars 2003
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 13
    Par défaut
    Mouaip, c'est bien ce que je pensais...
    Ca m'arrange pas.

    M'en vais refaire le convertNumber à ma sauce, histoire de toujours avoir un Double quelle que soit la saisie...

  4. #4
    Membre averti
    Inscrit en
    Mars 2003
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 13
    Par défaut
    Bon ben c'est presque gagné...

    J'ai étendu la classe NumberConverter pour la forcer à renvoyer un double.

    Mon soucis maintenant, c'est lorsque je saisi un chiffre avec un . (point), NumberConverter me ressort un Long et au passage je perds les décimales, tandis que si je le saisi avec une , (virgule) j'ai bien un double...

    Une idée quelqu'un???

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2002
    Messages : 44
    Par défaut
    Ma fois, je sais que la nécromancie c'est mal et que réanimer des posts enterrés c'est malsain mais si quelqu'un avait la solution à ce soucis, je suis prenneur ça m'ôterait une épine du pied.

  6. #6
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    Citation Envoyé par Gazadonf Voir le message
    Bon ben c'est presque gagné...

    J'ai étendu la classe NumberConverter pour la forcer à renvoyer un double.

    Mon soucis maintenant, c'est lorsque je saisi un chiffre avec un . (point), NumberConverter me ressort un Long et au passage je perds les décimales, tandis que si je le saisi avec une , (virgule) j'ai bien un double...

    Une idée quelqu'un???
    tu dois définir le double avec un pattern que tu veux, et surtout définir le local, le point c'est local US si je ne m'abuses.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2002
    Messages : 44
    Par défaut
    tu dois définir le double avec un pattern que tu veux, et surtout définir le local, le point c'est local US si je ne m'abuses.
    En effet c'est local US. Mais mon vrai problème est de le forcer à accepter point ou virgule indiféremment, puisque j'aurai des utilisateurs paresseux (qui utilisent le pavé numérique et donc le point) et des puristes qui ne jurent que par la virgule.

    Est ce seulement possible?

  8. #8
    Rédacteur
    Avatar de romaintaz
    Homme Profil pro
    Java craftsman
    Inscrit en
    Juillet 2005
    Messages
    3 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Par défaut
    Tout est possible, tout est réalisable, c'est le Jeu de la Vie !

    Oui c'est possible, mais dans ce cas, je pense qu'il sera sans doute préférable de créer ton propre converter, ce qui n'est pas une chose très compliquée...
    Nous sommes tous semblables, alors acceptons nos différences !
    --------------------------------------------------------------
    Liens : Blog | Page DVP | Twitter
    Articles : Hudson | Sonar | Outils de builds Java Maven 3 | Play! 1 | TeamCity| CitConf 2009
    Critiques : Apache Maven

  9. #9
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    Citation Envoyé par sendoshi Voir le message
    En effet c'est local US. Mais mon vrai problème est de le forcer à accepter point ou virgule indiféremment, puisque j'aurai des utilisateurs paresseux (qui utilisent le pavé numérique et donc le point) et des puristes qui ne jurent que par la virgule.

    Est ce seulement possible?
    ouii à toi de convertir tes données,

    par exemple, tu prend le double, si il contient ',' tu la remplace avec un point et tu faire la conversion. fais attention du pattern, parceque le local US affiche 10 000 en 10,000 ..

Discussions similaires

  1. [C#] Comment convertir un string[] en double[] ?
    Par FoxDeltaSierra dans le forum C#
    Réponses: 3
    Dernier message: 13/04/2010, 11h10
  2. [VB.NET]Comment obtenir conversion exacte Single>Double?
    Par Misterburma dans le forum VB.NET
    Réponses: 9
    Dernier message: 09/02/2006, 22h24
  3. comment convertir un char[] en double
    Par groult jeremy dans le forum C++
    Réponses: 6
    Dernier message: 17/11/2005, 14h49
  4. [Conversion]Comment faire pour couper un Double trop long?
    Par dessinateurttuyen dans le forum Général Java
    Réponses: 1
    Dernier message: 13/11/2005, 02h22
  5. Jointure;comment afficher les enregs "non doubles"
    Par Wismerill dans le forum Langage SQL
    Réponses: 5
    Dernier message: 18/04/2005, 09h30

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