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 :

Problème taille d'un String et checkbox coché


Sujet :

Struts 1 Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 96
    Points : 39
    Points
    39
    Par défaut Problème taille d'un String et checkbox coché
    Bonjour à tous

    J'ai un problème au niveau de la taille d'un tableau de String. Ce tableau contient tous les identifiants de mes Joueurs qui sont inscrit dans une équipe et je les affiche dans ma jsp comme ceci
    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
    <TABLE border="0">
    		<TBODY>
    			<TR>
    				<TH>Id du joueur</TH>
    				<TH>Pseudo</TH>
    				<TH>Supprimer</TH>
    			</TR>
    			<logic:iterate id="id_joueurs_equipe_id" name="BeanEquipe" property="id_joueurs_equipe" indexId="index">
    				<%if(id_joueurs_equipe_id!=null){ %>
    				<TR>
    					<TD><bean:write name="BeanEquipe" property='<%= "id_joueurs_equipe[" + index + "]" %>' /></TD>
    					<TD><bean:write name="BeanEquipe" property='<%= "pseudo_joueurs[" + index + "]" %>' /></TD>
    					<TD><html:checkbox property='<%="chk["+index+"]"%>'></html:checkbox></TD>
    					<TD><input type="hidden" name="id_joueurs_equipe" value = <%="\""+id_joueurs_equipe_id+"\""%>/></TD>        
    				</TR>
    				<%} %>
    			</logic:iterate>
     
    		</TBODY>
    	</TABLE>
    	<html:submit property="submit" value="Modifier" />&nbsp;&nbsp;
    Lorsque je coche un joueur quelconque, celui ci sera supprimer lorsque je clic sur mon bouton pour aller dans mon formulaire.

    Le traitement s'effectue comme cela dans mon ActionForm
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    int i=0;
            		while(id_joueurs_equipe[i]!=null){
            			check = (String) request.getParameter("chk["+i+"]");
            			if(check!=null){
            				int id_joueurs = Integer.parseInt(id_joueurs_equipe[i]);
                			JoueursDB player = JoueursDB.rechJoueursNum(id_joueurs);
            				player.setId_equipe(0);
            				player.modifier();
            			}
            			i++;
    Le problème c'est qu'il me renvoie toujours une exception quand il arrive à la valeur null du tableau
    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
    [3/01/08 10:25:27:188 CET] 0000002f ServletWrappe E   SRVE0068E: Impossible d'appeler la méthode service() sur le servlet action. Exception : java.lang.NullPointerException
    	at org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:441)
    	at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:279)
    	at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
    	at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:763)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
    	at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1212)
    	at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:629)
    	at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:2837)
    	at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:220)
    	at com.ibm.ws.webcontainer.VirtualHost.handleRequest(VirtualHost.java:204)
    	at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:1681)
    	at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:77)
    	at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:421)
    	at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation(HttpInboundLink.java:367)
    	at com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:94)
    	at com.ibm.ws.tcp.channel.impl.WorkQueueManager.requestComplete(WorkQueueManager.java:548)
    	at com.ibm.ws.tcp.channel.impl.WorkQueueManager.attemptIO(WorkQueueManager.java:601)
    	at com.ibm.ws.tcp.channel.impl.WorkQueueManager.workerRun(WorkQueueManager.java:934)
    	at com.ibm.ws.tcp.channel.impl.WorkQueueManager$Worker.run(WorkQueueManager.java:1021)
    	at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1332)
     
    [3/01/08 10:25:27:219 CET] 0000002f LocalTranCoor E   WLTC0017E: Ressources annulées car la méthode setRollbackOnly() a été appelée.
    [3/01/08 10:25:27:250 CET] 0000002f WebApp        E   SRVE0026E: [Erreur de servlet]-[action]: java.lang.NullPointerException
    	at org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:441)
    	at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:279)
    	at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
    	at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:763)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
    	at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1212)
    	at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:629)
    	at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:2837)
    	at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:220)
    	at com.ibm.ws.webcontainer.VirtualHost.handleRequest(VirtualHost.java:204)
    	at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:1681)
    	at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:77)
    	at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:421)
    	at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation(HttpInboundLink.java:367)
    	at com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:94)
    	at com.ibm.ws.tcp.channel.impl.WorkQueueManager.requestComplete(WorkQueueManager.java:548)
    	at com.ibm.ws.tcp.channel.impl.WorkQueueManager.attemptIO(WorkQueueManager.java:601)
    	at com.ibm.ws.tcp.channel.impl.WorkQueueManager.workerRun(WorkQueueManager.java:934)
    	at com.ibm.ws.tcp.channel.impl.WorkQueueManager$Worker.run(WorkQueueManager.java:1021)
    	at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1332)
    et j'ai remarqué également que si je coche la checkbox, il me retourne null également. Auriez-vous une solution à mon problème ?

    D'avance merci

  2. #2
    Expert éminent

    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
    Points : 7 778
    Points
    7 778
    Par défaut
    Dans l'ActionForm, il faudrait définir la propriété chk de type String[] avec getter et setter et l'initialiser dans la méthode reset comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public void reset(ActionMapping mapping, HttpServletRequest request)
    {
        this.chk=new String[0] ;
    }
    Ensuite, dans la jsp, il faudrait utiliser plutôt le tag html:multibox et l'initialiser avec la valeur de la propriété id_joueurs_equipe_id comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <html:multibox property="chk" value="${id_joueurs_equipe_id}"/>
    Et ensuite, dans l'Action exécutée au submit du formulaire, pour récupérer les id_joueurs_equipe_id cochés, tu pourrais coder ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    TonActionForm tonActionForm = (TonActionForm) form ;
    String[] chk = tonActionForm.getChk() ;
    Sinon, j'ai une remarque concernant le logic:iterate.
    En principe, au lieu de créer plusieurs tableaux de String, on crée plutôt une ArrayList d'objets.
    Par exemple, tu pourrais constituer une ArrayList d'objets Joueur et l'afficher comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <logic:iterate id="joueur" name="nomDuBean" property="listeJoueurs">
       <bean:write name="joueur" property="id"/>
       <bean:write name="joueur" property="pseudo"/>
       <html:multibox property="chk" value="${joueur.id}"/>
    </logic:iterate>
    Modératrice Java - Struts, Servlets/JSP, ...

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 96
    Points : 39
    Points
    39
    Par défaut
    Ok j'ai testé pour les checkbox et ça me renvoie l'id du joueurs, ce qui n'est pas plus mal, mais j'ai toujours une exception javaNullPointer ici

    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
    int i=0;
            		while(check[i]!= null){
            			System.out.println("i = "+i);
            			System.out.println("check = "+check[i]);
            			if(check!=null){
            				int id_joueurs = Integer.parseInt(id_joueurs_equipe[i]);
                			System.out.println("id joueur de l'équipe = "+id_joueurs);
                			JoueursDB player = JoueursDB.rechJoueursNum(id_joueurs);
            				player.setId_equipe(0);
            				player.modifier();
            				System.out.println("Succes");
            			}
            			i++;
            			//System.out.println("id joueur suivant de l'équipe = "+id_joueurs_equipe[i]);
            		}
    Au lieu de sortir de la boucle, il me sort l'exception, et je ne comprends pas pourquoi. Une petite aide pour cela ?
    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
    [3/01/08 15:38:59:703 CET] 00000037 ServletWrappe E   SRVE0068E: Impossible d'appeler la méthode service() sur le servlet action. Exception : java.lang.NullPointerException
    	at org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:441)
    	at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:279)
    	at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
    	at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:763)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
    	at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1212)
    	at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:629)
    	at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:2837)
    	at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:220)
    	at com.ibm.ws.webcontainer.VirtualHost.handleRequest(VirtualHost.java:204)
    	at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:1681)
    	at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:77)
    	at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:421)
    	at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation(HttpInboundLink.java:367)
    	at com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:94)
    	at com.ibm.ws.tcp.channel.impl.WorkQueueManager.requestComplete(WorkQueueManager.java:548)
    	at com.ibm.ws.tcp.channel.impl.WorkQueueManager.attemptIO(WorkQueueManager.java(Compiled Code))
    	at com.ibm.ws.tcp.channel.impl.WorkQueueManager.workerRun(WorkQueueManager.java:934)
    	at com.ibm.ws.tcp.channel.impl.WorkQueueManager$Worker.run(WorkQueueManager.java:1021)
    	at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java(Compiled Code))
     
    [3/01/08 15:38:59:750 CET] 00000037 LocalTranCoor E   WLTC0017E: Ressources annulées car la méthode setRollbackOnly() a été appelée.
    [3/01/08 15:38:59:766 CET] 00000037 WebApp        E   SRVE0026E: [Erreur de servlet]-[action]: java.lang.NullPointerException
    	at org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:441)
    	at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:279)
    	at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
    	at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:763)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
    	at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1212)
    	at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:629)
    	at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:2837)
    	at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:220)
    	at com.ibm.ws.webcontainer.VirtualHost.handleRequest(VirtualHost.java:204)
    	at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:1681)
    	at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:77)
    	at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:421)
    	at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation(HttpInboundLink.java:367)
    	at com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:94)
    	at com.ibm.ws.tcp.channel.impl.WorkQueueManager.requestComplete(WorkQueueManager.java:548)
    	at com.ibm.ws.tcp.channel.impl.WorkQueueManager.attemptIO(WorkQueueManager.java(Compiled Code))
    	at com.ibm.ws.tcp.channel.impl.WorkQueueManager.workerRun(WorkQueueManager.java:934)
    	at com.ibm.ws.tcp.channel.impl.WorkQueueManager$Worker.run(WorkQueueManager.java:1021)
    	at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java(Compiled Code))
    Ici je vais essayé d'envoyer la liste plutôt que les différents tableau String.

    EDIT : Pour l'ArrayList, il faut l'initialiser dans le bean ActionForm non ?

  4. #4
    Expert éminent

    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
    Points : 7 778
    Points
    7 778
    Par défaut
    Normalement, avec ma méthode, tu ne devrais avoir que les id cochés dans le tableau chk et donc, tu ne devrais jamais avoir null.

    Sinon, pour constituer l'ArrayList, tu dois bien avoir une méthode qui ressemble à la méthode rechNom_nat citée dans la précédente discussion non ?
    Modératrice Java - Struts, Servlets/JSP, ...

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 96
    Points : 39
    Points
    39
    Par défaut
    Ben là à vrai dire j'ai un peu du mal à suivre donc voilà, j'ai mis un peu de println un peu partout dans mon code pour afficher ce qu'il se passe dans la console donc voici le code que je fais
    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
    String[]check = beanEquipe.getChk();
            	System.out.println("taille = "+check.length);
    int i=0;
            		while(check[i]!= null){
            			System.out.println("i = "+i);
            			System.out.println("check = "+check[i]);
            			int id_joueurs = Integer.parseInt(check[i]);
                		System.out.println("id joueur de l'équipe = "+id_joueurs);
                		JoueursDB player = JoueursDB.rechJoueursNum(id_joueurs);
            			player.setId_equipe(0);
            			player.modifier();
            			System.out.println("Succes");
            			i++;
            			//System.out.println("id joueur suivant de l'équipe = "+id_joueurs_equipe[i]);
            		}
    Ce que j'obtiens dans la console :
    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
    [3/01/08 15:54:33:531 CET] 
    [3/01/08 15:54:33:562 CET] 00000036 SystemOut     O i = 0
    [3/01/08 15:54:33:562 CET] 00000036 SystemOut     O check = 8
    [3/01/08 15:54:33:562 CET] 00000036 SystemOut     O id joueur de l'équipe = 13
    [3/01/08 15:54:33:578 CET] 00000036 SystemOut     O Succes
    [3/01/08 15:54:33:578 CET] 00000036 ServletWrappe E   SRVE0068E: Impossible d'appeler la méthode service() sur le servlet action. Exception : java.lang.NullPointerException
    	at org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:441)
    	at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:279)
    	at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
    	at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:763)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
    	at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1212)
    	at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:629)
    	at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:2837)
    	at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:220)
    	at com.ibm.ws.webcontainer.VirtualHost.handleRequest(VirtualHost.java:204)
    	at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:1681)
    	at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:77)
    	at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:421)
    	at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation(HttpInboundLink.java:367)
    	at com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:94)
    	at com.ibm.ws.tcp.channel.impl.WorkQueueManager.requestComplete(WorkQueueManager.java(Compiled Code))
    	at com.ibm.ws.tcp.channel.impl.WorkQueueManager.attemptIO(WorkQueueManager.java(Compiled Code))
    	at com.ibm.ws.tcp.channel.impl.WorkQueueManager.workerRun(WorkQueueManager.java(Compiled Code))
    	at com.ibm.ws.tcp.channel.impl.WorkQueueManager$Worker.run(WorkQueueManager.java(Compiled Code))
    	at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java(Compiled Code))
     
    [3/01/08 15:54:33:672 CET] 00000036 LocalTranCoor E   WLTC0017E: Ressources annulées car la méthode setRollbackOnly() a été appelée.
    [3/01/08 15:54:33:734 CET] 00000036 WebApp        E   SRVE0026E: [Erreur de servlet]-[action]: java.lang.NullPointerException
    	at org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:441)
    	at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:279)
    	at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
    	at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:763)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
    	at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1212)
    	at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:629)
    	at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:2837)
    	at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:220)
    	at com.ibm.ws.webcontainer.VirtualHost.handleRequest(VirtualHost.java:204)
    	at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:1681)
    	at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:77)
    	at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:421)
    	at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation(HttpInboundLink.java:367)
    	at com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:94)
    	at com.ibm.ws.tcp.channel.impl.WorkQueueManager.requestComplete(WorkQueueManager.java(Compiled Code))
    	at com.ibm.ws.tcp.channel.impl.WorkQueueManager.attemptIO(WorkQueueManager.java(Compiled Code))
    	at com.ibm.ws.tcp.channel.impl.WorkQueueManager.workerRun(WorkQueueManager.java(Compiled Code))
    	at com.ibm.ws.tcp.channel.impl.WorkQueueManager$Worker.run(WorkQueueManager.java(Compiled Code))
    	at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java(Compiled Code))
    Rien qu'en regardant je vois qu'il l'id_joueurs ne reçoit pas le bon id :s.

    Je n'ai pas encore changer le code de la jsp, mais c'est vrai que quand j'y pense, je devrai commencer par là pour mettre l'ArrayList. Sinon oui j'ai une méthode qui va chercher tous les joueurs qui sont dans cette équipe, mais je les mets dans un Vector (je travaille qu'avec ça depuis que j'ai appris le Java à l'école :/)

    Donc disons que j'aurais mon Vector liste_joueurs qui va contenir tous mes joueurs de l'équipe. Je l'envoie vers la jsp avec request.setAttribute("liste_joueurs",liste_joueurs);.

    Je veux afficher leur id et le pseudo dans la jsp, tu peux m'écrire plus ou moins le code que je dois mettre dans le jsp et je suppose qu'ensuite pour récupérer le tableau dans mon Action je dois faire un request.getAttribute("liste_joueurs");?

  6. #6
    Expert éminent

    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
    Points : 7 778
    Points
    7 778
    Par défaut
    3/01/08 15:54:33:578 CET] 00000036 ServletWrappe E SRVE0068E: Impossible d'appeler la méthode service() sur le servlet action. Exception : java.lang.NullPointerException
    at org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:441)
    En regardant de plus près le message d'erreur, il semblerait que tu aies un problème de forward.
    Le nom du forward codé dans l'Action correspond-il bien à celui codé dans le mapping de l'Action dans le struts-config.xml ?

    Sinon, si tu as une méthode qui renvoie un Vector des joueurs qui sont dans l'équipe, ça fonctionnera aussi.

    Peux-tu montrer le code de cette méthode pour que je puisse t'aider à coder le logic:iterate de la jsp ?

    Tu as toujours le choix : soit tu fais un setAttribute de liste_joueurs (pour info, si tu suis les conventions de nommage Java, elle devrait plutôt s'appeler listeJoueurs), soit tu définis liste_joueurs comme propriété de l'ActionForm et tu l'initialises via le setter.

    Et pour récupérer le tableau des id cochés dans l'Action, je t'ai déjà donné le code précédemment, soit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    TonActionForm tonActionForm = (TonActionForm) form ;
    String[] chk = tonActionForm.getChk() ;
    Modératrice Java - Struts, Servlets/JSP, ...

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 96
    Points : 39
    Points
    39
    Par défaut
    Ben je ne pense pas que ça soit un problème de forward car quand je ne coche aucun joueur, il continue correctement son chemin si je puis dire.

    Sinon pour charger dans un les joueurs d'une équipe dans un Vector je fais comme cela.
    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
    public static Vector rechJoueursEquipe(int num_equipe){
            Vector plusieurs=new Vector();
            String req = "select * from joueurs where id_equipe = ?";	
            erreur=null;
            try{
                PreparedStatement pstm = dbConnect.prepareStatement(req);
                pstm.setInt(1,num_equipe);
                ResultSet rs = pstm.executeQuery();
                while(rs.next()){
                	int id_joueurs=rs.getInt("id_joueurs");
                    int id_equipe=rs.getInt("id_equipe");
                    int id_nationalite=rs.getInt("id_nationalite");
                    int id_question=rs.getInt("id_question");
                    String nom=rs.getString("nom");
                    String prenom=rs.getString("prenom");
                    int age=rs.getInt("age");
                    String pseudo=rs.getString("pseudo");
                    boolean paye=rs.getBoolean("paye");
                    String mail=rs.getString("mail");
                    String pass=rs.getString("pass");
                    String reponse=rs.getString("reponse");
                    plusieurs.add(new JoueursDB(id_joueurs,id_equipe,id_nationalite,id_question,nom,prenom,age,pseudo,paye,mail,pass,reponse));
                }
                pstm.close();
            }
            catch(Exception e){
                erreur =e;
            }
            return plusieurs;
        }
    et ensuite je fais ça dans mon Action avant d'afficher la jsp

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Vector liste_joueurs = JoueursDB.rechJoueursEquipe(id_equipe);
            	request.setAttribute("listeJoueurs",liste_joueurs);
    où id_equipe est bien sur l'id de l'équipe dans laquelle les joueurs se trouvent.

    Voilà j'attend ta réponse
    Merci

  8. #8
    Expert éminent

    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
    Points : 7 778
    Points
    7 778
    Par défaut
    Bizarre cette erreur.

    Bon, sinon, pour afficher le contenu du Vector listeJoueurs dans la jsp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <logic:iterate id="joueur" name="listeJoueurs">
       <bean:write name="joueur" property="id_joueurs"/>
       <bean:write name="joueur" property="pseudo"/>
       <html:multibox property="chk" value="${joueur.id_joueurs}"/>
    </logic:iterate>
    Ceci suppose que id_joueurs et pseudo sont bien des propriétés de la classe JoueursDB.
    Modératrice Java - Struts, Servlets/JSP, ...

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 96
    Points : 39
    Points
    39
    Par défaut
    Alors voilà le contenu s'affiche bien dans la jsp, maintenant je vais faire un test pour faire une suppression. Je dis ça de suite si ça marche.

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 96
    Points : 39
    Points
    39
    Par défaut
    Alors là ben encore une fois un grand merci, ça marche impeccable. Je vais laissez le code pour les personnes à qui ça pourrait intéresser .

    Initialisation pour faire la modification
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Vector liste_joueurs = JoueursDB.rechJoueursEquipe(id_equipe);
            	String [] check = new String [liste_joueurs.size()];
     
            	for (int i=0;i<liste_joueurs.size();i++){
            		JoueursDB joueur = (JoueursDB)liste_joueurs.elementAt(i);
            		if(joueur.getId_joueurs()==id_joueur){ //test de condition pour ne pas afficher le capitaine de l'équipe dans la liste
            			liste_joueurs.remove(i);
            		}
            	}
            	request.setAttribute("listeJoueurs",liste_joueurs);
    Affichage dans la JSP
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <logic:iterate id="joueurs" name="listeJoueurs">
    				<TR>
    					<TD><bean:write name="joueurs" property="id_joueurs" /></TD>
    					<TD><bean:write name="joueurs" property="pseudo" /></TD>
    					<TD><html:multibox property="chk" value="${joueurs.id_joueurs}"/></TD>        
    				</TR>
    			</logic:iterate>
    Début de suppression des joueurs se trouvant dans l'équipe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    String[]check = beanEquipe.getChk();
            	int taille = check.length;
    for(int i=0;i<taille;i++){
            			int id_joueurs = Integer.parseInt(check[i]);
            			JoueursDB player = JoueursDB.rechJoueursNum(id_joueurs);
            			player.setId_equipe(0);
            			player.modifier();
            		}
    Voilà j'espère que ça servira à d'autre que moi

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

Discussions similaires

  1. Problème checkbox cochée ou pas
    Par dekalima dans le forum Langage
    Réponses: 15
    Dernier message: 07/02/2011, 15h00
  2. Radio et checkbox cochés problème impression sous ie
    Par yann0807 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 0
    Dernier message: 21/09/2009, 15h57
  3. problème our passer des string dans tableau d'int
    Par Battosaiii dans le forum C++
    Réponses: 9
    Dernier message: 15/07/2004, 17h42
  4. [TFileStream] Problème de lecture de string
    Par Pedro dans le forum Langage
    Réponses: 6
    Dernier message: 28/06/2004, 13h06
  5. [JDBC] Forcer la taille d'une string
    Par julio123 dans le forum JDBC
    Réponses: 4
    Dernier message: 10/06/2004, 09h43

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