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 :

récupérer les valeurs d'un checkbox dans une liste


Sujet :

Struts 1 Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Décembre 2009
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 38
    Par défaut récupérer les valeurs d'un checkbox dans une liste
    Bonjour à tous,

    voici mon pb : j'affiche un tableau et pour chaque ligne il y a une checkbox; je voudrais récupérer les id des cases coché dans une liste
    Dans ma classe formulaire j'ai créer un objet de type String [] pour
    contenir la valeur de chacune des checkbox; mais à l'exécution j'ai cette erreur:

    26 août 2010 12:45:14 org.apache.catalina.core.StandardWrapperValve invoke
    GRAVE: "Servlet.service()" pour la servlet action a généré une exception
    java.lang.NullPointerException
    at com.arabsoft.struts.action.ArticlesAction.essayer(ArticlesAction.java:184)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:270)
    at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:187)
    at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
    at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
    at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
    at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    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:127)
    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:298)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
    at java.lang.Thread.run(Unknown Source)
    Avant que je n'ajoute les checkbox tout allait très bien; ensuite j'arrive également à les afficher; mais ça plante ensuite lorsque je coche des cases et exécuter l'action essayer

    Voici des extraits de code :
    listArticle.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
    <html:form action="/listArticles">
      <center>
        <display:table name="listArticle" id= "id" uid="moarticle"
    	                pagesize="10" class="displaytag" >
     
    			<display:column property="codArt" title="Code Article" sortable="true"/>
    			<display:column property="codUnit" title="Code Unité" sortable="true"/>
    			<display:column property="desArt" title="Designation" sortable="true"/>
    			<display:column property="typArt" title="Type Article" sortable="true"/>
    			<display:column property="priVente" title="P.U" sortable="true"/>
    			<display:column property="txTva" title="tx.TVA" sortable="true"/>
    			<display:column media='html' paramId="id" paramProperty="id">
    				<html:checkbox property="choix" value="<%=(String) id%>"></html:checkbox>
     			</display:column>	
    </display:table>
    </center>
    </html:form>
    	<p align="right"><a href="<%=request.getContextPath()%>/checkedaction.do?method=essayer">Essayer</a> 
    						<a href="<%=request.getContextPath()%>/JSP/Articles.jsp?">Retour</a></p>
     
      </body>
    ArticlesForm.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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    public class ArticlesForm extends ActionForm{
     
    	/**
             * 
             */
    	private static final long serialVersionUID = 1L;
    	static int i = 0;
    private String codArt;
    	private String codUnit;
    	private FArticleId id;
    	private String desArt;
    	private Integer priVente;
    	private String typArt;
    	private BigDecimal txTva;
    	private String[] choix;
     
    	//full Constructor
    	public ArticlesForm(FArticleId id, String codArt, String codUnit, String desArt, Integer priVente, BigDecimal txTva,
    			String typArt, String[] choix) {
    		super();
    		this.id = id;
    		this.codArt = codArt;
    		this.codUnit = codUnit;
    		this.desArt = desArt;
    		this.priVente = priVente;
    		this.txTva = txTva;
    		this.typArt = typArt;
    		this.choix = choix;
    	}
    	public ArticlesForm(){
    		this.id = null;
    		this.codArt = null;
    		this.codUnit = null;
    		this.desArt = null;
    		this.priVente = null;
    		this.txTva = null;
    		this.typArt = null;
    		this.choix = null;
     
    	}
    	//Getters
    	public FArticleId getId() {
    		return id;
    	}
     
    	public String getCodArt() {
    		return codArt;
    	}
    	public void setCodArt(String codArt) {
    		this.codArt = codArt;
    	}
    	public String getDesArt() {
    		return desArt;
    	}
    public Integer getPriVente() {
    		return priVente;
    	}
     
    	public String getTypArt() {
    		return typArt;
    	}
     
    	public BigDecimal getTxTva() {
    		return txTva;
    	}
     
    	public String getCodUnit() {
    		return codUnit;
    	}
     
    	public String[] getChoix() {
    		return choix;
    	}
    public void setId(FArticleId id) {
    		this.id = id;
    	}
     
    	public void setDesArt(String desArt) {
    		this.desArt = desArt;
    	}
     
    	public void setTypArt(String typArt) {
    		this.typArt = typArt;
    	}
     
    	public void setTxTva(BigDecimal txTva) {
    		this.txTva = txTva;
    	}
     
    	public void setChoix(String c) {
    		choix[i++] = c;
    	}
     
    	public void setCodUnit(String codUnit) {
    		this.codUnit = codUnit;
    	}
     
    	public void setPriVente(Integer priVente) {
    		this.priVente = priVente;
    	}
     
     
    	}
    Action:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public ActionForward essayer(ActionMapping mapping, ActionForm form,
                HttpServletRequest request, HttpServletResponse response){
    		System.out.println("inside essayer...");
    		ArticlesForm ArticleForm = (ArticlesForm) form;
     
    		String[] liste1 = request.getParameterValues("choix");
    		System.out.println("liste1: "+ liste1.length);
    		return null;
    	}
    Sachant que (ArticlesAction.java:184) de la trace désigne cette ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println("liste1: "+ liste1.length);
    Merci pour vos réponses.

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur Java
    Inscrit en
    Août 2007
    Messages
    197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Août 2007
    Messages : 197
    Par défaut
    ta liste de checkbox se trouve dans ton form bean:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public ActionForward essayer(ActionMapping mapping, ActionForm form,
                HttpServletRequest request, HttpServletResponse response){
    		System.out.println("inside essayer...");
    		ArticlesForm ArticleForm = (ArticlesForm) form;
    	
    		String[] liste1 = form.getChoix();
    		System.out.println("liste1: "+ liste1.length);
    		return null;
    	}

  3. #3
    Membre averti
    Inscrit en
    Décembre 2009
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 38
    Par défaut
    Merci de me rependre, vous avez raison, j'ai passé par mon formbean, et
    l'exception a disparu, mais le tableau reste vide bien que j'ai coché quelques cases. En effet, liste1.length me retourne 0
    La liste ne s'est pas rempli par les id des cases cochées comme prévu? savez vous pourquoi?

    merci d'avance

  4. #4
    Membre expérimenté
    Homme Profil pro
    Développeur Java
    Inscrit en
    Août 2007
    Messages
    197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Août 2007
    Messages : 197
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="<%=request.getContextPath()%>/checkedaction.do?method=essayer">Essayer</a>
    ====> ce n'est pas un submit de formulaire, du coup bas forcément aucunes infos sur tes checkbox ne sont envoyés.

    essaye avec ce code là pour la déclaration de ton formulaire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <html:form action="checkedaction.do?method=essayer" method="get">
    et remplace le href par un véritable submit de formulaire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <html:submit value="Essayer" />
    le method="get" c'est juste pour que tu puisses voir dans la barre d'adresse le submit de tes checkbox.

  5. #5
    Membre averti
    Inscrit en
    Décembre 2009
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 38
    Par défaut
    Bonjour karement,
    j'ai essayé de changer l'action au niveau du formulaire comme vous l'avez indiqué, ainsi que le bouton essayer, j'ai eu cette exception:

    javax.servlet.ServletException: java.lang.NoSuchMethodException: Action[/checkedaction] does not contain specified method (check logs)
    org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:535)
    org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:433)
    org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
    org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)


    cause mère

    java.lang.NoSuchMethodException: Action[/checkedaction] does not contain specified method (check logs)
    org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:264)
    org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:187)
    org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
    org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
    org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    voici mon action dans struts-config.xml:

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <action
       	  attribute="ArticlesForm"
       	  name="ArticlesForm"
          parameter="method"
          input="/listArticles.do?method=prShowAllArticles"
          path="/checkedaction"
          scope="request"
          type="com.arabsoft.struts.action.ArticlesAction"/>

    merci pour votre aide

  6. #6
    Membre expérimenté
    Homme Profil pro
    Développeur Java
    Inscrit en
    Août 2007
    Messages
    197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Août 2007
    Messages : 197
    Par défaut
    ton action com.arabsoft.struts.action.ArticlesAction est bien du type dispatchAction avec la méthode essayer toujours définie?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public class ArticlesAction extends DispatchAction {
     
    public ActionForward essayer(ActionMapping mapping, ActionForm form,
                HttpServletRequest request, HttpServletResponse response){
    		System.out.println("inside essayer...");
    		ArticlesForm ArticleForm = (ArticlesForm) form;
     
    		String[] liste1 = form.getChoix();
    		System.out.println("liste1: "+ liste1.length);
    		return null;
    	}
    }

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 27/08/2012, 16h07
  2. Récupérer les valeurs lors de navigation dans une jsp
    Par aze20moh dans le forum Servlets/JSP
    Réponses: 0
    Dernier message: 17/01/2010, 17h08
  3. Réponses: 5
    Dernier message: 18/02/2008, 16h11
  4. Réponses: 4
    Dernier message: 03/08/2007, 14h09
  5. Récupérer les valeur d'un énuméré dans une string
    Par Oliv_75 dans le forum SL & STL
    Réponses: 5
    Dernier message: 28/09/2005, 00h55

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