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

Struts 1 Java Discussion :

l'erreur javax.servlet.ServletException: No collection found


Sujet :

Struts 1 Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 115
    Par défaut l'erreur javax.servlet.ServletException: No collection found
    Bonjour,

    avant de poster mon problème j'ai fait 2 jours de recherche sans parvenir à un resultat

    l'idée est de charger un multibox d'une table de la base de données.

    de ce fait j'ai implémente une classe qui interroge la table.

    alors au niveau de l'action de la page authentification je recupere l'action form en question et je fais un set de la liste des élémént multibox à afficher mais
    l'erreur javax.servlet.ServletException: No collection found s'affichent


    voici la méthode récupérant les données :

    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
    	public Ressource[] loadUsers() throws SQLException {
     
    		ResultSet rs = connect.createStatement().executeQuery(
    				"SELECT Id, NAME  FROM employe");
    		Ressource[] listUsers = new Ressource[2];
    		int index = 0;
     
    		while (rs.next()) {
     
    			System.out.println("############# " + rs.getInt(1));
    			System.out.println("############# " + rs.getString(2));
     
    			listUsers[index] = new Ressource(rs.getInt(1), rs.getString(2));
    			index++;
    		}
     
    		return listUsers;
     
    	}

    la classe action d'authentification :


    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
     
     
    package bpo.action;
     
    import java.util.List;
     
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
     
    import org.apache.struts.action.Action;
    import org.apache.struts.action.ActionForm;
    import org.apache.struts.action.ActionForward;
    import org.apache.struts.action.ActionMapping;
     
    import bpo.action.bean.Ressource;
    import bpo.forms.LoginForm;
    import bpo.forms.UploadFileForm;
    import bpo.manager.FactureManager;
     
    public class LoginAction extends Action {
     
    	@Override
    	public ActionForward execute(ActionMapping mapping, ActionForm form,
    			HttpServletRequest request, HttpServletResponse response)
    			throws Exception {
     
    		LoginForm login = (LoginForm) form;
     
    		FactureManager factureManager = new FactureManager();
     
    		String direct = "";
     
    		Ressource[] listUsers = factureManager.loadUsers();
     
    		 UploadFileForm formupload = new UploadFileForm();
     
    		 formupload.setListUsers(listUsers);
     
    		boolean loginValide = factureManager.isloginPwdValide(login.getLogin(),
    				login.getPwd());
     
    		if (loginValide == true)
    			direct = "succes";
    		else
    			direct = "echec";
     
    		return mapping.findForward(direct);
     
    	}
     
    }


    l'action form concernant le multibox :


    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
     
     
    package bpo.forms;
     
    import java.util.List;
     
    import org.apache.struts.action.ActionForm;
    import org.apache.struts.upload.FormFile;
     
    import bpo.action.bean.Ressource;
     
    public class UploadFileForm extends ActionForm {
     
    	private Ressource[] listUsers = null;
    	private String[] userSelected = null;
     
    	private FormFile file;
     
    	public FormFile getFile() {
    		return file;
    	}
     
    	public void setFile(FormFile file) {
    		this.file = file;
    	}
     
    	public Ressource[] getListUsers() {
    		return listUsers;
    	}
     
    	public void setListUsers(Ressource[] listUsers) {
    		this.listUsers = listUsers;
    	}
     
    	public String[] getUserSelected() {
    		return userSelected;
    	}
     
    	public void setUserSelected(String[] userSelected) {
    		this.userSelected = userSelected;
    	}
     
    }


    et le tag au niveau de 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
     
     
     
    <tr>
    <logic:iterate id="item" name="uploadFileForm" property="listUsers">
    <td>
    <html:multibox name="uploadFileForm" property="userSelected" >
    <bean:write name="item" property="id"/>
    </html:multibox>
    <bean:write name="item" property="name"/>
    </td>
     
    </logic:iterate>
     
    </tr>



    merci pour votre aide

  2. #2
    Membre émérite Avatar de zorm
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Par défaut
    Bonjour,

    Je ne sais pas si ceci est la réponse mais je sais que ce qui peux causer des erreurs, c'est d'avoir des objets retournés null par le formulaire. Les exceptions sont lancées à l'appel de la jsp car il y a un problème de binding.

    Du coup, soit tu initialises tes objets dans le form, soit tu améliores un peu les getter

    1)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public class UploadFileForm extends ActionForm {
     private Ressource[] listUsers = new Ressource[]{};
     private String[] userSelected = new String[]{};
     ...
    OU
    2)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public Ressource[] getListUsers() {
     if(listUsers == null){
       return new Ressource[]{}
     }
     return listUsers;
    } 
    ...

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 115
    Par défaut
    merci beaucoup je n'ai plus l'erreur par contre j'ai du mal pour récupérer mes données de la base de données.

    j'ai passé la liste des objects à recuperer dans le multibox dans le constructeur dans l'objet ActionForm.

    voila le code
    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
     
    	public ActionForward execute(ActionMapping mapping, ActionForm form,
    			HttpServletRequest request, HttpServletResponse response)
    			throws Exception {
     
    		LoginForm login = (LoginForm) form;
     
    		FactureManager factureManager = new FactureManager();
     
    		String direct = "";
     
    		Ressource[] listUsers = factureManager.loadUsers();
     
    		UploadFileForm formupload = new UploadFileForm(listUsers);
     
    		boolean loginValide = factureManager.isloginPwdValide(login.getLogin(),
    				login.getPwd());
     
    		if (loginValide == true)
    			direct = "succes";
    		else
    			direct = "echec";
     
    		return mapping.findForward(direct);
     
    	}

    et du coup j'ai modifié au niveau de mon constructeur Action form :

    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
     
     
     
    public class UploadFileForm extends ActionForm {
     
    	private Ressource[] listUsers = new Ressource[] {};
    	private String[] userSelected = new String[] {};
     
    	private FormFile file;
     
    	public UploadFileForm(Ressource[] listUsers) {
     
    		this.listUsers = listUsers;
     
    	}
     
    	public FormFile getFile() {
    		return file;
    	}
     
    	public void setFile(FormFile file) {
    		this.file = file;
    	}
     
    	public Ressource[] getListUsers() {
    		return listUsers;
    	}
     
    	public void setListUsers(Ressource[] listUsers) {
    		this.listUsers = listUsers;
    	}
     
    	public String[] getUserSelected() {
    		return userSelected;
    	}
     
    	public void setUserSelected(String[] userSelected) {
    		this.userSelected = userSelected;
    	}
     
    }

    mais j'ai eu cette erreur sans pour autant la comprendre


    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
     
     
    exception
     
    javax.servlet.ServletException: Exception creating bean of class bpo.forms.UploadFileForm under form name uploadFileForm
    	org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:286)
    	org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
    	org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
     
    cause mère
     
    org.apache.jasper.JasperException: Exception creating bean of class bpo.forms.UploadFileForm under form name uploadFileForm
    	org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:460)
    	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:355)
    	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
    	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    	org.apache.struts.chain.commands.servlet.PerformForward.handleAsForward(PerformForward.java:113)
    	org.apache.struts.chain.commands.servlet.PerformForward.perform(PerformForward.java:96)
    	org.apache.struts.chain.commands.AbstractPerformForward.execute(AbstractPerformForward.java:54)
    	org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
    	org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:191)
    	org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:305)
    	org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:191)
    	org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
    	org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
    	org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
     
    cause mère
     
    javax.servlet.ServletException: Exception creating bean of class bpo.forms.UploadFileForm under form name uploadFileForm
    	org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:841)
    	org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:774)
    	org.apache.jsp.www.principale_jsp._jspService(principale_jsp.java:204)
    	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:331)
    	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
    	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    	org.apache.struts.chain.commands.servlet.PerformForward.handleAsForward(PerformForward.java:113)
    	org.apache.struts.chain.commands.servlet.PerformForward.perform(PerformForward.java:96)
    	org.apache.struts.chain.commands.AbstractPerformForward.execute(AbstractPerformForward.java:54)
    	org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
    	org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:191)
    	org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:305)
    	org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:191)
    	org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
    	org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
    	org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
     
    cause mère
     
    javax.servlet.jsp.JspException: Exception creating bean of class bpo.forms.UploadFileForm under form name uploadFileForm
    	org.apache.struts.taglib.html.FormTag.initFormBean(FormTag.java:536)
    	org.apache.struts.taglib.html.FormTag.doStartTag(FormTag.java:503)
    	org.apache.jsp.www.principale_jsp._jspService(principale_jsp.java:97)
    	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:331)
    	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
    	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    	org.apache.struts.chain.commands.servlet.PerformForward.handleAsForward(PerformForward.java:113)
    	org.apache.struts.chain.commands.servlet.PerformForward.perform(PerformForward.java:96)
    	org.apache.struts.chain.commands.AbstractPerformForward.execute(AbstractPerformForward.java:54)
    	org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
    	org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:191)
    	org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:305)
    	org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:191)
    	org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
    	org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
    	org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

  4. #4
    Expert confirmé

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Par défaut
    Si tu crées un constructeur avec paramètre dans l'ActionForm, il faut aussi en créer un sans paramètre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public UploadFileForm()
    {
       this.listUsers = new Ressource[] {}; 
       this.userSelected = new String[] {};
    }

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 115
    Par défaut
    c'est de là ou ça vient le problème et c'est réglé merci

    par contre j'ai ajouté le constructeur avec paramétrés pour que mon formulaire garde la liste des Users à afficher dans le multibox.....


    il y a l'action LoginAction associé à un actionForm Login Form au niveau de cette action j'ai instancié le formulaire UploadFileForm contenant la liste des Users à recuperer.

    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
     
     
    	public ActionForward execute(ActionMapping mapping, ActionForm form,
    			HttpServletRequest request, HttpServletResponse response)
    			throws Exception {
     
    		LoginForm login = (LoginForm) form;
     
    		FactureManager factureManager = new FactureManager();
     
    		String direct = "";
     
    		Ressource[] listUsers = factureManager.loadUsers();
     
    		UploadFileForm formupload = new UploadFileForm(listUsers);
     
    		System.out.println("00000000000000000" + listUsers[1].getName());
     
    		boolean loginValide = factureManager.isloginPwdValide(login.getLogin(),
    				login.getPwd());
     
    		if (loginValide == true)
    			direct = "succes";
    		else
    			direct = "echec";
     
    		return mapping.findForward(direct);
     
    	}
     
    }

    cette action nous mene à cette page jsp ou il y a le tag multibox :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <tr>
    <logic:iterate id="item" name="uploadFileForm" property="listUsers">
    <td>
    <html:multibox name="uploadFileForm" property="userSelected" >
    <bean:write name="item" property="id"/>
    </html:multibox>
    <bean:write name="item" property="name"/>
    </td>
     
    </logic:iterate>
     
    </tr>

    le probleme là c'est que quand j'affiche les information au niveau de l'action LoginAction ça marche bien , je les passe comme parametre du constructeur de UploadFileForm

    mais ma page jsp ne recupere aucun utilisateur


    voici mon fichier strust-config si ça peut aider ....


    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
     
     
    <?xml version="1.0" encoding="ISO-8859-1"?>
     
    <!DOCTYPE struts-config PUBLIC
    	"-//Apache Software Foundation//DTD Struts Configuration 1.1//EN"
    	"http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">
     
     
     
    <struts-config>
    	<form-beans>
    		<form-bean name="loginForm" type="bpo.forms.LoginForm" />
    		<form-bean name="uploadFileForm"
    			type="bpo.forms.UploadFileForm" />
    	</form-beans>
     
     
     
     
    	<action-mappings>
    		<action path="/loginAction" type="bpo.action.LoginAction"
    			validate="false" name="loginForm" scope="session">
     
    			<forward name="succes" path="/www/principale.jsp"></forward>
    			<forward name="echec" path="/www/index.jsp"></forward>
     
    		</action>
     
     
     
     
    		<action path="/uploadFile" type="bpo.action.UploadFileAction"
    			validate="false" name="uploadFileForm" scope="session">
     
    			<forward name="succes" path="/www/principale.jsp"></forward>
     
    		</action>
     
    	</action-mappings>
     
     
    	<message-resources
    		parameter="com.mycom.struts.resources.ApplicationResources" />
     
    </struts-config>

  6. #6
    Expert confirmé

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Par défaut
    Je n'instancie jamais une ActionForm dans une Action mais le scope du form-bean étant égal à session dans le mapping de l'Action, je pense qu'il ne devrait pas recréer une instance de l'ActionForm.
    Mais apparemment, il en recrée une quand même.

    Enfin, dans ton cas, tu n'as pas vraiment d'intérêt de définir listUsers comme propriété de l'ActionForm.
    Tu peux très bien mettre listUsers dans le scope request, ou session si tu en as besoin sur plusieurs pages, via un request.setAttribute ou session.setAttribute, et ensuite l'afficher dans la jsp comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <logic:iterate id="item" name="listUsers">
    <td>
    <html:multibox name="uploadFileForm" property="userSelected" >
    <bean:write name="item" property="id"/>
    </html:multibox>
    <bean:write name="item" property="name"/>
    </td>
     
    </logic:iterate>
    Ainsi, tu n'auras plus besoin de créer une instance d'UploadFileForm dans l'Action LoginAction.

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 26/06/2010, 10h23
  2. [Framework] erreur springframework javax.servlet.ServletException
    Par molesqualeux dans le forum Spring
    Réponses: 3
    Dernier message: 23/03/2010, 22h58
  3. Erreur dans la servlet(javax.servlet.ServletException)
    Par skudersky dans le forum Tomcat et TomEE
    Réponses: 4
    Dernier message: 06/03/2009, 08h37
  4. Réponses: 1
    Dernier message: 17/10/2007, 09h31
  5. struts erreur javax.servlet.ServletException
    Par catherine* dans le forum Struts 1
    Réponses: 2
    Dernier message: 30/08/2007, 08h50

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