Je tente depuis deux jours de passer un tableau via un formulaire.
Mon formulaire JSP simplifié se présente ainsi :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
    <html:form action="/saisie/enregistrerEtaCei">
        <html:hidden property="utilisateur" value="1"/>
        <html:text property="condition[0]" value="5"/>
        <html:text property="condition[1]" value="5"/>
        <html:text property="condition[2]" value="5"/>
        <html:reset>Rétablir</html:reset> 
        <html:submit>Enregistrer</html:submit>
   </html:form>
Tout le jeu tourne autour de condition qui est un tableau.
J'ignore la taille du tableau.
Je souhaite le récupérer donc mon objet héritant de ActionForm se présente ainsi :
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
 
public class EtaParCeiForm extends AbstractActionForm {
    /** @pdOid b5a9e49a-7110-4307-8785-3c3c02b2c764 */
    private static final long serialVersionUID = 22075692L;
 
    /** @pdOid fb92bfcc-57da-4f0b-99ef-4e372f8103aa */
    private Integer utilisateur;
 
 
    /** @pdOid a4ccfd0d-77b3-4f12-b8ca-a47cf847d8bf */
    public Integer getUtilisateur() {
        return utilisateur;
    }
 
    /**
     * @param newUtilisateur
     * @pdOid 402c7dcb-4c23-40c8-8374-337db07cb50e
     */
    public void setUtilisateur(Integer newUtilisateur) {
        utilisateur = newUtilisateur;
    }
    private Integer[] condition;
    /** @pdOid a4ccfd0d-77b3-4f12-b8ca-a47cf847d8bf */
    public Integer[] getCondition() {
        return condition;
    }
 
    /**
     * @param newUtilisateur
     * @pdOid 402c7dcb-4c23-40c8-8374-337db07cb50e
     */
    public void setCondition(Integer[] newCondition) {
        condition = newCondition;
    }  
}
Bon et bien, force est de constater que cela ne marche pas...

J'obtiens l'erreur :
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
javax.servlet.ServletException: BeanUtils.populate
    at org.apache.struts.util.RequestUtils.populate(RequestUtils.java:495)
    at org.apache.struts.action.RequestProcessor.processPopulate(RequestProcessor.java:805)
    at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:203)
    at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
    at i2.application.commun.presentation.action.GenericActionServlet.process(GenericActionServlet.java:93)
    at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    at i2.application.commun.presentation.securite.MySecurityFilter.doFilter(MySecurityFilter.java:273)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    at i2.application.commun.util.contexte.TimerFilter.doFilter(TimerFilter.java:70)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
    at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
    at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
    at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
    at java.lang.Thread.run(Unknown Source)
Le fichier de log en sortie ne me donne rien d'autres...
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
[2007-07-20 15:04:36,841]   ERROR (org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/vh].[action]) - "Servlet.service()" pour la servlet action a généré une exception () 
java.lang.NullPointerException
    at org.apache.commons.beanutils.PropertyUtilsBean.setIndexedProperty(PropertyUtilsBean.java:1414)
    at org.apache.commons.beanutils.BeanUtilsBean.setProperty(BeanUtilsBean.java:1016)
    at org.apache.commons.beanutils.BeanUtilsBean.populate(BeanUtilsBean.java:811)
    at org.apache.commons.beanutils.BeanUtils.populate(BeanUtils.java:298)
    at org.apache.struts.util.RequestUtils.populate(RequestUtils.java:493)
    at org.apache.struts.action.RequestProcessor.processPopulate(RequestProcessor.java:805)
    at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:203)
    at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
    at i2.application.commun.presentation.action.GenericActionServlet.process(GenericActionServlet.java:93)
    at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    at i2.application.commun.presentation.securite.MySecurityFilter.doFilter(MySecurityFilter.java:273)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    at i2.application.commun.util.contexte.TimerFilter.doFilter(TimerFilter.java:70)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
    at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
    at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
    at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
    at java.lang.Thread.run(Unknown Source)
Quelqu'un peut-il me dire comment je peux passer mes valeurs de condition ? (Je précise que en fonction de la page je ne connais pas et ne peux pas connaître la taille du tableau de condition)