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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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?

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