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 :

boutons radio dans une table, attribut "index" de t:radio


Sujet :

JSF Java

  1. #1
    Membre à l'essai
    Inscrit en
    Décembre 2003
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 15
    Points : 10
    Points
    10
    Par défaut boutons radio dans une table, attribut "index" de t:radio
    Bonjour,

    Je souhaite générer une table, contenant un bouton radio sur chaque ligne. C'est un sujet très répandu mais mon problème est vraiment bizarre. J'utilise des composants Tomahawk, entre autres.

    Voilà mon code:

    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
     
    <to:selectOneRadio
    		id="selectedList" 
    		forceId="true"
    		forceIdIndex="false"
    		layout="spread" 													
    		value="#{bean.selectedList}" >
    	<f:selectItems value="#{bean.listesSI}" />
    </to:selectOneRadio>
     
    <to:dataTable
    		headerClass="tableHeader"
    		columnClasses="libelleCol,checkCol"
    		value="#{bean.listes}"
    		var="lst"
    		rowIndexVar="index">
    	<h:column>
    		<f:facet name="header">
    			<h:outputText value="" />
    		</f:facet>
    		<h:outputText value="#{lst.libelle}" />
    	</h:column>
    	<h:column>
    		<f:facet name="header">
    			<h:outputText value="" />
    		</f:facet>
    		<to:radio for=":myForm:selectedList" index="#{index}" ></to:radio>
    	</h:column>
    </to:dataTable>
    Avec ce code, j'obtiens un NullPointerException sur l'attribut "index" du composant radio? Car si je remplace index="#{index}" par index="0", je n'ai pas d'erreur mais du coup tous mes boutons radios seront liés au même item de la liste. Si je mets #{index} dans un outputText, j'ai bien l'index de chaque ligne affiché correctement, sans erreur.

    Voilà les premières lignes de la trace Java:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    java.lang.NullPointerException
    	at com.sun.facelets.tag.TagAttribute.getInt(TagAttribute.java:100)
    	at com.skalasoft.facelets.tags.IntegerMetadata.applyMetadata(IntegerMetadata.java:28)
    	at com.sun.facelets.tag.MetadataImpl.applyMetadata(MetadataImpl.java:36)
    	at com.sun.facelets.tag.MetaTagHandler.setAttributes(MetaTagHandler.java:62)
    	at com.sun.facelets.tag.jsf.ComponentHandler.apply(ComponentHandler.java:140)
    	at com.sun.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:47)
    	at com.sun.facelets.tag.jsf.ComponentHandler.applyNextHandler(ComponentHandler.java:295)
    	at com.sun.facelets.tag.jsf.ComponentHandler.apply(ComponentHandler.java:165)
    Il semblerait que la balise index ne prenne pas en compte ma variable, et renseigne toujours NULL. Pourtant, un exemple est donné sur cette page: http://wiki.apache.org/myfaces/Displ...ons_In_Columns

    Merci d'avance.

  2. #2
    Nouveau membre du Club
    Inscrit en
    Septembre 2007
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 36
    Points : 37
    Points
    37
    Par défaut
    et si tu ajoutes dans ta deuxième colonne un outputText avec value="#{index}", ça affiche quelque chose ?
    parce que ton code semble correct, c'est peut être juste que index est un nom réservé ou que l'index n'est pas un nombre (mouais... )

  3. #3
    Membre à l'essai
    Inscrit en
    Décembre 2003
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 15
    Points : 10
    Points
    10
    Par défaut
    Oui oui, comme je l'ai indiqué, dans un outputText le champ est correctement rempli avec l'index de chaque ligne.

    J'ai remarqué autre chose: si je mets la ligne <to:radio... /> en commentaire, et que je regarde le code source de la page générée, j'ai bien un commentaire HTML pour chaque ligne, et la valeur de l'index est correctement renseigné.

    Autrement dit, le problème ne viendrait pas d'ici?? Est-ce peut-être au momùent de la liaison avec le SelectOneRadio qu'il y a un problème?

  4. #4
    Nouveau membre du Club
    Inscrit en
    Septembre 2007
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 36
    Points : 37
    Points
    37
    Par défaut
    Oui peut être.
    Je ne connais pas trop tomahawk, m'enfin a priori l'attribut forceId devrait servir à ce que l'id donné au composant soit reproduit tel quel, sans ajouter devant le nom du formulaire. Donc l'id de ton selectOneRadio devrait être "selectedList" et pas ":myForm:selectedList".
    Essaie peut être de virer le forceId, ou de remplacer l'idenfiant que tu passes dans le for pour supprimer le ":myForm:" (suis pas persuadé que le deuxième cas fonctionne correctement... )
    Sinon j'ai cherché un peu mais je n'ai pas trouvé de réponse à ton problème :/ (arf, electro bonobo)

  5. #5
    Membre à l'essai
    Inscrit en
    Décembre 2003
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 15
    Points : 10
    Points
    10
    Par défaut
    Du nouveau: il semblerait que le souci vienne de l'interaction entre la table et les boutons radios à créer, au moment du rendu. J'ai mis un backing bean sur la dataTable, et en accédant à l'attribut rowIndex par l'élément HTMLDataTable du BackingBean, je récupère -1 à la création du bouton radio.

    Est-ce que l'un de vous a déjà rencontré ce genre de problèmes d'interactions entre des composants imbriqués?

Discussions similaires

  1. Recherche dans une table a 3 index
    Par Night_Wolf1619 dans le forum Bases de données
    Réponses: 3
    Dernier message: 26/10/2013, 12h42
  2. [C#] Lier des boutons radio dans une application mobile
    Par Loïc56 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 22/04/2005, 13h00

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