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 :

richfaces et recherche


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Décembre 2006
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 32
    Par défaut richfaces et recherche
    Bonjour tout le monde,
    j'ai un probléme dans la recherche multicritéres en JSF et richfaces.Lorsque je saisis les informations pour faire ma recherche,j'utilise un <a4j:commanButton >pour affecter une valeur à un attribut dans mon bean qui est déclaré en mode session,mais lorsque je valide mon form de recherche,la valeur est assignée à l'attribut mais mon datatable ne se met pas à jour

    voici le code de ma page 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
     
    <rich:simpleTogglePanel switchType="client"  label="Rechercher Utilisateur">
     
     
                   <a4j:commandButton value="Search" reRender="sea,container,util" >
                       <a4j:actionparam name="jj" value="M" assignTo="#{userserv.hmida}"/>
     
                   </a4j:commandButton>
     
     
           </rich:simpleTogglePanel>
     
    <rich:panel  id="container">       
    <rich:dataTable id="util" value="#{user.users}" var="use" binding="#{user.table}"  width="50%" rowKeyVar="row" ajaxKeys="#{user.keys}" rendered="#{user.nbUsers>0}" >
    voici 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
     
    private String hmida;
    private List users = new ArrayList();
     
    public List getListUsers()
        {
     
        Session sess = HibernateUtil.currentSession();
     
        //Query q = sess.createQuery("from Utilisateur");
       Criteria cri = sess.createCriteria(Utilisateur.class)
       .add(Restrictions.like("usernom", hmida+'%'));
       users= cri.list();
     
        //sess.close();
     
        return users;
     
        }

  2. #2
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    quelques petites remarques:

    1- évite de faire des requêtes hibernate dans le getter, ce dernier est appelé plusieurs fois lors du cycle JSF -> problème de performance.

    2- essaye de faire une action avec le commandButton qui recalcule la liste.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a4j:commandButton actionListener="#{bean.processSearch}" ..../>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public void processSearch(ActionEvent e){
     
    users = ... ...;
    }
    3- il est inutile de faire un reRender sur uen zone qui peut ne pas être présente dans le dom

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    reRender="sea,container"
    au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    reRender="sea,container,util"
    4- pour la dataTable tu peux faire simplement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rendered="#{!empty user.users}"

  3. #3
    Membre averti
    Inscrit en
    Décembre 2006
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 32
    Par défaut
    j'ai essayé de faire ce que vous avez Sniper37 mais,le méme probléme persiste.ma datatable ne se met pas à jour

  4. #4
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    tu veux dire que la liste a changé au niveau du serveur et sur le client ça ne change pas?

    essaye d'inclure dataTable dans un a4j:outputPanel et faire le reRender sur celui ci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    <a4j:commandButton reRender="panel" .../>
     
    <a4j:outputPanel id="panel">
     
    <rich:dataTable .. ...>
    ..
    </rich:dataTable/>
    J'ai oublié une remaque, je ne sais pas si le binding est nécessaire dans ton cas, mais, il ne faut pas le mettre dans un bean session, ça cause quelques problèmes, notamment celui de duplicate id...

  5. #5
    Membre averti
    Inscrit en
    Décembre 2006
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 32
    Par défaut
    toujours ca marche pas .en fait si je teste avec un <h:outputtext> ,la valeur de l'attribut est affiché.mais pour la liste ,elle n'est pas rafarichie mais j'actualise la page

  6. #6
    Membre averti
    Inscrit en
    Décembre 2006
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 32
    Par défaut
    je veux dire méme si j'actualise la page.sinon si vous pouvez me donnez un exemple de recherche multicritéres en jsf et richfaces

  7. #7
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    tu as mis le tout dans un form ?
    recherche multicritères ça ne veux rien dire, c'est simplement un formulaire, et à toi de faire l'action de recherche dans ton bean.

  8. #8
    Membre averti
    Inscrit en
    Décembre 2006
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 32
    Par défaut
    non,j'ai fait un formulaire de recherche et un form pour l'afichage de la datatable.
    Le probléme c'est que la liste n'est pas mis à jour,c'est comme s'il n'est n'est pas rechargée
    pour la page 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
    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
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
     
    <fieldset>
            <legend>Liste des utilisateurs</legend>
           <a id="add" href="addUser.jsf" ><img src="img/add_user.png" border="0"></a>
           <rich:toolTip for="add" value="Ajouter Utilisateur"/>
           <rich:spacer height="20"/><br/>
           <rich:separator height="4" lineType="double" style="background-color:orange"/><br/>
           <rich:simpleTogglePanel switchType="client"  label="Rechercher Utilisateur">
               <h:form>
     
                   <a4j:commandButton value="Search" reRender="sea,container" >
     
                   <a4j:actionparam value="M" assignTo="#{userserv.hmida}"/>
                   </a4j:commandButton>
               </h:form>
     
     
           </rich:simpleTogglePanel>
           <h:form id="form">
           <h:outputText id="sea" value="#{userserv.hmida}"/>
           <h:outputText value="#{userserv.hmida}"/>
           <rich:separator height="4" lineType="double" style="background-color:orange"/><br/>
           <a4j:outputPanel  id="container">
           <h:graphicImage url="img/Danger_users.png" rendered="#{user.nbUsers==0}" style="padding-right:20px"/>
           <h:outputText value="La table des utilisateurs est vide" styleClass="vide" rendered="#{user.nbUsers==0}"/>
     
           <rich:dataTable id="util" value="#{user.users}" var="use" binding="#{user.table}"  width="50%" rowKeyVar="row" ajaxKeys="#{user.keys}" rendered="#{user.nbUsers>0}" >
     
                 <rich:column filterBy="#{use.usernom}" filterEvent="onkeyup" headerClass="col">
                    <f:facet name="header">
                       <h:outputText value="Nom & Prénom"></h:outputText>
                     </f:facet>
     
                     <h:outputText value="#{use}">
                         <f:converter converterId="userConvert"/>
                         </h:outputText>
                 </rich:column>
     
                 <rich:column filterBy="#{use.direction.dirlibele}" filterEvent="onkeyup" headerClass="col">
                   <f:facet name="header">
                       <h:outputText value="Direction"></h:outputText>
                     </f:facet>
                   <h:outputText value="#{use.direction.dirlibele}"></h:outputText>
                </rich:column>
                 <rich:column filterBy="#{use.groupe.goupelibele}" filterEvent="onkeyup" headerClass="col">
                                      <f:facet name="header">
                       <h:outputText value="Groupe"></h:outputText>
                     </f:facet>
                                      <h:outputText value="#{use.groupe.goupelibele}"></h:outputText>
                </rich:column>
                <rich:column filterBy="#{use.usertel}" filterEvent="onkeyup" headerClass="col">
                     <f:facet name="header">
                       <h:outputText value="Téléphone"></h:outputText>
                     </f:facet>
                     <h:outputText id="tel" value="#{use.usertel}"></h:outputText>
                </rich:column>
                <rich:column filterBy="#{use.userbureau}" filterEvent="onkeyup" headerClass="col">
                    <f:facet name="header">
                       <h:outputText value="N° Bureau"></h:outputText>
                     </f:facet>
                      <h:outputText value="#{use.userbureau}"></h:outputText>
                </rich:column>
            <rich:column>
            <f:facet name="header">
                       <h:outputText value="Modifier"></h:outputText>
                     </f:facet>
            <a4j:commandLink ajaxSingle="true" id="editlink" oncomplete="#{rich:component('editPanel')}.show()">
     
                <h:graphicImage url="img/edit_profile.png" style="border:0"/>
                <f:setPropertyActionListener value="#{use}" target="#{user.currentUser}"/>
                <f:setPropertyActionListener value="#{row}" target="#{user.currentRow}"/>
            </a4j:commandLink>
            <rich:toolTip for="editlink" value="Edit"/>
            </rich:column>
            <rich:column>
                     <f:facet name="header">
                       <h:outputText value="Infos"></h:outputText>
                     </f:facet>
    <a4j:commandLink ajaxSingle="true" id="viewlink" oncomplete="#{rich:component('viewPanel')}.show()">
     
                <h:graphicImage url="img/search_user.png" style="border:0"/>
                <f:setPropertyActionListener value="#{use}" target="#{user.currentUser}"/>
                <f:setPropertyActionListener value="#{row}" target="#{user.currentRow}"/>
            </a4j:commandLink>
            <rich:toolTip for="viewlink" value="Infos"/>
            </rich:column>
            <rich:column>
                     <f:facet name="header">
                       <h:outputText value="Supprimer"></h:outputText>
                     </f:facet>
            <h:commandLink id="deletelink" action="#{user.deleteUser}" onclick="if (!confirm('Voulez vous vraiment Supprimer cette réclamation ?!')) return false">
                <h:graphicImage url="img/delete_user.png" style="border:0"/>
                <a4j:support reRender="util">
     
                <f:setPropertyActionListener value="#{use}" target="#{user.currentUser}"/>
                </a4j:support>
            </h:commandLink>
            <rich:toolTip for="deletelink" value="Supprimer"/>
            </rich:column>
            </rich:dataTable>
            </a4j:outputPanel>
    </fieldset>
    pour le 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
    64
    65
    66
    67
    68
    69
     
    private String hmida;
    private List users = new ArrayList();
     
    public List getListUsers()
        {
     
        Session sess = HibernateUtil.currentSession();
     
        //Query q = sess.createQuery("from Utilisateur");
       Criteria cri = sess.createCriteria(Utilisateur.class)
       .add(Restrictions.like("usernom", hmida+'%'));
       users= cri.list();
     
        //sess.close();
     
        return users;
     
        }
     
     
     
        public void updateUser(Utilisateur a) {
     
        org.hibernate.Session session=HibernateUtil.currentSession();
    	org.hibernate.Query req=session.createQuery("from Utilisateur as user where user.userid='"+a.getUserid()+"'");
        Utilisateur user = (Utilisateur)req.uniqueResult();
        Transaction tx = session.beginTransaction();
        user.setUsertel(a.getUsertel());
        user.setUserbureau(a.getUserbureau());
        user.setUseremail(a.getUseremail());
        user.setUsernom(a.getUsernom());
        user.setUserprenom(a.getUserprenom());
        session.save(user);
        tx.commit();
        session.evict(user);
        }
     
        public void addUser(Utilisateur a) {
            Session session = HibernateUtil.currentSession();
            Transaction tx = session.beginTransaction();
            session.save(a);
            tx.commit();
           session.evict(a);
     
    }
     
        public void deleteUser(Utilisateur a) {
            Session session = HibernateUtil.currentSession();
            Transaction tx = session.beginTransaction();
            session.delete(a);
            tx.commit();
            session.evict(a);
        }
     
        /**
         * @return the hmida
         */
        public String getHmida() {
            return hmida;
        }
     
        /**
         * @param hmida the hmida to set
         */
        public void setHmida(String hmida) {
            this.hmida = hmida;
        }
    }

  9. #9
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    Il faut mettre le commandButton et dataTable dans le même form.

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

Discussions similaires

  1. [Richface/JSF include] Recherche exemple
    Par Creenshaw dans le forum JSF
    Réponses: 2
    Dernier message: 08/12/2008, 15h12
  2. recherche des algorythmes pour images 2d
    Par exxos dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 24/05/2002, 13h46
  3. recherches des cours ou des explications sur les algorithmes
    Par Marcus2211 dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 19/05/2002, 22h18
  4. [PRO*C] Recherche information
    Par Anonymous dans le forum Interfaces de programmation
    Réponses: 2
    Dernier message: 04/04/2002, 17h53
  5. Recherche de documentation complète en algorithmes
    Par Anonymous dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 29/03/2002, 12h09

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