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 :

Récupèrer la valeur d'une hashmap


Sujet :

JSF Java

  1. #1
    Membre éclairé
    Inscrit en
    Avril 2006
    Messages
    301
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Avril 2006
    Messages : 301
    Par défaut Récupèrer la valeur d'une hashmap
    Voilà mon problème.

    J'ai une HashMap qui contient donc des clés et des values.
    J'affiche ses valeurs dans une page jsp avec jsf. En faite, je crée un formulaire : dans le label, je met les clés et dans les champs, les values :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <html:form>
        <html:dataTable value="#{action.map}" var="e">
        <html:column>
             <html:outputText value="#{e.key}"> </html:outputText>&nbsp
             <html:inputText value="#{e.value}"> </html:inputText>
        </html:column>
        </html:dataTable>
        <html:commandButton value="Sauvegarder" action="#{modification.modif}" />
    </html:form>
    Cela fonctionne. Je me retrouve donc avec un formulaire avec les champs remplis.
    Je voudrais pouvoir modifier les champs du formulaire et enregistrer les modifications quand je clique sur le bouton valider.
    Mon problème est de pouvoir récuperer les valeurs modifiées dans une classe java

    Merci pour votre aide

  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
    Normalement tu n'as rien à faire.
    C'est JSF qui va mettre à jour les données contenues dans map du bean action lors de la soumission de ton formulaire !
    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é
    Inscrit en
    Avril 2006
    Messages
    301
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Avril 2006
    Messages : 301
    Par défaut
    merci pour ton aide

    quand je teste, j'ai l'erreur suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    '#{e.value}' Property 'value' not writable on type java.lang.Object)]

  4. #4
    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 : 45
    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
    quand tu utilise un map pour le datatable, il va passer par le entryset. Hors, le entryset est pas éditable en lui même. Par contre la map l'est et tu dispose de la clé, donc suffit de changer la référence en quelque chose d'écrivable:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <html:inputText value="#{action.map[e.key]}"> </html:inputText>

  5. #5
    Membre éclairé
    Inscrit en
    Avril 2006
    Messages
    301
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Avril 2006
    Messages : 301
    Par défaut
    dans ma classe action, j'ai une méthode getMap :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    	public List getMap() {
    		return new ArrayList(map.entrySet());
    	}
    que j'appelle quand je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      <html:dataTable value="#{action.map}" var="e">
    il faut que j'écrive :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     <html:inputText id="monChamp" value="#{action.map[e.value]}">
    ?
    ca me met une erreur : undefined attribut name e.value

  6. #6
    Membre éclairé
    Inscrit en
    Avril 2006
    Messages
    301
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Avril 2006
    Messages : 301
    Par défaut
    en faite, si j'exécute l'application
    voilà l'erreur qui se produit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    java.lang.NumberFormatException: For input string: "travail"
    travail étant récupéré dans la hashmap

  7. #7
    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 : 45
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    	public List getMap() {
    		return new ArrayList(map.entrySet());
    	}
    Avec du code pareil, faut pas t'étonner qu'on t'oriente mal. un methode qui s'appelle getMap() se doit de retourner Map, pas List, bref. Suggestion simple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    	public List getKeys() {
    		return new ArrayList(map.keySet());
    	}
    	public Map getMap() {
    		return map;
    	}
    et en jsf:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <html:form>
        <html:dataTable value="#{action.keys}" var="e">
        <html:column>
             <html:outputText value="#{e}"> </html:outputText>&nbsp
             <html:inputText value="#{action.map[e]}"> </html:inputText>
        </html:column>
        </html:dataTable>
        <html:commandButton value="Sauvegarder" action="#{modification.modif}" />
    </html:form>
    Tu itère sur les clés, et dans le inputText tu référence correctement à travers la map, ce qui permettra au value binding d'être utilisé en write.

Discussions similaires

  1. Récupérer valeur d'une HashMap.
    Par kewti dans le forum Collection et Stream
    Réponses: 15
    Dernier message: 03/07/2014, 18h33
  2. récupérer la valeur d'une checkbox
    Par druglord dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 09/08/2005, 13h54
  3. Récupérer la valeur d'une adresse hexa 300.
    Par Cochman dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 04/06/2005, 17h45
  4. Réponses: 2
    Dernier message: 29/05/2005, 19h50
  5. [C#] [Automation Word] Récupérer la valeur d'une cellule
    Par Ditch dans le forum Windows Forms
    Réponses: 2
    Dernier message: 16/06/2004, 15h57

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