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 :

JSF et dataModel


Sujet :

JSF Java

  1. #1
    Membre confirmé
    Développeur informatique
    Inscrit en
    Août 2007
    Messages
    118
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2007
    Messages : 118
    Par défaut JSF et dataModel
    Dans mon application JSF, je commance par cette fonction dans mon managed bean "MonBean":

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public String find() {
            String sql = "SELECT p FROM Personnes p";
            java.util.List lst = crudBean.getDataList(sql);
            list.setWrappedData(lst);
            return "ok";
        }
    Suite à la configuration dans faces-config.xml la page suivante est affichée:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <rich:dataTable id ="table1" value="#{MonBean.list}" var="lst">
       <f:facet name="header">
          <h:outputText value="Liste des vol selon le ACB"/>
       </f:facet>
    
    <!-- Affichage d'autres colonnes ....-->
    
       <rich:column>
          <f:facet name="header">
             <h:outputText value="supprimer"/>
          </f:facet>
          <h:commandLink  id="link1" action="#{AcbFiles.suppr}" value="supprimer"/>
       </rich:column>
    </rich:dataTable>
    et dans mon managed bean "MonBean" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    private DataModel list;
    //Avec le getter et setter de list;
    public String suppr() {
            Personnes p = (Personnes ) list.getRowData();
            String sql = "SELECT p FROM Personnes p WHERE p.id=" + p.getId();
            crudBean.removeData(sql);
            return find();
        }
    Mon problème est que :
    Quand je clique sur supprimer, c'est toujour la dernière ligne qui est supprimée!!
    Quand j'ai verifié la valeur de p.getId(), quelque soit la ligne sur laquelle je clique, le resultat de p.getId() est toujours le id de la dernière ligne!!

    Je n'arrive pas à comprendre ce qui se passe!!
    Pouvez-vous svp m'aider sur ce point?

  2. #2
    Rédacteur
    Avatar de JauB
    Homme Profil pro
    Freelancer
    Inscrit en
    Octobre 2005
    Messages
    1 792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Maroc

    Informations professionnelles :
    Activité : Freelancer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 792
    Par défaut
    Salut,
    j'ai essayé de monter un exemple sans utiliser RichFaces, mais juste avec le composant standard DataTable, voici le code 'qui marche bien: je récupère bien a ligne active' :
    Managed 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
    57
    58
    59
    60
    61
    62
    63
     
    package controller;
     
    //import java.util.ArrayList;
    import java.util.ArrayList;
    import java.util.List;
     
    import javax.faces.model.DataModel;
    import javax.faces.model.ListDataModel;
     
    import model.Commande;
     
     
    public class ListingCmd {
     
    	private List commandes;
    	private DataModel commandes2;
     
    	public ListingCmd(){
     
    		commandes = new ArrayList();
    		commandes2 =  new ListDataModel();
     
    		commandes.add(new Commande("admin","MicroChoix", 3, "PC"));
    		commandes.add(new Commande("admin","Amazon", 2, "Livres"));
    		commandes.add(new Commande("test","Amazon", 5, "XBOX"));
     
    		commandes2.setWrappedData(commandes);
     
    	}
     
    	public List getCommandes() {
    		return commandes;
    	}
     
    	public void setCommandes(List commandes) {
    		this.commandes = commandes;
    	}
     
     
    	public DataModel getCommandes2() {
    		return commandes2;
    	}
     
    	public void setCommandes2(DataModel commandes2) {
    		this.commandes2 = commandes2;
    	}
     
    	public String navigate(){
    		return "ok";
     
    	}
     
    	public String suppr() {
     
    		Commande cmd = (Commande) commandes2.getRowData();
           System.out.println("ici " + cmd.getArticle());
           //p.getId();
            return null;
        }
     
     
    }
    La page JSF:
    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
     
    <%@ page contentType="text/html"%>
    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="html"%>
    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="core"%>
    <core:view>
    	<html:form>
     
    		<h1><html:outputText value="Liste des commandes" /></h1>
    		<html:dataTable value="#{ListingCmd.commandes2}" var="cmd" border="1">
     
    			<html:column>
    				<core:facet name="header">
    					<core:verbatim>Demandeur</core:verbatim>
    				</core:facet>
    				<html:outputText value="#{cmd.demandeur}" />
     
    			</html:column>
    			<html:column>
    				<core:facet name="header">
    					<core:verbatim>Fournisseur</core:verbatim>
    				</core:facet>
    				<html:outputText value="#{cmd.fournisseur}" />
    			</html:column>
    			<html:column>
    				<core:facet name="header">
    					<core:verbatim>Quantité</core:verbatim>
    				</core:facet>
    				<html:outputText value="#{cmd.quantite}" />
    			</html:column>
    			<html:column>
    				<core:facet name="header">
    					<core:verbatim>Article</core:verbatim>
    				</core:facet>
    				<html:outputText value="#{cmd.article}" />
    			</html:column>
     
    			<html:column>
    				<core:facet name="header">
    					<html:outputText value="supprimer" />
    				</core:facet>
    				<html:commandLink id="link1" action="#{ListingCmd.suppr}"
    					value="supprimer" />
    			</html:column>
     
     
     
     
    		</html:dataTable>
    		<br>
     
    		<html:commandButton value="Test..." action="#{ListingCmd.navigate}" />
    		<br>
     
     
    	</html:form>
    </core:view>
    En cliquant sur supprimer, la ligne active est bien récupérer, ici j'affiche l'article d'une commande.
    Bon courage
    Mes articles, Mon Blog

    Rubrique Jasper/iReport :
    ------- Forum Jasper --------
    ----- FAQ Jasper/iReport -----


  3. #3
    Membre confirmé
    Développeur informatique
    Inscrit en
    Août 2007
    Messages
    118
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2007
    Messages : 118
    Par défaut
    J'ai résolut le problème en supprimant le filtre des colonnes!!

    Le filtre fonctionnait très bien mais empêchait la détection de la ligne sélectionnée!!!!

    est ce un bug de richfaces?

  4. #4
    Membre confirmé
    Développeur informatique
    Inscrit en
    Août 2007
    Messages
    118
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2007
    Messages : 118
    Par défaut
    Merci JauB,
    Je n’avais pas lu ton post avant d'ajouter le mien.
    Je tien à te dire que j'ai fait exactement comme ce que tu as proposé:

    J'ai réécrit mon code sans richfaces, puis j'ai commencer à remplacer le code <h:dataTable> par <rich:dataTable> tout en essayant la suppression qui marche très bien avec le <h:dataTable>

    Le problème était apparu de nouveau quand j'ai utilisé les filtre du tag <rich:dataTable>

    Pour l'instant, j'ai abandonné l'utilisation du filtre (Alors que je l'avais beaucoup apprécié) en attendant qu'une nouvelle version de richfaces soit disponible ou bien que je trouve un moyen pour détourner ce problème.

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

Discussions similaires

  1. JSF vs Struts
    Par peuh dans le forum JSF
    Réponses: 22
    Dernier message: 06/04/2013, 22h49
  2. DataModel de JSF vers Excel et PDF
    Par amariasoft dans le forum JSF
    Réponses: 3
    Dernier message: 20/05/2009, 17h06
  3. Réponses: 1
    Dernier message: 26/08/2004, 16h23
  4. [ JSF ][ Struts ] Intégration JSF et Struts
    Par tiSioux dans le forum JSF
    Réponses: 10
    Dernier message: 26/07/2004, 11h10
  5. [Plugin]Plugin JSF pour eclipe
    Par yanis97 dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 07/07/2004, 14h50

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