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.