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 :

rich dataTable récupération des données d'une ligne


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de argonath
    Homme Profil pro
    Ingénieur d'Etudes
    Inscrit en
    Juillet 2009
    Messages
    248
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juillet 2009
    Messages : 248
    Par défaut rich dataTable récupération des données d'une ligne
    Bonjour à tous,

    une petite question pour une utilisation de richfaces dataTable.

    L'objectif est qu'au double clic sur une ligne du tableau, un modalPanel apparaisse pour consulter des infos complémentaires et/ou modifier cellesaffichées.

    j'ai trouvé sur les tutos ceci :
    1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <rich:dataTable border="0" var="list"
    	value="#{managedBean.dataTableRows}" id="table">
    	<a4j:support event="onRowClick" 	action="#{managedBean.processRowUpdate}"
    oncomplete="javascript:Richfaces.showModalPanel('_panel_Row_Details',{left:'auto', top:'auto'})">
    		<f:setPropertyActionListener value="#{list}"
    			target="#{managedBean.selectedRow}" />
    	</a4j:support>
     
    	<!-- déclaration des colonnes -->
    </rich:dataTable>

    ainsi que les 3 méthodes pour récupérer le code coté serveur

    mon code deviens donc
    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
    35
     
    <rich:modalPanel id="modif" minHeight="200" minWidth="450" height="200"
    	width="500">
    	<f:facet name="header">
    		<h:outputText value="Modifier les informations de l'acteur" />
    				</f:facet>
    				<f:facet name="controls">
            </f:facet>
    </rich:modalPanel>
     
    <rich:dataTable onRowMouseOver="this.style.backgroundColor='#F1F1F1'" onRowMouseOut="this.style.backgroundColor='#{a4jSkin.tableBackgroundColor}'" width="100%" var="acteurs" value="#{contexte.listeActeurs}" >
    	<a4j:support event="onRowDblClick" 
    		action="#{contexte.selectionLigne}"
    oncomplete="javascript:Richfaces.showModalPanel(modif)">
    					<f:setPropertyActionListener value="#{acteurs}" target="#{contexte.acteurSelectionne}" />
    				</a4j:support>
     
    				<f:facet name="header">
    					<rich:columnGroup>
    						<rich:column>
    							<h:outputText value="Nom" />
    						</rich:column>
    						<rich:column>
    							<h:outputText value="Prénom" />
    						</rich:column>
    					</rich:columnGroup>
    				</f:facet>
     
    				<rich:column>
    					<h:outputText value="#{acteurs.nom}" />
    				</rich:column>
    				<rich:column>
    					<h:outputText value="#{acteurs.prenom}" />
    				</rich:column>
    			</rich:dataTable>
    mais rien ne se passe et en débug je n'arrive jamais à mes points d'arrêt dans selectionLigne

  2. #2
    Membre expérimenté
    Inscrit en
    Mai 2004
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 335
    Par défaut
    il te manque les quotes dans le show modalpanel

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2008
    Messages
    197
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2008
    Messages : 197
    Par défaut
    Ajouter reRender="idModelpanel" dans le dataTable, et donner l'id de ton modelPanel.

  4. #4
    Membre éclairé Avatar de argonath
    Homme Profil pro
    Ingénieur d'Etudes
    Inscrit en
    Juillet 2009
    Messages
    248
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juillet 2009
    Messages : 248
    Par défaut
    En fait, pour l'instant ce n'est pas tellement l'affichage du modal panel qui posait problème, c'est que ni la méthode acteurSelectionne ni setActeurSelectionne ne sont appelées...

    hors tant que ceci n'est pas fait, l'affichage du modal panel (oncomplete) ne peut pas se faire.

    Pensant qu'il fallait récupérer les données envoyées par l'action, j'ai tenté de faire un binding vers un objet dans mon contexte, dans le doute une HtmlDataTable pour utiliser la méthode getRowData, mais évidemment, pas de conversion automatique de la dataTable richfaces vers HtmlDataTable.

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2008
    Messages
    197
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2008
    Messages : 197
    Par défaut
    Utilisé cette méthode:

    -dans le <rich:dateTable>, passer ton action comme une action Listener,
    actionListener="tonBean.processRowUpdate",
    la méthode processRowUpdate doit avoir un argument de type actionEvent;
    processRowUpdate(ActionEvent e){.....}

    -Utilisé l'attribut onRowClick de DataTable pour ouvrir ton model panel.
    onRowClick=" Richfaces.showModalPanel('modif');"

    -Utilisé reRender="modif" du DataTable.

    Avec un submitMode="ajax".(je pense).

    bonne chance.

  6. #6
    Membre éclairé Avatar de argonath
    Homme Profil pro
    Ingénieur d'Etudes
    Inscrit en
    Juillet 2009
    Messages
    248
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juillet 2009
    Messages : 248
    Par défaut
    Citation Envoyé par sal.gass Voir le message
    Utilisé cette méthode:

    -dans le <rich:dateTable>, passer ton action comme une action Listener,
    actionListener="tonBean.processRowUpdate",
    la méthode processRowUpdate doit avoir un argument de type actionEvent;
    processRowUpdate(ActionEvent e){.....}
    a4j:support event="onRowDblClick" est sensé instancier lui même un actionListener non ?

    bon j'ajoute le code de mon bean :

    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    import java.util.ArrayList;
    import java.util.List;
     
    public class ContexteUtilisateur {
     
    	private Acteur acteurSelectionne;
     
    	/** Liste des acteurs gérés par l'application. */
    	private List<Acteur> listeActeurs = null;
    	/** acteur courant sélectionné. */
    	private Acteur acteurCourant;
     
    	/** Liste des réalisateurs gérés par l'application. */
    	private List<Realisateur> listeRealisateurs = null;
    	/** Réalisateur courant sélectionné. */
    	private Realisateur realisateurCourant;
     
    	/** Liste des films gérés par l'application. */
    	private List<Video> listeVideos = null;
    	/** film courant sélectionné. */
    	private Video videoCourant;
     
    	public ContexteUtilisateur()
    	{
    		listeActeurs = new ArrayList<Acteur> ();
    		listeRealisateurs = new ArrayList<Realisateur> ();
    		listeVideos = new ArrayList<Video> ();
     
    		listeActeurs.add(new Acteur("B","M"));
    		listeActeurs.add(new Acteur("C","T"));
    		listeActeurs.add(new Acteur("C","O"));
    		listeRealisateurs.add(new Realisateur("Sb","S"));
    		listeVideos.add(new Video("Le Mépris"));
     
    	}
     
    	public List<Acteur> getListeActeurs()
    	{
    		return listeActeurs;
    	}
     
    	public void selectionLigne()
    	{
    		System.out.println(acteurSelectionne);
    	}
     
    	public void setActeurSelectionne(Acteur act)
    	{
    		acteurSelectionne=new Acteur(act.getNom(),act.getPrenom());
    	}
     
    	public Acteur getActeurSelectionne()
    	{
    		return acteurSelectionne;
    	}
    }

  7. #7
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2008
    Messages
    197
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2008
    Messages : 197
    Par défaut
    Oui comme tu a, juste il faut faire exécuter la méthode de récupération des valeurs du ligne sélectionné avant l'affichage du modelPanel,
    J'ai fait erreur l'ouverture du Panel doit se fait avec un oncomplete : oncomplete="Richfaces.showModalPanel('modifier');"

  8. #8
    Membre expérimenté
    Inscrit en
    Mai 2004
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 335
    Par défaut
    peut tu mettre l'output html du tableau.(ou fais le check toi meme du onrowdblclick)

  9. #9
    Membre éclairé Avatar de argonath
    Homme Profil pro
    Ingénieur d'Etudes
    Inscrit en
    Juillet 2009
    Messages
    248
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juillet 2009
    Messages : 248
    Par défaut
    Bon je retire le tag résolu car en fait, si je remplace l'outputText par un inputText rien ne va plus ^^ message d'erreur "Target Unreachable".

    J'imagine qu'il va chercher mes setters pour prévoir les changements mais ils y sont bien, donc je m'interroge sur la différence de traitement entre inputText et outputText

Discussions similaires

  1. Réponses: 8
    Dernier message: 05/11/2010, 12h00
  2. Réponses: 2
    Dernier message: 20/03/2009, 12h25
  3. [MySQL] problème de récupération des données d'une requête
    Par maniaco_jazz dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 19/02/2007, 12h12
  4. [MySQL] Problème de récupération des données dans une fonction
    Par highman dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 26/10/2006, 20h04
  5. récupération des données via une liste déroulante
    Par rahan_dave dans le forum Access
    Réponses: 1
    Dernier message: 13/10/2005, 12h27

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