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 :

bean declare dans faces-config.xml non reconnu dans la JSP


Sujet :

JSF Java

  1. #1
    Membre à l'essai
    Inscrit en
    Juillet 2007
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 23
    Points : 18
    Points
    18
    Par défaut bean declare dans faces-config.xml non reconnu dans la JSP
    Bonjour a tout le monde !!

    J'ai une classe Compte que jai declare dans mon fichier de configuration : faces-config.xml je lai appele : compte. Au niveau de ma jsp quand je mets : #{compte.create} sachant que : create est une fonction public de la classe Compte , il me sort lerreur suivante : impossible d'instancier la classe Compte

    jespere que quelqu'un pourra maider

    merci beaucoup

  2. #2
    Membre confirmé Avatar de JoloKossovar
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    532
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 532
    Points : 576
    Points
    576
    Par défaut
    Salut ^^
    Montre le code de ta classe compte ?

  3. #3
    Membre averti
    Inscrit en
    Mai 2004
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 335
    Points : 332
    Points
    332
    Par défaut
    fournit la classe de ton bean et la portion de faces config ou tu le declare et comment tu luis fais appelle dans ton jsp

  4. #4
    Membre à l'essai
    Inscrit en
    Juillet 2007
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 23
    Points : 18
    Points
    18
    Par défaut Le code de ma class compte et le faces_config aussi
    LA classe Compte
    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
    package bank.controler;
     
    import java.util.Iterator;
    import java.util.List;
     
    import bank.model.Account;
    import bank.model.Application;
    import bank.model.Bank;
    import bank.model.Compte;
    import bank.model.Customer;
    import bank.view.ListView;
     
    public class AccountControler {
     
    	private BankControler bankControler;
    	private CustomerControler customerControler ;
    	private Account currentCompte;
     
     
     
    	public List<Customer> getCustomers() {
    		//return 	bankControler.getCurrentBank().getCustomers();
    		return null;
    	}
     
     
    	public List<Account> getCurrentCustomerAccounts() {
    		 return getCurrentCustomer().getAccounts();
    	}
     
    	public Customer getCurrentCustomer()
    	{
    		return customerControler.getCurrentCustomer();
    	}
     
    	public void newCompte() {
    		System.out.println("passer par save ou create  !! ");		
    		System.out.println("fin traitement creation !!");
    	}
     
    	public void deleteCompte(Compte compte) {
    		System.out.println("passer par delete !! ");
    	}
     
    	public String applyCustomer() {
    		System.out.println("apply");return "";
    	}
     
    	public String cancelBank() {
    		System.out.println("cancel");return "editAccount";
    	}
     
    	public String createCompte() {
    		System.out.println("create New Compte");return "editAccount";
    	}
     
    	public String saveCompte(){
    		System.out.println("save");
    		//saveBank(currentBank);
    		return "";
    	}
     
    	public void deleteCompte_(Account currentCompte2){
    	}	
    	public String editBank() {
    		System.out.println("edit");	return "";
    	}
    	public String showCompte() {
    		System.out.println("showCompte");return "";
    	}
     
     
    	public BankControler getBankControler() {
    		return bankControler;
    	}
     
     
    	public void setBankControler(BankControler bankControler) {
    		this.bankControler = bankControler;
    	}
     
     
    	public CustomerControler getCustomerControler() {
    		return customerControler;
    	}
     
     
    	public void setCustomerControler(CustomerControler customerControler) {
    		this.customerControler = customerControler;
    	}
     
     
    	public Account getCurrentCompte() {
    		return currentCompte;
    	}
     
     
    	public void setCurrentCompte(Account currentCompte) {
    		this.currentCompte = currentCompte;
    	}
    }
    Le code de mon fichier faces_config.xml :
    Code xml : 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
     
    <?xml version="1.0"?>
    <!DOCTYPE faces-config PUBLIC "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN"
                                  "http://java.sun.com/dtd/web-facesconfig_1_0.dtd">
    <faces-config>
     <managed-bean>
      <managed-bean-name>accountControler</managed-bean-name>
      <managed-bean-class>bank.controler.AccountControler</managed-bean-class>
      <managed-bean-scope>session</managed-bean-scope>
     </managed-bean>
     <navigation-rule>
      <navigation-case>
       <from-outcome>editAccount</from-outcome>
       <to-view-id>/pages/Account.jsp</to-view-id>
      </navigation-case>
     </navigation-rule>
     <application>
      <locale-config>
       <default-locale>en</default-locale>
       <supported-locale>fr</supported-locale>
      </locale-config>
     </application>
    </faces-config>

    NB : ma classe Compte == AccountControler

    MErci

  5. #5
    Membre averti
    Inscrit en
    Mai 2004
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 335
    Points : 332
    Points
    332
    Par défaut
    ton bean est accountController pas Compte regarde mieux ton faces-config

  6. #6
    Membre à l'essai
    Inscrit en
    Juillet 2007
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 23
    Points : 18
    Points
    18
    Par défaut
    par rapport ma classe compte je vais donner un peu plus de detail :

    jai une classe Compte dans mon package model ( La ou il ya mes classes metiers) .

    ensuite jai une autre classe AccountControler dans un autre package controler
    cette classe travail sur les objects Compte et c cette classe que je declare dans mon faces-config.

    et c'est cette classe la qu'il n'arrive pas à instancier

    JEspere que jetais un peu clair dans mon explications

    MErci

  7. #7
    Expert éminent
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Points : 7 679
    Points
    7 679
    Par défaut
    Bonjour.
    Du moment que compte n'est pas declaré dans faces-config, l'ecriture #{compte.create} cause une erreur. Point barre.

    Sinon, penses à nous fournir l'erreur exacte (le stackTrace + pas tout le code mais la prtie qui le génère)


  8. #8
    Membre averti
    Inscrit en
    Mai 2004
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 335
    Points : 332
    Points
    332
    Par défaut
    salut quand tu fais #{compte.create}
    ca veux dire quoi compte pour toi????????
    compte doit etre specifier dans faces-config

    ps : je te conseille vivement de lire (bien) un tutorial sur jsf

  9. #9
    Membre à l'essai
    Inscrit en
    Juillet 2007
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 23
    Points : 18
    Points
    18
    Par défaut
    Je vais essayer de reprendre :

    J'ai une classe Compte , j'ai une autre classe AccountControler qui travail sur les objects de cette classe compte . LA classe que jai besoin de declare dans mon faces config c'est : AccountControler et non pas Compte ( JE mexcuses si javais mal explique ceci au debut)

    pour le code de ma classe AccountController que je declare dans mon faces-config et le suivant ( c un code tres simplifie pr voir juste s'il arrive appeler correctement les fonctions )
    package bank.controler;

    import java.util.Iterator;
    import java.util.List;

    import bank.model.Account;
    import bank.model.Application;
    import bank.model.Bank;
    import bank.model.Compte;
    import bank.model.Customer;
    import bank.view.ListView;

    public class AccountControler {

    private BankControler bankControler;
    private CustomerControler customerControler ;
    private Account currentCompte;


    public List<Customer> getCustomers() {
    //return bankControler.getCurrentBank().getCustomers();
    return null;
    }


    public List<Account> getCurrentCustomerAccounts() {
    return getCurrentCustomer().getAccounts();
    }

    public Customer getCurrentCustomer()
    {
    return customerControler.getCurrentCustomer();
    }

    public void newCompte() {
    System.out.println("passer par save ou create !! ");
    System.out.println("fin traitement creation !!");
    }

    public void deleteCompte(Compte compte) {
    System.out.println("passer par delete !! ");
    }

    public String applyCustomer() {
    System.out.println("apply");return "";
    }

    public String cancelBank() {
    System.out.println("cancel");return "editAccount";
    }

    public String createCompte() {
    System.out.println("create New Compte");return "editAccount";
    }

    public String saveCompte(){
    System.out.println("save");
    //saveBank(currentBank);
    return "";
    }

    public void deleteCompte_(Account currentCompte2){
    }
    public String editBank() {
    System.out.println("edit"); return "";
    }
    public String showCompte() {
    System.out.println("showCompte");return "";
    }


    public BankControler getBankControler() {
    return bankControler;
    }


    public void setBankControler(BankControler bankControler) {
    this.bankControler = bankControler;
    }


    public CustomerControler getCustomerControler() {
    return customerControler;
    }


    public void setCustomerControler(CustomerControler customerControler) {
    this.customerControler = customerControler;
    }


    public Account getCurrentCompte() {
    return currentCompte;
    }


    public void setCurrentCompte(Account currentCompte) {
    this.currentCompte = currentCompte;
    }
    }
    Le code de mon faces-config :

    <?xml version="1.0"?>
    <!DOCTYPE faces-config PUBLIC "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN"
    "http://java.sun.com/dtd/web-facesconfig_1_0.dtd">
    <faces-config>
    <managed-bean>
    <managed-bean-name>accountControler</managed-bean-name>
    <managed-bean-class>bank.controler.AccountControler</managed-bean-class>
    <managed-bean-scope>session</managed-bean-scope>
    </managed-bean>
    <navigation-rule>
    <navigation-case>
    <from-outcome>editAccount</from-outcome>
    <to-view-id>/pages/Account.jsp</to-view-id>
    </navigation-case>
    </navigation-rule>
    <application>
    <locale-config>
    <default-locale>en</default-locale>
    <supported-locale>fr</supported-locale>
    </locale-config>
    </application>
    </faces-config>
    Lerreur generee est :
    description Le serveur a rencontré une erreur interne () qui l'a empêché de satisfaire la requête.

    exception

    javax.servlet.ServletException: javax.faces.FacesException: Cant instantiate class: bank.controler.CompteControler.. bank.controler.CompteControler
    javax.faces.webapp.FacesServlet.service(FacesServlet.java:256)
    org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)

    cause mère

    javax.faces.FacesException: javax.faces.FacesException: Cant instantiate class: bank.controler.CompteControler.. bank.controler.CompteControler
    com.sun.faces.application.ApplicationAssociate.createAndMaybeStoreManagedBeans(ApplicationAssociate.java:537)
    com.sun.faces.el.ManagedBeanELResolver.getValue(ManagedBeanELResolver.java:82)
    javax.el.CompositeELResolver.getValue(CompositeELResolver.java:53)
    com.sun.faces.el.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:64)
    org.apache.el.parser.AstIdentifier.getValue(AstIdentifier.java:45)
    org.apache.el.parser.AstValue.getTarget(AstValue.java:42)
    org.apache.el.parser.AstValue.invoke(AstValue.java:127)
    org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)
    org.apache.jasper.el.JspMethodExpression.invoke(JspMethodExpression.java:68)
    javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:77)
    com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:91)
    javax.faces.component.UICommand.broadcast(UICommand.java:383)
    javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:447)
    javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:752)
    com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:97)
    com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
    com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
    javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)
    org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)

    cause mère

    javax.faces.FacesException: Cant instantiate class: bank.controler.CompteControler.. bank.controler.CompteControler
    com.sun.faces.config.ManagedBeanFactoryImpl.newInstance(ManagedBeanFactoryImpl.java:282)
    com.sun.faces.application.ApplicationAssociate.createAndMaybeStoreManagedBeans(ApplicationAssociate.java:527)
    com.sun.faces.el.ManagedBeanELResolver.getValue(ManagedBeanELResolver.java:82)
    javax.el.CompositeELResolver.getValue(CompositeELResolver.java:53)
    com.sun.faces.el.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:64)
    org.apache.el.parser.AstIdentifier.getValue(AstIdentifier.java:45)
    org.apache.el.parser.AstValue.getTarget(AstValue.java:42)
    org.apache.el.parser.AstValue.invoke(AstValue.java:127)
    org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)
    org.apache.jasper.el.JspMethodExpression.invoke(JspMethodExpression.java:68)
    javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:77)
    com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:91)
    javax.faces.component.UICommand.broadcast(UICommand.java:383)
    javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:447)
    javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:752)
    com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:97)
    com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
    com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
    javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)
    org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)

    cause mère

    java.lang.ClassNotFoundException: bank.controler.CompteControler
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1358)
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1204)
    java.lang.ClassLoader.loadClassInternal(Unknown Source)
    java.lang.Class.forName0(Native Method)
    java.lang.Class.forName(Unknown Source)
    com.sun.faces.config.ManagedBeanFactoryImpl.newInstance(ManagedBeanFactoryImpl.java:274)
    com.sun.faces.application.ApplicationAssociate.createAndMaybeStoreManagedBeans(ApplicationAssociate.java:527)
    com.sun.faces.el.ManagedBeanELResolver.getValue(ManagedBeanELResolver.java:82)
    javax.el.CompositeELResolver.getValue(CompositeELResolver.java:53)
    com.sun.faces.el.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:64)
    org.apache.el.parser.AstIdentifier.getValue(AstIdentifier.java:45)
    org.apache.el.parser.AstValue.getTarget(AstValue.java:42)
    org.apache.el.parser.AstValue.invoke(AstValue.java:127)
    org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)
    org.apache.jasper.el.JspMethodExpression.invoke(JspMethodExpression.java:68)
    javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:77)
    com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:91)
    javax.faces.component.UICommand.broadcast(UICommand.java:383)
    javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:447)
    javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:752)
    com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:97)
    com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
    com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
    javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)
    org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)

    Voila le code de la JSP qui fait l'appel :
    <?xml version="1.0" encoding="ISO-8859-1" ?>
    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
    <title>bank form</title>
    <link rel="stylesheet" type="text/css"
    href="<%= request.getContextPath() %>/css/basic.css" />
    </head>
    <body>
    <f:view>
    <h:panelGroup>
    <h:form id="bankForm">
    <h:panelGrid columns="2" styleClass="countryFormTable" >
    <h:outputLabel for="name" value="id : "/>
    <h:panelGroup>
    <h:inputText id="id" value="#id :" required="true" />
    </h:panelGroup>


    <h:outputLabel for="name" value="Solde : "/>
    <h:panelGroup>
    <h:inputText id="solde" value="solde" required="true" />
    </h:panelGroup>


    <h:panelGroup>
    <h:commandButton action="#{accountControler.createCompte}" value="Create Account " />
    <h:commandButton action="#{accountControler.newCompte}" value="save" />
    <f:verbatim>&nbsp;</f:verbatim>
    <h:commandButton action="#{accountControler.cancel}" immediate="true" value="cancel" />
    <f:verbatim>&nbsp;</f:verbatim>
    <f:verbatim>&nbsp;</f:verbatim>
    <f:verbatim>&nbsp;</f:verbatim>

    </h:panelGroup>

    <f:verbatim>&nbsp;</f:verbatim>
    </h:panelGrid>
    </h:form>
    </h:panelGroup>
    </f:view>
    </body>
    </html>

  10. #10
    Membre averti
    Inscrit en
    Mai 2004
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 335
    Points : 332
    Points
    332
    Par défaut
    pourrait tu dire c'est quoi ce CompteControler ?????

  11. #11
    Membre habitué Avatar de medbouh
    Inscrit en
    Mars 2006
    Messages
    152
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Mars 2006
    Messages : 152
    Points : 171
    Points
    171
    Par défaut
    Citation Envoyé par seddik_saber Voir le message
    pourrait tu dire c'est quoi ce CompteControler ?????
    exactement ce que j'allait demande, car c'est l'origine de l'erreur, néanmoins je pense que ca se trouve dans le package
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    package bank.controler;
    declare dans la classe AccountControler.
    ????

  12. #12
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    il te faut lier a l'action de ton bouton :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AccountController.CreateCompte
    Mehode qui va utiliser Compte.Create pour creer un compte.

    Le principe est de declarer ton bean controller dans le faces config puis de le manipuler dans ta JSF.
    C'est lui qui va rercuperer les actions a faire et les executer.

Discussions similaires

  1. Réponses: 2
    Dernier message: 26/03/2015, 09h44
  2. peut on un parametre dans faces-config.xml
    Par xsight0 dans le forum JSF
    Réponses: 1
    Dernier message: 23/06/2011, 15h06
  3. Réponses: 0
    Dernier message: 22/07/2009, 16h31
  4. Critère non reconnu dans la fonction DCount
    Par Ps4 dans le forum Access
    Réponses: 7
    Dernier message: 20/06/2005, 09h02
  5. [EJB] [JSP] Méthode EJB non reconnue dans jsp
    Par stago dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 06/07/2004, 09h52

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