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 :

Filter avec Combobox


Sujet :

JSF Java

  1. #1
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 15
    Par défaut Filter avec Combobox
    salut tout le monde,

    voila mon datatable :

    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
     
    <rich:dataTable value="#{projet.projetItems}" id="table" var="item" rules="all" rowClasses="jsfcrud_odd_row,jsfcrud_even_row" rows="3" reRender="ds">
     
        <rich:column filterBy="#{projet[items.id]}" filterEvent="onkeyup">
             <f:facet name="header">             
                 <h:outputText value="ID" />
             </f:facet>                       
             <h:outputText value="#{item.id}"  />
         </rich:column>
     
        <rich:column filterBy="#{item.nom}" filterEvent="onkeyup">
            <f:facet name="header">
                 <h:outputText value="nom" />
             </f:facet>
             <h:outputText value="#{item.nom}" />
         </rich:column>
     
        <f:facet name="footer">
                    <rich:datascroller id="ds"></rich:datascroller>
        </f:facet>
     
     </rich:dataTable>
    j'ai utilisé filterEvent et filterBy et ça marche trés bien, sauf que je veux au lieu de filtrer en utilisant une zone text, utiliser un combobox.

    je travail avec jsf v 1.2
    netbeans 6.8
    et hibernat 3.2.5

    merci d'avance.

  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
    tu peux utiliser l'external filtering avec dataTable comme décrit sur le site de Richfaces.

  3. #3
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 15
    Par défaut
    tout d'abord merci pour le feedback .

    j'ai essayé de faire l'external filter mais ça marche pas, il donne aucune erreur mais aucune action , voila le code :

    page list.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
     
    <rich:dataTable value="#{projet.projetItems}" id="table" var="item" rules="all" rowClasses="jsfcrud_odd_row,jsfcrud_even_row" rows="3" reRender="ds">
     
        <rich:column filterBy="#{item.id}" filterEvent="onkeyup">
             <f:facet name="header">             
                 <h:outputText value="ID" />
             </f:facet>                       
             <h:outputText value="#{item.id}"  />
         </rich:column>
     
        <rich:column id="nom" filterMethod="#{projet.methodFilterNom}"
                     filterValue="#{projet.filterNom}">
    		<f:facet name="header">                    
                        <h:selectOneMenu value="#{projet.filterNom}">
                                <f:selectItems value="#{projet.projetItemsAvailableSelectOne}" />
    				<a4j:support event="onchange" reRender="table" />
    		    </h:selectOneMenu>
    		</f:facet>
     
    		<h:outputText value="#{item.nom}" />
         </rich:column>
     
        <f:facet name="footer">
                    <rich:datascroller id="ds"></rich:datascroller>
        </f:facet>
     
     </rich:dataTable>
    voila le code que j'ai ajouté dans controller.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
     
    	private String filterNom = "";
     
             public String getFilterNom() {
                 return filterNom;
             }
     
             public void setFilterNom(String filterValue) {
                 this.filterNom = filterValue;
             }
     
    	public boolean methodFilterNom(Object current) {
    		Projet bean = (Projet) current;
    		if (filterNom.length() == 0) {
    			return true;
    		}
    		if (bean.getNom() != null && bean.getNom().toLowerCase().startsWith(filterNom.toLowerCase())) {
    			return true;
    		} else {
    			return false;
    		}
    	}

  4. #4
    Membre averti
    Inscrit en
    Octobre 2007
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 42
    Par défaut
    Si je ne me trompe pas, l'Object current n'est pas le bean mais la classe qui est utilisé pour chaque ligne de ton rich:datatable. Dans ton cas il s'agit de la classe de ta variable item (projet.projetItems)
    Regarde en mode débug que current est bien de type Project

  5. #5
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 15
    Par défaut
    je suis encore débutante en jsf et je comprend pas bien c'est quoi l'erreur exactement, voila la log me donne ça :

    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
     
    22 juil. 2010 15:43:18 org.apache.catalina.core.StandardWrapperValve invoke
    GRAVE: "Servlet.service()" pour la servlet Faces Servlet a généré une exception
    org.apache.jasper.el.JspPropertyNotFoundException: /projet/List.jsp(78,4) '#{projet.filterNom}' Property 'filterNom' not found on type classes.ProjetController
            at org.apache.jasper.el.JspValueExpression.getValue(JspValueExpression.java:104)
            at org.richfaces.component.UIColumn.getFilterValue(UIColumn.java:159)
            at org.richfaces.component.UIColumn.getFilterField(UIColumn.java:92)
            at org.richfaces.component.UIDataTable.createDataModel(UIDataTable.java:95)
            at org.ajax4jsf.component.UIDataAdaptorBase.getExtendedDataModel(UIDataAdaptorBase.java:621)
            at org.ajax4jsf.component.UIDataAdaptorBase.setRowKey(UIDataAdaptorBase.java:339)
            at org.richfaces.renderkit.AbstractTableRenderer.encodeTableStructure(AbstractTableRenderer.java:138)
            at org.richfaces.renderkit.html.DataTableRenderer.doEncodeBegin(DataTableRenderer.java:140)
            at org.richfaces.renderkit.html.DataTableRenderer.doEncodeBegin(DataTableRenderer.java:128)
            at org.ajax4jsf.renderkit.RendererBase.encodeBegin(RendererBase.java:100)
            at javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java:788)
            at javax.faces.component.UIData.encodeBegin(UIData.java:879)
            at org.ajax4jsf.component.UIDataAdaptorBase.encodeBegin(UIDataAdaptorBase.java:1225)
            at javax.faces.component.UIComponent.encodeAll(UIComponent.java:884)
            at javax.faces.render.Renderer.encodeChildren(Renderer.java:137)
            at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:812)
            at javax.faces.component.UIComponent.encodeAll(UIComponent.java:886)
            at javax.faces.component.UIComponent.encodeAll(UIComponent.java:892)
            at com.sun.faces.application.ViewHandlerImpl.doRenderView(ViewHandlerImpl.java:245)
            at com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:176)
            at org.ajax4jsf.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:100)
            at org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:176)
            at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:106)
            at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
            at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:144)
            at javax.faces.webapp.FacesServlet.service(FacesServlet.java:245)
            at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
            at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
            at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:206)
            at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
            at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:388)
            at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515)
            at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
            at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
            at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)
            at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
            at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
            at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
            at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
            at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
            at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
            at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
            at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
            at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
            at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
            at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
            at java.lang.Thread.run(Thread.java:595)

  6. #6
    Membre averti
    Inscrit en
    Octobre 2007
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 42
    Par défaut
    Quelle est la ligne 78 de List.jsp ?(stp met les quelques lignes avant et apres en différenciant la 78).

    Sinon pourquoi avoir mis

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    filterValue="#{projet.filterNom}"
    J'ai déjà fait du external filtering (pas avec des combobox par contre...) et je n'utilise pas du tout cet attribut.
    Supposition : C'est peut être cette ligne là qui te pose problème...

  7. #7
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 15
    Par défaut
    voila, la ligne 78 est marquée en rouge :

    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
    <rich:dataTable value="#{projet.projetItems}" id="table" var="item" rules="all" rowClasses="jsfcrud_odd_row,jsfcrud_even_row" rows="3" reRender="ds">
    
        <rich:column filterBy="#{item.id}" filterEvent="onkeyup">
             <f:facet name="header">             
                 <h:outputText value="ID" />
             </f:facet>
             <h:outputText value="#{item.id}"  />
         </rich:column>
    
    
    
        <rich:column id="nom" filterMethod="#{projet.methodFilterNom}"
                     filterValue="#{projet.filterNom}">
    
    
    
    
    
    		<f:facet name="header">                    
                        <h:selectOneMenu value="#{projet.filterNom}">
                                <f:selectItems value="#{projet.projetItemsAvailableSelectOne}" />
    				<a4j:support event="onchange" reRender="table" />
    		    </h:selectOneMenu>
    		</f:facet>
    
    		<h:outputText value="#{item.nom}" />
         </rich:column>
    
        <f:facet name="footer">
                    <rich:datascroller id="ds"></rich:datascroller>
        </f:facet>
    
     </rich:dataTable>
    en ce qui concerne {projet.filterNom} je sais pas a quoi ça sert, puisque je suis debutante, j'ai essayé d'appliquer ce qui est là : http://lmellouk.developpez.com/tutor...chfaces/#LIX-G


    et lorsque j'ai enlevé ça : filterValue="#{projet.filterNom}"
    il me donne l'erreur suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    javax.servlet.ServletException: /projet/List.jsp(78,4) '#{projet.methodFilterNom}' java.lang.NullPointerException
    	javax.faces.webapp.FacesServlet.service(FacesServlet.java:256)
    	org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:206)
    	org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
    	org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:388)
    	org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515)
    	org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)

  8. #8
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 15
    Par défaut
    toc toc quelqu'un a une reponse

  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
    tu as un NullPointerException, vérifie l'objet null dans ta fonction.

  10. #10
    Membre éprouvé Avatar de juridakus
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Maroc

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

    Informations forums :
    Inscription : Avril 2008
    Messages : 82
    Par défaut
    Citation Envoyé par hoijir Voir le message
    toc toc quelqu'un a une reponse
    Je crois comme l'a dit Romvaillant, l'objet current est de type du modèle de donnée que avec lequel tu alimentes le <rich:dataTable/> Donc filterNom doit être une propriété de cette classe. je crois que si tu enlèves le filterValue tu devras modifier aussi la signature de la fonction du filtre.

Discussions similaires

  1. [XL-2010] Filter avec Combobox.value
    Par bibbip35 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 24/10/2014, 22h59
  2. état avec combobox.
    Par JauB dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 28/02/2006, 13h56
  3. [vb.net]Boite de dialogue avec combobox
    Par le Daoud dans le forum Windows Forms
    Réponses: 2
    Dernier message: 02/12/2005, 12h53
  4. [VB.NET] Probleme avec ComboBox
    Par Aspic dans le forum VB.NET
    Réponses: 5
    Dernier message: 20/11/2005, 12h37
  5. [VB6] [Interface] Grille avec combobox
    Par khany dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 15/01/2003, 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