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

  1. #1
    Membre à l'essai
    Inscrit en
    Décembre 2009
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 38
    Points : 22
    Points
    22
    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 actif
    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
    Points : 246
    Points
    246
    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 à l'essai
    Inscrit en
    Décembre 2009
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 38
    Points : 22
    Points
    22
    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 actif
    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
    Points : 246
    Points
    246
    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 à l'essai
    Inscrit en
    Décembre 2009
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 38
    Points : 22
    Points
    22
    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 actif
    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
    Points : 246
    Points
    246
    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;
    	}
    }

  7. #7
    Membre à l'essai
    Inscrit en
    Décembre 2009
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 38
    Points : 22
    Points
    22
    Par défaut
    oui biensure, la méthode essayer est bien dans la classe

    public class ArticlesAction extends DispatchAction

    elle contient également la méthode prShowAllArticles, c'est ce que j'ai fait dès le début.
    j'ai aussi ajouté l'attribut property au bouton essyer comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <html:submit property="method" value="Essayer"></html:submit>
    mais l'erreur persiste

  8. #8
    Membre actif
    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
    Points : 246
    Points
    246
    Par défaut
    dans ce cas il faut enlever "methode=executer" dans la déclaration du formulaire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <html:form action="checkedaction.do" method="get">
    et surtout, faire attention aux majuscules:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <html:submit property="method" value="essayer"></html:submit>

  9. #9
    Membre à l'essai
    Inscrit en
    Décembre 2009
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 38
    Points : 22
    Points
    22
    Par défaut
    Bonjour karement et merci pour vos réponses,

    c'est OK, je comprend ce que vous avez mentionné, et la méthode essayer marche, mais le problème est que je revient à ZERO, parce que la liste reste toujours à null.
    Sauf que à l'aide de la méthode GET je peux savoir ce que contient la variable choix: voici l'URL lorsque je coche une case:

    [http://localhost:8080/Essai/checkeda...ethod=essayer]

    et si 2 cases:

    [http://localhost:8080/Essai/checkeda...ethod=essayer]

    et ainsi de suite...
    c'est étonnant, non?

  10. #10
    Membre à l'essai
    Inscrit en
    Décembre 2009
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 38
    Points : 22
    Points
    22
    Par défaut
    Je m'explique, ce qui ma parait étonnant, est que la variable string[] choix aurait dû être un tableau qui contiendra les id de chacune des lignes ayant la case cochée.

    Or d'après l'URL ci-dessus, choix contient le string "on" lorsque la case est cochée et null sinon

  11. #11
    Membre actif
    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
    Points : 246
    Points
    246
    Par défaut
    essaye:

    <html:checkbox property="choix[]" value="<%=(String) id%>"></html:checkbox>

  12. #12
    Membre à l'essai
    Inscrit en
    Décembre 2009
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 38
    Points : 22
    Points
    22
    Par défaut
    Bonjour karement,

    property="choix[]" n'est pas un attribut ds le formbean, voici alors l'exception:
    javax.servlet.ServletException: javax.servlet.jsp.JspException: Invalid argument looking up property: "choix[]" of bean: "org.apache.struts.taglib.html.BEAN"
    le tableau choix[] récupère les cases cochés en mettant le string "on", mais je ne sais pas récupérer les identifiants des objets cochés.
    j'ai utilisé la méthode getParameterValues() au lieu de passé par mon form bean, parceque ce denier me retourne un tableau tjrs null

    Le code de mon action:
    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
    public ActionForward essayer(ActionMapping mapping, ActionForm form,
                HttpServletRequest request, HttpServletResponse response){
    		System.out.println("inside essayer...");
    		ArticlesForm articleForm = (ArticlesForm) form;
     
    		 //String idchoix[] = articleForm.getChoix();
    		String idchoix[] = request.getParameterValues("choix");
     
    		 System.out.println("length: "+idchoix.length);
    		  if(idchoix != null){
    			  for(int j=0; j<idchoix.length; j++)
    				  System.out.println("idchoix["+j + "] = " + idchoix[j]);
    			  }
    		  else
    		System.out.println("Pas de cases cochés ");	  
    return null;
    	}
    Voici ce que retourne, la méthode essayer lorsque je coche 3 cases:

    inside essayer...
    length: 3
    idchoix[0] = on
    idchoix[1] = on
    idchoix[2] = on
    J'ai essayé plusieurs solutions au titre [résolu] dans le forum, mais cela n'a pas marché avec moi
    Si quelqu'un peut m'aider!

  13. #13
    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
    Il faut utiliser le tag html:multibox à la place du tag html:checkbox.

    Et il faut initialiser le tableau de String choix comme ceci dans la méthode reset de l'ActionForm :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public void reset(ActionMapping mapping, HttpServletRequest request)
    {
       this.choix=new String[0];
    }
    Et ensuite, pour récupérer les valeurs des checkbox cochées, il faut utiliser la méthode getChoix de l'ActionForm :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	ArticlesForm articleForm = (ArticlesForm) form;
    	 String idchoix[] = articleForm.getChoix();
    Modératrice Java - Struts, Servlets/JSP, ...

  14. #14
    Membre à l'essai
    Inscrit en
    Décembre 2009
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 38
    Points : 22
    Points
    22
    Par défaut
    Bonjour, merci pour votre réponse,

    j'ai fait ce que vous avez dit, mais cette fois ci même le tableau n'est pas affiché, j'ai cette exception:

    org.apache.jasper.JasperException: javax.servlet.ServletException: javax.servlet.jsp.JspException: You must specify the value attribute or nested tag content
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:527)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:401)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1085)
    org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:398)
    org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:241)
    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

    javax.servlet.ServletException: javax.servlet.jsp.JspException: You must specify the value attribute or nested tag content
    org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:862)
    org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:791)
    org.apache.jsp.form.listArticle_jsp._jspService(listArticle_jsp.java:253)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1085)
    org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:398)
    org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:241)
    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

    javax.servlet.jsp.JspException: You must specify the value attribute or nested tag content
    org.apache.struts.taglib.html.MultiboxTag.prepareValue(MultiboxTag.java:201)
    org.apache.struts.taglib.html.MultiboxTag.doEndTag(MultiboxTag.java:170)
    org.apache.jsp.form.listArticle_jsp._jspx_meth_html_005fmultibox_005f0(listArticle_jsp.java:485)
    org.apache.jsp.form.listArticle_jsp._jspx_meth_display_005fcolumn_005f6(listArticle_jsp.java:435)
    org.apache.jsp.form.listArticle_jsp._jspService(listArticle_jsp.java:196)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1085)
    org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:398)
    org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:241)
    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)


    Malgré que j'ai bien défini la valeur qui doit être retourné, voici le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <display:column media='html'>
    	<html:multibox property="choix"> 
    		<bean:write name="ArticlesForm" property="id"/></html:multibox>
     </display:column>
    N'est ce pas vrai cette définition?

  15. #15
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour,

    org.apache.jasper.JasperException: javax.servlet.ServletException: javax.servlet.jsp.JspException: You must specify the value attribute or nested tag content
    Ton multibox n'a pas d'attributs value.

    A+.

  16. #16
    Membre à l'essai
    Inscrit en
    Décembre 2009
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 38
    Points : 22
    Points
    22
    Par défaut
    Bonjour,

    Je vous remercie, j'ai cru que lorsque j'écris la valeur entre les balises <multibox> et </multibox> ,cela remplace le champ "value"... En tout cas, c pas résolu, comme même, parceque le tableau choix[] me retourne ce que suit:

    inside essayer...
    length: 3
    idchoix[0] = id
    idchoix[1] = id
    idchoix[2] = id

    lorsque je met :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <display:column paramId="id" paramProperty="id">
    				<html:multibox property="choix" value="id">
    				</html:multibox>
    et ceci :
    inside essayer...
    length: 3
    idchoix[0] = <bean:write name="AddArticleForm" property="id"/>
    idchoix[1] = <bean:write name="AddArticleForm" property="id"/>
    idchoix[2] = <bean:write name="AddArticleForm" property="id"/>

    lorceque je met : value='<bean:write name="AddArticleForm" property="id"/>'

    j'ai aussi éssayer de mettre: value='<%pageContext.getAttribute("id");%>'

    mais toujours n'arrive pas à récupérer l'id exacte de l'objet
    Merci à tous qui ont essayer et essayeront de m'aider
    y a t il une erreur dans ce que je vient d'écrire?

  17. #17
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Citation Envoyé par c_nvy Voir le message
    Il faut utiliser le tag html:multibox à la place du tag html:checkbox.

    Et il faut initialiser le tableau de String choix comme ceci dans la méthode reset de l'ActionForm :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public void reset(ActionMapping mapping, HttpServletRequest request)
    {
       this.choix=new String[0];
    }
    Et ensuite, pour récupérer les valeurs des checkbox cochées, il faut utiliser la méthode getChoix de l'ActionForm :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	ArticlesForm articleForm = (ArticlesForm) form;
    	 String idchoix[] = articleForm.getChoix();

  18. #18
    Membre à l'essai
    Inscrit en
    Décembre 2009
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 38
    Points : 22
    Points
    22
    Par défaut
    j'ai déjà fait toute ces modifications (celles postés par c_nvy), je ne vois pas où est l'erreur dans ce qui précède

  19. #19
    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
    Quand tu as codé ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <display:column media='html'>
    	<html:multibox property="choix"> 
    		<bean:write name="ArticlesForm" property="id"/>
    	</html:multibox> 
     </display:column>
    n'aurais-tu pas oublié la directive taglib du tag bean au début de ta jsp ?

    Parce que normalement, si tu mets un tag bean:write dans un tag multibox, il devrait effectivement prendre la valeur de la propriété référencée dans le tag et dans ce cas, tu ne devrais pas avoir besoin de spécifier un attribut value.

    Par contre, dans le tag bean:write c'est la propriété id des objets de la liste listArticle qu'il faut référencer et non l'id de l'ActionForm ArticlesForm.
    Modératrice Java - Struts, Servlets/JSP, ...

  20. #20
    Membre à l'essai
    Inscrit en
    Décembre 2009
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 38
    Points : 22
    Points
    22
    Par défaut
    [résolu]

    @ c_nvy
    j'ai éssayé ce que vous mentionné ci-dessus, mais cele a généré une autre exception

    En tout cas, j'ai résolu le problème finalement , voici la solution:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <display:column media='html'>
    				<html:multibox property="choix"><%=pageContext.getAttribute("id")%>
    				</html:multibox>
     			</display:column>
    ENFIN je recupère les id des objets que je coche

    Merci beaucoup à tous qui ont essayé de m'aider!

+ 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