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 :

selectOneMenu/selectItems: No case sensitive


Sujet :

JSF Java

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    226
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2008
    Messages : 226
    Par défaut selectOneMenu/selectItems: No case sensitive
    Bonjour!

    dans une page JSF j'ai un selectOneMenu avec un selectItems.
    Mon problème c'est que la valeur du selectOneMenu est case sensitive par rapport aux items!
    Exemple si dans la liste j'ai "Null, Pomme, Orange" et que la valeur du selectOneMenu est "pomme", elle ne vient pas sélectionnée!

    Je n'aimerais pas tout mettre en majuscule ou tout en minuscule...
    Est-ce qu'il y a un moyen pour dire au selectOneMenu de ne pas être case sensitive...??

  2. #2
    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 : 46
    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 ton code JSF et Java ?
    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

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    226
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2008
    Messages : 226
    Par défaut
    voilà:

    jsf:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <h:selectOneMenu id="logoFile" value="#{tForm.logoFile}" onchange="checkDeactLines()">
    	<f:selectItem itemValue="" itemLabel="None" />
    	<f:selectItems value="#{tForm.logoFiles}" />
    </h:selectOneMenu>

    java:
    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
    private String LogoFile;
    private void load() throws Exception {
    	...
    	//prise LogoFile depuis BDD
    	String FileLogoPath = rs.getString("FileLogoPath");
    	LogoFile = (FileLogoPath != null) ? new File(FileLogoPath).getName() : null;
    	...
    }
     
    public String getLogoFile()
    {
    	return LogoFile;
    }
    public void setLogoFile(String logoFile)
    {
    	LogoFile = logoFile;
    }	
     
    /*liste tous les fichiers bmp dans RegistrationFolder/Logo */
    public SelectItem[] getLogoFiles()
    {
    	//RegistrationFolder : String, contient le path du répertoire	
    	ArrayList<SelectItem> logos = new ArrayList<SelectItem>();
    	if (RegistrationFolder != null && RegistrationFolder.length() > 0)
    	{
    		File folder = new File(RegistrationFolder, "logo");
    		if (folder.exists() && folder.isDirectory())
    		{
    			File[] files = folder.listFiles();
    			for (File file : files)
    			{
    				String name = file.getName();
    				if (name.toLowerCase().endsWith(".bmp") &&
    					file.length() <= 25 * 1024)
    					logos.add(new SelectItem(name, name));
    			}
    		}
    	}
    	return logos.toArray(new SelectItem[logos.size()]);
    }
    Mes selectItems sont des noms des fichiers contenus dans un répertoire. Ma valeur de selectOneMenu est prise au chargement de la page depuis une table dans la BDD, elle ne correspond pas forcement maj/minuscule aux noms de fichiers...

    il manque quelque chose?


    p.s. je pense que je pourrais tout mettre en minuscule à l'affichage..mais j'aimerais bien garder le case (MonFichier.bmp par exemple)

  4. #4
    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 : 46
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Par défaut
    2 choses :

    1. Je ne comprends pas comment tu peux mettre "pomme" si le nom du fichier c'est "Pomme". En effet, la valeur des SelectItems est générée par ton code Java, donc l'utilisateur, s'il choisit "Pomme", la valeur sera "Pomme" dans le code, pas "pomme".
    Qu'est-ce qui te fait croire qu'il y a un problème de casse au juste ?
    Peux-tu nous montrer le code HTML généré de cette liste de sélection ?


    2. Ton getter est trop complexe, dans le sens où celui-ci va être appelé de nombreuses fois. Du coup, à chaque appel, il va scanner ton répertoire, ce qui est couteux en temps. En plus, inutile de faire une transformation en SelectItem[], tu peux retourner un List<SelectItem>.
    Le mieux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public List<SelectItem> getLogoFiles() {
        if (logoFiles == null) {
            // C'est ici que tu initialises ta liste.
            ...
        }
        return logoFiles;
    }
    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

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    226
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2008
    Messages : 226
    Par défaut
    merci pour la réponse!

    Pour le point 2, merci! je vais corriger.

    Pour le point 1, ce n'est pas lors de la sélection mon problème, mais lors de l'affichage de la page. J'ai mal expliqué..

    Le problème est que le fichier choisi "pomme" peux être inséré autrement que avec la sélection depuis ma page...je peux donc avoir "pomme" au lieu de "Pomme"...

    La liste (contenant "None", "Pomme", "Orange") ne reconnaît pas "pomme". Elle va donc afficher "None" (première valeur de la liste).

    J'espère d'être plus claire...

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    226
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2008
    Messages : 226
    Par défaut
    voilà mon HTML:

    avec logoFile = "pomme" et la valeur dans la liste "Pomme.bmp"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <select id="tForm:logoFile" name="tForm:logoFile" size="1" onchange="checkDeactLines()">		
    	<option value="">None</option>		
    	<option value="Pomme.bmp">Pomme.bmp</option>		
    	<option value="Orange.bmp">Orange.bmp</option>		
    	<option value="test.bmp">test.bmp</option>		
    </select>
    ou si je mets "pomme.bmp"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <select id="tForm:logoFile" name="tForm:logoFile" size="1" onchange="checkDeactLines()">		
    	<option value="">None</option>		
    	<option value="pomme.bmp" selected="selected">pomme.bmp</option>		
    	<option value="Orange.bmp">Orange.bmp</option>		
    	<option value="test.bmp">test.bmp</option>		
    </select>

  7. #7
    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 : 46
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Par défaut
    Citation Envoyé par Bobble Voir le message
    Le problème est que le fichier choisi "pomme" peux être inséré autrement que avec la sélection depuis ma page
    Tu peux expliciter ce point ? Comment la valeur peut elle être choisie autrement ? Via les données récupérées en base de données ?

    Sinon, une autre solution c'est de mettre les valeurs (et non les labels) en minuscules. Donc dans le code générant ta List<SelectItem>, tu fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    logos.add(new SelectItem(name.toLowerCase(), name));
    Cette modification sera transparente pour l'utilisateur, car lui ne voit pas les valeurs mais seulement les labels.
    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

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    226
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2008
    Messages : 226
    Par défaut
    Oui,
    la valeur "pomme" se trouve dans la base de donnée.

    Je n'avais pas pensé du tout à mettre les valeurs différentes au label. C'est un excellente idée.
    Comme ça je fais comme tu m'a dit plus
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public String getLogoFile()
    {
    	return LogoFile.toLowerCase();
    }
    comme ça, ça correspond toujours, mais l'utilisateur continue à voir les fichiers avec ses majuscules!

    Merci beaucoup!!!

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

Discussions similaires

  1. [Oracle] Enlever le case sensitive???
    Par osmoze dans le forum Oracle
    Réponses: 21
    Dernier message: 18/07/2007, 09h40
  2. [10gR1] pb case sensitive
    Par Loïck dans le forum Oracle
    Réponses: 12
    Dernier message: 23/02/2007, 08h57
  3. base de registre et Case Sensitive
    Par freddyboy dans le forum Oracle
    Réponses: 5
    Dernier message: 06/02/2007, 10h45
  4. Désactiver la case sensitive
    Par soad dans le forum NetBeans
    Réponses: 4
    Dernier message: 30/08/2006, 19h59
  5. [Debat]case sensitive : pourquoi faire ?
    Par Rincevent76 dans le forum Langage
    Réponses: 53
    Dernier message: 24/04/2006, 10h14

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