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 :

[OutputText] Pattern ne fonctionne pas


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    100
    Inscrit en
    Juillet 2007
    Messages
    585
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : 100

    Informations forums :
    Inscription : Juillet 2007
    Messages : 585
    Par défaut [OutputText] Pattern ne fonctionne pas
    Bonjour,

    J'aimerais afficher un nombre dans un output texte mais le pattern ne fonctionne pas.

    J'aimerais afficher par ex : 150.00 mais actuellement j'ai 150,00
    J'ai déclaré le pattern mais rien n'y change:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <h:outputText value="#{heure.nbKm}" rendered="#{heure.nbKm gt 0}">
    	<f:convertNumber pattern="#,##0.00" />
    </h:outputText>
    par contre si je mets :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <h:outputText value="#{heure.nbKm}" rendered="#{heure.nbKm gt 0}">
    	<f:convertNumber pattern="#,##0.000" />
    </h:outputText>
    J'ai bien les 3 décimales, mais toujours une , à la place d'un . : 150,000

    Qqun a-t-il une idée ?
    Merci

  2. #2
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Tu confonds les choses là, le pattern a des caractères réservés pour identifier les éléments, le "." pour la virgule décimale, le "," pour le séparateur de millier.
    Ça, c'est toujours vrai.

    Ensuite, en fonction de la Locale, la virgule est représentée par un "." ou une ","...
    Je suppose que ta Locale indique que c'est la virgule qui sépare la partie entière des décimales.
    Si tu veux forcer, tu peux préciser l'attribut "locale"
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre éclairé
    Profil pro
    100
    Inscrit en
    Juillet 2007
    Messages
    585
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : 100

    Informations forums :
    Inscription : Juillet 2007
    Messages : 585
    Par défaut
    Oui c'est juste, merci

  4. #4
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Mai 2011
    Messages : 790
    Par défaut
    Pour utiliser les validateurs je te conseille d'implémenter une classe permettant de parcours ton champ

    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
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
     
    import javax.faces.application.FacesMessage;
    import javax.faces.component.UIComponent;
    import javax.faces.context.FacesContext;
    import javax.faces.validator.FacesValidator;
    import javax.faces.validator.Validator;
    import javax.faces.validator.ValidatorException;
     
    @FacesValidator("com.validator.NumberValidator")
    public class NumberValidator implements Validator{
     
    	// *********************************************************************************************
    	private static final String Number_PATTERN = "[0-9]*";
     
    	private Pattern pattern;
    	private Matcher matcher;
     
    	// *********************************************************************************************
     
    	@Override
    	public void validate(FacesContext context, UIComponent component,
    			Object value) throws ValidatorException {
     
    		matcher = pattern.matcher(value.toString());
    		if(!matcher.matches()){
     
    			FacesMessage msg = 
    				new FacesMessage("validation failed.", 
    						"Invalid  format.");
    			msg.setSeverity(FacesMessage.SEVERITY_ERROR);
    			throw new ValidatorException(msg);
     
    		}
    	}
     
    	// *********************************************************************************************
     
    	public NumberValidator() {
    		pattern = Pattern.compile(Number_PATTERN);
    	}
     
    }
    ensuite appeler l'annotation com.validator.NumberValidator dans ton compostant en utilisant la balise f:validator et vous pouvez gérer les message d'erreur avec l'attribut ValidatorMessage.

    voici un exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <p:inputText id="cin" value="#{candidatCtr.candidat.cin}"
     
    											validatorMessage="Vous devez entrer un entier">
    											<f:validator
    												validatorId="com.SunGard.validator.NumberValidator" />
    										</p:inputText>
    C'est beaucoup plus pratique.

  5. #5
    Membre éclairé
    Profil pro
    100
    Inscrit en
    Juillet 2007
    Messages
    585
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : 100

    Informations forums :
    Inscription : Juillet 2007
    Messages : 585
    Par défaut
    Merci ahmedpa pour ta précision sur le validateur

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 27/01/2004, 11h14
  2. [FP]Writeln ne fonctionne pas !
    Par néo333 dans le forum Turbo Pascal
    Réponses: 4
    Dernier message: 01/11/2003, 23h47
  3. UNION qui ne fonctionne pas
    Par r-zo dans le forum Langage SQL
    Réponses: 7
    Dernier message: 21/07/2003, 10h04
  4. Un Hint sur un PopupMenu ne fonctionne pas !!??
    Par momox dans le forum C++Builder
    Réponses: 6
    Dernier message: 26/05/2003, 16h48
  5. ca ne fonctionne pas (generateur auto-incrémentant)
    Par tripper.dim dans le forum SQL
    Réponses: 7
    Dernier message: 26/11/2002, 00h10

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