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 :

Impossible de récupérer une ligne séléctionné dans une scrollableDataTable


Sujet :

JSF Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 42
    Points : 35
    Points
    35
    Par défaut Impossible de récupérer une ligne séléctionné dans une scrollableDataTable
    Bonjour,

    Je suis débutant avec les JSF et RichFaces, néanmoins, j'ai effectué beaucoup de recherches (sans trouver la bonne solution) avant de faire ce post. En fait, j'ai essaié cette example :
    http://livedemo.exadel.com/richfaces...lableDataTable

    Je n'arrive pas à récupérer la ligne sélectionnée de ma scrollableDataTable.


    Voici ma configuration :
    - Eclipse GanyMede
    - jre1.6.0_07
    - Tomcat 6.0.16
    - JSF 1.2
    - RichFaces 3.2.1 GA

    Voici ma caseList.jsp
    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
     
    <rich:scrollableDataTable 
    	rowKeyVar="rkv" 
    	frozenColCount="1" 
    	sortMode="single" 
    	selection="#{caseList.selection}" 
            id="caseList" 
            columnClasses="col"  
            value="#{caseList.caseList}" 
             var="case">
      <rich:column id="popcolumn1">
    	<f:facet name="header">
    	    <h:outputText id="popheaderText1" styleClass="headerText" value="#{msg.machine}"/>
    	  </f:facet>
    	<h:outputText value="#{case.machine}">
    	</h:outputText>
       </rich:column>  
    ....
    </rich:scrollableDataTable>
    Voici ma caseListBean.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
     
    public class CaseListBean {
    	private List<CaseList> caseList =  new ArrayList<CaseList>();	
    	private SimpleSelection selection = null;
    	private ArrayList<CaseList> selectedCaisses = new ArrayList<CaseList>(); 
     
    	public SimpleSelection getSelection() {
    		return selection;
    	}
    	public void setSelection(SimpleSelection selection) {
    		this.selection = selection;
    	}
     
    	public ArrayList<CaseList> getSelectedCaisses() {
    		return selectedCaisses;
    	}
    	public void setSelectedCaisses(ArrayList<CaseList> selectedCaisses) {
    		this.selectedCaisses = selectedCaisses;
    	}
     
    	public String takeSelection() {
    		getSelectedCaisses().clear();
    	    Iterator<Object> iterator = selection.getKeys();
    	    System.out.println("(CaseListBean.takeSelection) key.size()["+selection.size()+"]");
    	    while (iterator.hasNext()){
    	        SimpleRowKey key = (SimpleRowKey)iterator.next();
     
    	        getSelectedCaisses().add(caseList.get(key.intValue()));
    		}
    		return null;
    	}
     
     
    }
    A chaque fois la taille de selection est 0.


    D'avance merci pour votre aide

  2. #2
    sup
    sup est déconnecté
    Membre régulier Avatar de sup
    Profil pro
    Inscrit en
    Août 2004
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 70
    Points : 72
    Points
    72
    Par défaut
    Salut Chritofff,
    a moins que j'ai raté quelque chose, je ne vois pas les accesseurs (getter/setter) de caseList

    De plus, il est instancié mais jamais rempli, que se passe-t'il au niveau de ta page, l'iteration a-t'elle lieu?

    Verifie bien que caseList soit bien rempli et non null, RichFaces est une librairie tres fiable (à part le rich:dropDownMenu qui est en train de me rendre fou depuis plusieurs jours)...

    A++

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 42
    Points : 35
    Points
    35
    Par défaut
    Salut sup,

    Au niveau de ma liste, il n'y a aucun problème. Il possède son getter/setter et s'affiche correctement.

    Je ne pas posté ses méthodes car je voulait mettre que l'essentiel.

    Le problème, c'est que j'essaie de récupéré la ligne sélectionné mais je n'y arrive toujours pas.

    Bonne chance pour les rich:dropDownMenu ( je comprend ta détresse lorsque ça ne fonctionne pas )

  4. #4
    sup
    sup est déconnecté
    Membre régulier Avatar de sup
    Profil pro
    Inscrit en
    Août 2004
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 70
    Points : 72
    Points
    72
    Par défaut
    J'ai deja fais ca (avec une rich:dataTable, je suppose que ca doit etre pareil avec le scrollable), le tout est de pouvoir coller un actionListener sur la lugne que tu cliques, alors tu peux utiliser par exemple un a4j:commandLink

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <rich:column id="ContactHandle" width="80px">
                 <f:facet name="header">
                          <h:outputText styleClass="headerText" value="Contact Handle" />
                 </f:facet>
                 <a4j:commandLink immediate="true" value="#{item.handle}"
                                  actionListener="#{contactSearchGUI.processAction}" />
    </rich:column>
    Ensuite au niveau du code de la methode processAction( l'actionListener tu recupere l'object de ta liste comme ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    public void processAction(ActionEvent arg0) throws AbortProcessingException
    {
    	UIComponent component = FacesContext.getCurrentInstance().getViewRoot().findComponent("content:contactList");
    	UIData dataTable = (UIData)component;
     
            //Index de la ligne selectionnée
            int index = dataTable.getRowIndex();
     
            //Object correspondant à la lligne cliquée
            Contact clikedContact = (ContactUI)dataTable.getRowData();
     
    }
    Au niveau du findComponent, il faut lui indiquer le nom de ton form et l'id de ta table (caseList) séparé par un ;

    J'espere que ca resoudra ton probleme.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 04/04/2013, 21h06
  2. Réponses: 3
    Dernier message: 29/03/2011, 20h38
  3. Réponses: 6
    Dernier message: 13/11/2009, 16h06
  4. Réponses: 4
    Dernier message: 01/10/2006, 15h37
  5. Réponses: 2
    Dernier message: 30/11/2005, 09h55

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