Bonjour,
J'utilise struts 1 sur une plateforme websphere 6.1.
J'ai un formulaire JSP, son but est de modifier certains attributs d'une liste d'objets donnée. Donc dans mon formulaire, j'ai un tableau html dont le nombre de lignes est variable : une ligne par objet avec un champs html:text .
Je prépare la liste d'objets en amont, je l'envoie à la JSP ; Tout va bien, la liste est récupéré par la JSP est affiche un formulaire prérempli.
mais quand je valide le formulaire, la class ModifierTauxMajorationForm ne récupère pas les données.
Voici mon code :
dans struts config.xml :
<form-beans type="org.apache.struts.action.ActionFormBean">
<form-bean name="ModifierTauxMajorationForm" type="package.struts.ModifierTauxMajorationForm" />
Contenu de tauxMajorationIHM :
package package;
import
[...]
public class TauxMajorationIHM implements java.io.sarializable {
private String codePdr;
private String annemaj;
private String tauxMaj;
private String dateDebutPdr;
private String dateFinPdr;
[...]
Extrait de ma JSP :
dans mon ActionForm :
<html:form>
<table>
<% int i = 0 ;%>
<td><tr>
<logic:iterate id="tauxMajorationIHM" name="ModifierTauxMajorationForm" property="listeTauxMajorationIHM" type="package.TauxMajorationIHM">
<html:hidden property='<%="listeTauxMajorationIHM["+i+"].anneeMaj"%>' value="<%= tauxMajorationIHM.getAnneeMaj()%>"/>
<html:hidden property='<%="listeTauxMajorationIHM["+i+"].codePdr"%>' value="<%= tauxMajorationIHM.getCodePdr()%>"/>
<html:hidden property='<%="listeTauxMajorationIHM["+i+"].dateDebutPdr"%>' value="<%= tauxMajorationIHM.getDateDebutPdr()%>"/>
<html:hidden property='<%="listeTauxMajorationIHM["+i+"].dateFinPdr"%>' value="<%= tauxMajorationIHM.getDateFinPdr()%>"/>
A saisir : <html:text maxlength="10" size="8" property='<%="listeTauxMajorationIHM["+i+"].tauxMaj"%>' value="<%= tauxMajorationIHM.getTauxMaj()%>"/></font>
</td></tr>
<%i = i + 1 ;%>
</logic:iterate>
Le plantage est sur :package package.struts;
import java.io.Serializable;
import java.util.Enumeration;
import java.util.Vector;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.apache.struts.action.ActionError;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
public class ModifierTauxMajorationForm extends ActionForm implements Serializable {
private Vector mListeTauxMajorationIHM;
public ActionErrors validate(ActionMapping aMapping, HttpServletRequest aRequest) {
// Liste des erreurs de saisie
ActionErrors errors = new ActionErrors();
/* Recuperer les valeurs du formulaire */
Enumeration enumTaux;
TauxMajorationIHM tauxMajorationIHM = null;
// Recuperation de la session HTTP
HttpSession session = aRequest.getSession();
tauxMajorationIHM = (TauxMajorationIHM) mListeTauxMajorationIHM.elementAt(0);
anneeMaj = tauxMajorationIHM.getAnneeMaj();
...
tauxMajorationIHM = (TauxMajorationIHM) ListeTauxMajorationIHM.elementAt(0);
il s'agit d'une exeception array index out of range : 0 ;
=> en fait le vecteur mListeTauxMajorationIHM envoyé de la jsp a ModifierTauxMajorationForm est vide ...
Partager