Passé un tableau dans un formulaire et le récupérer
Je tente depuis deux jours de passer un tableau via un formulaire.
Mon formulaire JSP simplifié se présente ainsi :
Code:
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:
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:
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:
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)