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 :

h:selectOneRadio dans un h:datatable


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 15
    Par défaut h:selectOneRadio dans un h:datatable
    Bonjour,

    Dans chaque ligne d'un h:datatable, pour chaque bean donc, je voudrais afficher un bouton radio. Je veux pouvoir sélectionner une des lignes, et une seule, puis valider mon formulaire.

    J'utilise un h:selectOneRadio dans ma colonne, mais le problème c'est qu'il me crée un nouveau groupe de boutons radio à chaque ligne, alors que moi je souhaiterais avoir un groupe global, et un bouton radio associé à ce groupe par ligne.

    J'ai testé ainsi, en imbriquant la h:dataTable dans le h:selectOneRadio :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <h:selectOneRadio value="#">
    <h:dataTable id="dataTable" value="#{pc_admin_divisionBySupplier.listDivisionsBySupplier}" var="varDivisionBySupplier">
    <h:column>
    <f:selectItem itemValue="#{varDivisionBySupplier.divisionParDefaut}"/>
    </h:column>
    </h:dateTable>
    </h:selectOneRadio>
    ça ne marche pas évidemment...j'ai testé aussi comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <h:dataTable id="dataTable" value="#{pc_admin_divisionBySupplier.listDivisionsBySupplier}" var="varDivisionBySupplier">
    <h:column>
    <h:selectOneRadio value="#{varDivisionBySupplier.divisionParDefaut}"/>
    </h:column>
    </h:dateTable>
    Je ne sais pas comment faire pour avoir un seul groupe de boutons radio et un bouton radio par ligne. quelqu'un aurait il déjà rencontré ce problème?

    Merci d'avance,
    Cordialement,
    Séverine

  2. #2
    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
    Bonsoir,

    Cette doc te sera probablement utile:
    http://www.javaworld.com/javaworld/j...jw-02-jsf.html

    En gros t'as deux possibilité

    Soit utiliser du javascript pour t'assurer qu'un seul élément est cliqué

    Soit créer un tag perso avec son renderer qui gère le fait qu'un groupe de radio boutons html soit généré au rythme de plusieurs éléments par row.

  3. #3
    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
    En effet, les radios boutons en JSF sont un peu limités. Tu ne peux que les créer par groupe. C'est donc inadapté à l'utilisation dans une dataTable.
    Une autre solution que celle proposée par tchize_, c'est d'utiliser la librairie Tomahawk, qui propose une extension du selectOneRadio, disposant d'un layout spread. En gros, tu définis ton selectOneRadion normalement, mais ensuite, tu peux placer chaque radio bouton où tu veux sur ta page. Cela doit fonctionner pour les datatable du coup.
    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

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 15
    Par défaut Merci :)
    Merci à tous les deux de votre réponse, je vais essayer comme ça ! je vous tiens au courant !
    Cordialement,
    Séverine

  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
    Personnellement, j'ai crée mon propre composant qui étend la dataTable de RichFaces.
    Je lui ai ajouté la possibilité de trier les éléments en fonction de chaque colonne, ainsi que la sélection de lignes (par checkbox ou par radio).
    Je t'avouerais que c'était un peu galère à faire, j'ai dû créer un composant spécifique qui ajoute ces radios. J'ai également créé le Javascript qui se charge de recréer le comportement des radios (c'est-à-dire que lorsqu'on en choisit une, on déselectionne les autres).
    Ca reste donc possible, mais pas terrible

    L'idéal serait d'utiliser une librairie proposant déjà ce genre de fonctionnalités. Il y a Tomahawk, Quipu (ok, le nom n'est pas vendeur ), etc.
    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 averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 15
    Par défaut resolu
    Bon finalement on a fait une méthode javascript pour recréer le comportement d'un seul groupe, alors qu'il y avait plusieurs groupes. l'ajout d'une nouvelle librairie n'étant pas envisageable dans ce projet pas eu le choix.
    Du coups ça marche, merci bcp de votre aide!
    Cordialement,
    séverine

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 8
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    Bonsoir,

    Cette doc te sera probablement utile:
    http://www.javaworld.com/javaworld/j...jw-02-jsf.html

    En gros t'as deux possibilité

    Soit utiliser du javascript pour t'assurer qu'un seul élément est cliqué

    Soit créer un tag perso avec son renderer qui gère le fait qu'un groupe de radio boutons html soit généré au rythme de plusieurs éléments par row.
    Bonjour,

    un autre possibilité consiste à utiliser Ajax4JSF, de cette manière :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <rich:column id="idExport">
    	<h:selectOneRadio value="#{resultatsBean.selection}">
    		<f:selectItem itemValue="#{mesOffres.id}" />
    		<a4j:support event="onclick"
    			action="#{resultatsBean.selectionUnique}"
    			reRender="maDataTable" />
    	</h:selectOneRadio>
    </rich:column>
    En gros, l'idée est de gérer la sélection d'une ligne unique avec la méthode selectionUnique() de resultatsBean. Cela nécessite de récupérer la bonne valeur du radio bouton via setSelection() et de faire les tests qui vont bien dans selectionUnique().

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

Discussions similaires

  1. Probléme de selectoneradio dans datatable
    Par simoelma dans le forum JSF
    Réponses: 1
    Dernier message: 01/03/2009, 21h02
  2. h:selectOneRadio dans un h:datatable
    Par Jacobian dans le forum JSF
    Réponses: 1
    Dernier message: 03/12/2008, 15h41
  3. afficher 2 List dans le même DataTable
    Par psycho_xn dans le forum JSF
    Réponses: 1
    Dernier message: 03/10/2008, 16h57
  4. Regrouper des lignes dans un t:dataTable
    Par kwiky dans le forum JSF
    Réponses: 1
    Dernier message: 12/08/2008, 17h05
  5. Réponses: 2
    Dernier message: 17/09/2007, 15h08

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