Bonjour,
J'ai un soucis dans la mise à jour d'un tableau avec Struts.
JDK 1.5.05
Struts : 1.3.8
Tomcat 5.5.12
J'ai un form qui étend ActionForm :
J'ai une action qui étend Action :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 private String[] vars; public String[] getVars() { return vars; } public void setVars(String[] vars) { this.vars = vars; }
J'ai une jsp avec le taglib struts-layout
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 execute(.....) { .... List l = new ArrayList(); String[] vars = new String[10]; for (int i = 0; i < vars.length; i++) { vars[i] = "...."; l.add(....); } form.setVars(vars); request.setAttribute("liste", l); .... }
ca me génère le code html suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 <layout:collection name="liste" indexId="index"> <layout:collectionItem> <layout:checkbox property="vars[${index}]" /> </layout:collectionItem> </layout:collection>
jusque là, tout est normal.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 <table > <tr><td><input type="checkbox" name="vars[0]" /></td></tr> <tr><td><input type="checkbox" name="vars[1]" /></td></tr> <tr><td><input type="checkbox" name="vars[2]" /></td></tr> <tr><td><input type="checkbox" name="vars[3]" /></td></tr> <tr><td><input type="checkbox" name="vars[4]" /></td></tr> <tr><td><input type="checkbox" name="vars[5]" /></td></tr> <tr><td><input type="checkbox" name="vars[6]" /></td></tr> <tr><td><input type="checkbox" name="vars[7]" /></td></tr> <tr><td><input type="checkbox" name="vars[8]" /></td></tr> <tr><td><input type="checkbox" name="vars[9]" /></td></tr> </table>
Lors de la soumission du formulaire, j'ai une exception :
cette exception est due au fait que l'attribut 'vars' du formulaire vaut "null".
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 java.lang.NullPointerException org.apache.commons.beanutils.PropertyUtilsBean.setIndexedProperty(PropertyUtilsBean.java:1414) org.apache.commons.beanutils.BeanUtilsBean.setProperty(BeanUtilsBean.java:1016) org.apache.commons.beanutils.BeanUtilsBean.populate(BeanUtilsBean.java:811) org.apache.commons.beanutils.BeanUtils.populate(BeanUtils.java:298) org.apache.struts.util.RequestUtils.populate(RequestUtils.java:451) org.apache.struts.chain.commands.servlet.PopulateActionForm.populate(PopulateActionForm.java:45) org.apache.struts.chain.commands.AbstractPopulateActionForm.execute(AbstractPopulateActionForm.java:57) org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:48) org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190) org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304) org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190) org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:280) org.apache.struts.action.ActionServlet.process(ActionServlet.java:1858) org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:459) javax.servlet.http.HttpServlet.service(HttpServlet.java:709) javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
Si j'écris la méthode "reset" du formulaire avec :
l'exception n'est plus levée; mais ça m'oblige à initialiser avec un nombre "aléatoire"?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 public void reset(ActionMapping mapping, HttpServletRequest request) { vars = new String[10000]; }
Existe-t-il une solution plus propre?
Cordialement
Matthieu
Partager