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 :

Problème de converter


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de maloups
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    332
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 332
    Par défaut Problème de converter
    Bonjour à tous !

    Afin d'appliquer une petit routine à tous les champs de type date dans mes pages jsf, j''utilise un converter déclaré dans mon faces-config.xml de la facon suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <converter>
       <converter-for-class>java.util.Date</converter-for-class>
       <converter-class>monPackage.web.util.MyDateConverter</converter-class>
    </converter>
    Cette classe fonctionne en principe plutot bien mais je viens de remarquer qu'elle ne s'appliquait pas dans toutes les situations

    Dans l'une de mais jsp, j'ai le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <h:inputText id="dateDemarrage" size="10"
       onblur="chkType(this,'dat');"
       value="#{missionBean.mission.dateDemarrage}"
       onclick="event.cancelBubble=true;this.select();lcs(this)" 
       onfocus="this.select();lcs(this)" >              
    </h:inputText>
    "mission" est un objet qui contient bien un attribut dateDemarrage de type "Date"

    Est ce que quelqu'un aurait une idée du pourquoi dans ce cas par exemple, je ne passe pas par mon converter ?????

    Merci d'avance !

  2. #2
    Membre éclairé Avatar de maloups
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    332
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 332
    Par défaut
    Après quelque test, il s'avère, que tous mes champs de type Date passe bien par mon converter... Le gros soucis, c'est que le converter est appliqué lorsque l'on sort de la page concerné, et pas quand on y rentre !

    Je me retrouve donc avec des dates faussées à l'affichage ! grrrrr

    Une idée, pour que mon converter soit appliqué à l'entrée d'une page comme à la sortie ?

  3. #3
    Membre chevronné Avatar de heid
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Mai 2002
    Messages : 388
    Par défaut
    C'est pas un Java.Sql.Date dans "mission" par hazard?

  4. #4
    Membre éclairé Avatar de maloups
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    332
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 332
    Par défaut
    non non, il s'agit bien d'un java.util.Date;

    De plus, ma date passer bien par le converter, mais en sortant de la page, pas en entrée ! c ca mon problème... d'ailleur, visiblement c'est le problème des converter JSF

    Si y'a une ruse, j'suis preneur !

  5. #5
    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
    Tu peux nous montrer le code de ton converter stp ?
    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

  6. #6
    Membre éclairé Avatar de maloups
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    332
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 332
    Par défaut
    Pas de problème !

    Voili voilou :

    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
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
     
    package monPackage;
     
    import java.io.Serializable;
    import java.util.Calendar;
    import java.util.Date;
    import java.util.TimeZone;
     
    import javax.faces.component.UIComponent;
    import javax.faces.context.FacesContext;
    import javax.faces.convert.DateTimeConverter;
     
     
    /**
     * Afficheur de dates pour JSF
     *
     */
    public class MyDateConverter extends DateTimeConverter  implements Serializable{
        /**
         * 
         */
        private static final long serialVersionUID = 1L;
     
        /**
         * Constructeur
         * <br>le format est dd/mm/yyyy
         * <br>le fuseau horaire de référence est celui de Paris (CET=Central European Time)
         */
        public MyDateConverter() {
            super();
            this.setPattern(ConstantsUtils.FORMAT_DATE_FRANCE);
            this.setTimeZone(TimeZone.getTimeZone("Europe/Paris"));
        }
     
        /**
         * Parsing
         * <br>Si la saisie de la date est sur 2 chiffres, on considère que les années >50 sont en 1900
         */
        public Object getAsObject(FacesContext context, UIComponent component, String chaine){
            Date result = null;
            Date inputDate = (Date)super.getAsObject(context, component, chaine);
            if(inputDate != null){
                Calendar cal = Calendar.getInstance();
                cal.setTime(inputDate);
                cal.setTimeZone(TimeZone.getTimeZone("Europe/Paris"));
                int year = cal.get(Calendar.YEAR);
                if(year < 100){
                    if(year>50){
                        cal.set(Calendar.YEAR, year+1900);
                    }else {
                        cal.set(Calendar.YEAR, year+2000);
                    }
                }
                result = cal.getTime();
            }else {
                result = inputDate;
            }
     
            return result;
        }
    }
    Mais je sais que je me répète..., mais je ne passe toujours pas dans mon converter en Entrée de page... du coup c'est normal que le résultat ne soit pas bon....

    Pour info, mon problème est étroitement lié à mon poste d'hier

    http://www.developpez.net/forums/d60...p-calendar-js/

    Qui finalement n'est pas si résolu que ca...

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

Discussions similaires

  1. Problème de convertion
    Par pc152 dans le forum C#
    Réponses: 5
    Dernier message: 15/10/2007, 20h02
  2. Problème avec convert datetime
    Par sane79 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 02/07/2007, 10h43
  3. Problème de Convertion de types
    Par simtim dans le forum GTK+ avec C & C++
    Réponses: 6
    Dernier message: 27/05/2007, 22h54
  4. Réponses: 2
    Dernier message: 18/11/2006, 15h06
  5. Problème de convertion en NodeList
    Par imhotep_zr7s dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 05/09/2006, 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