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 :

Itérer sur une liste pour "afficher" des paramètres


Sujet :

JSF Java

  1. #1
    Membre régulier
    Inscrit en
    Novembre 2003
    Messages
    245
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 245
    Points : 106
    Points
    106
    Par défaut Itérer sur une liste pour "afficher" des paramètres
    Bonjour,

    Dans certaines cas, lorsque j'appelle une action JSF, les paramètres à passer sont parfois contenus dans une liste. Or le code suivant ne fonctionne pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <h:commandLink action="#{myController.myAction}">
      <t:dataList value="#{myObject.parameters}" var="p" layout="simple">
        <f:param name="#{p.key}" value="#{p.value}" />
      </t:dataList>
      <h:outputText value="myLink"/>
    </h:commandLink>
    Les paramètres de la liste ne sont pas transmis. Y'a-t-il une solution ?

    A noter que n'ayant pas réussi à itérer sur une Map, parameters est une List, et p une implémentation personnelle de Map.Entry.

    Merci.

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 92
    Points : 108
    Points
    108
    Par défaut
    Le paramétrage s'applique au composant parent qui contient le f:param, en l'occurence le t:dataList. Il ne peut pas prendre en compte les éléments de la liste, car il s'agit d'un paramétrage indépendant de chaque ligne. En revanche, tu peux paramétrer ton t:dataList avec une variable externe à t:dataList (en tout cas, pas la variable 'p').

    La question, c'est de savoir ce que tu cherches à faire avec ce paramétrage.

  3. #3
    Membre régulier
    Inscrit en
    Novembre 2003
    Messages
    245
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 245
    Points : 106
    Points
    106
    Par défaut
    Les paramètres s'appliquent au commandLink, mais ils sont calculés (en Java) et en nombre variable, d'où la liste. Du coup je ne vois pas trop comment faire, sans passer par une boucle for dans la JSP... mais c'est sale !

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 92
    Points : 108
    Points
    108
    Par défaut
    Ne faudrait-il pas plutôt un command link par ligne comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <t:dataList value="#{myObject.parameters}" var="p" layout="simple">
      <h:commandLink action="#{myController.myAction}">
        <f:param name="#{p.key}" value="#{p.value}" />
      </h:commandLink>
    </t:dataList>

  5. #5
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Si ton but est de sauver cette map dans la requete pour l'envoyer et la récupérer d'une requête à l'autre, utilise plutot le composant savestate de tomahawk.

  6. #6
    Membre régulier
    Inscrit en
    Novembre 2003
    Messages
    245
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 245
    Points : 106
    Points
    106
    Par défaut
    Je cherchais simplement à mettre des paramètres variables sur un commandLink. Manifestement ce n'est pas possible, donc j'ai contourné le problème en mettant toutes les valeurs possibles.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <h:commandLink action="#{myController.myAction}">
    	<h:outputText value="myLink"/>
    	<f:param name="toto" value="#{myObject.parameters['toto']}" />
    	<f:param name="titi" value="#{myObject.parameters['titi']}" />
    	<f:param name="tata" value="#{myObject.parameters['tata']}" />
    	<f:param name="pouet" value="#{myObject.parameters['pouet']}" />
    	<f:param name="foo" value="#{myObject.parameters['foo']}" />
    </h:commandLink>
    myObject.parameters est une Map, qui retourne donc null si le paramètre n'existe pas.

    Ce n'est pas une solution terrible, mais ça fonctionne. N'hésitez pas si vous avez mieux !

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

Discussions similaires

  1. [SP-2007] Modifier le DispForm.aspx d'une liste pour y afficher une image
    Par ljin86 dans le forum SharePoint
    Réponses: 12
    Dernier message: 13/01/2011, 11h18
  2. Réponses: 12
    Dernier message: 25/08/2006, 13h44
  3. [VB.NET][Réseau] afficher les PC en réseau sur une list view
    Par leptityugi dans le forum Windows Forms
    Réponses: 9
    Dernier message: 13/12/2005, 13h51

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