>LO,
>
>I have a form with multiple input as this
>
><input type="text" name="surname">
><input type="text" name="name">
><input type="text" name="surname">
><input type="text" name="name">
><input type="text" name="surname">
><input type="text" name="name">
>...
>
>i made a usersForm as this :
>
>private String[] name = null;
>private String[] surname = null;
>...
>
>I would like to show the content of a the "usersForm " object preloaded
from
>an Action for editing datas
>
>
>I tried as this :
><%
> int i=0;
>%>
><html:form name="xxx.do">
> <logic:iterate...>
><%
> String surname = "surname["+i+"]";
> String name = "name["+i+"]";
> i++;
>%>
> <input type="text" name="<%= surname %>">
> <input type="text" name="<%= name %>">
> </logic:iterate>
></html:form>
>
>This show magically the correct values on screen but as this in HTML code :
>
><input type="text" name="surname[0]" value="toto">
><input type="text" name="name[0]" value="TO">
>
><input type="text" name="surname[1]" value="tata">
><input type="text" name="name[1]" value="TA">
>
>So when i submit this form
>The usersForm can't retrieve new values because of the bad name of property
>(surname[0], name[0], surname[1], name[1],...)
I also tried this :
I tried this ( see between /*******/):
public class EditDroitsAction extends Action {
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request,
HttpServletResponse response) throws
IOException, ServletException {
String cible = new String("fin");
ActionErrors erreurs = new ActionErrors();
HttpSession session = request.getSession();
MBMMembre membre =(MBMMembre) session.getAttribute("membre");
/****/
DynaActionForm dynaForm = (DynaActionForm)form;
/****/
if(membre!=null) {
if(membre.isMBMBaseStarted()) {
try{
DroitsForm formulaire = new DroitsForm();
MBMGestionMembre gestionM=new MBMGestionMembre();
int nbMembres = gestionM.getListSize();
String base = "";
base = request.getParameter("base");
Vector listeMembres = new Vector();
MBMDroitsBean[] droitsBTab = new
MBMDroitsBean[nbMembres];
for(int i=0;i<nbMembres;i++){
MBMMembre
curentMembre=(MBMMembre)gestionM.getElementAt(i);
MBMGestionDroits membreDroits = new
MBMGestionDroits(curentMembre.getIdentifiant(),base);
MBMDroitsBean droitsB = new MBMDroitsBean();
/*********/
dynaForm.set("lire",i,new
Boolean(membreDroits.canRead()));
dynaForm.set("ecrire",i,new
Boolean(membreDroits.canWrite()));
dynaForm.set("modifier",i,new
Boolean(membreDroits.canUpdate()));
dynaForm.set("supprimmer",i,new
Boolean(membreDroits.canDelete()));
dynaForm.set("administrateur",i,new
Boolean(membreDroits.isAdmin()));
/**********/
MBMMembreBean membreB = new MBMMembreBean();
membreB.setPrenom(curentMembre.getPrenom());
membreB.setNom(curentMembre.getNom());
membreB.setEmail(curentMembre.getEmail());
listeMembres.add(membreB);
}
MBMBean mbmB = new MBMBean();
mbmB.setListeMembres(listeMembres);
request.setAttribute("base",base);
/********/
request.setAttribute(mapping.getAttribute(),dynaForm);
/********/
request.setAttribute("mbmB",mbmB);
cible = "droits";
}
catch(Exception e){
cible="echec";
request.setAttribute("exception",e.getMessage());
e.printStackTrace();
}
}
else {
cible="echec";
erreurs.add(ActionErrors.GLOBAL_ERROR, new
ActionError("erreurs.login.serveur.indisponible"));
}
}
else
cible = "fin";
// Signalement des erreurs � la page d'origine
if(!erreurs.isEmpty())
saveErrors(request,erreurs);
// Transmission � la vue appropri�e
return (mapping.findForward(cible));
}
}
I get this exception : java.lang.NullPointerException: No indexed value for
'lire[0]'
My JSP
<html:form action="/jsp/right/updateDroits"
>
<c:forEach var="droits"
items="${droitsForm.map.droits}" >
<tr>
<td align="center"><html:checkbox
name="droits" property="lire" indexed="true" /></td>
<td align="center"><html:checkbox
name="droits" property="ecrire" indexed="true" /></td>
<td align="center"><html:checkbox
name="droits" property="modifier" indexed="true" /></td>
<td align="center"><html:checkbox
name="droits" property="supprimmer" indexed="true" /></td>
<td align="center"><html:checkbox
name="droits" property="administrateur" indexed="true" /></td>
</tr>
</c:forEach>
...
Struts config :
<form-beans>
<form-bean name="droitsForm"
type="org.apache.struts.action.DynaActionForm">
<form-property name="droits" type="mbm.bean.MBMDroitsBean[]"
size="4" />
</form-bean>
</form-beans>
<action-mappings>
<action path="/jsp/right/editDroits"
type="mbm.action.EditDroitsAction" name="droitsForm" scope="request">
<forward name="fin" path="/html/fin.htm" redirect="false" />
<forward name="echec" path="/jsp/messages/erreur.jsp" />
<forward name="droits" path="/jsp/right/UpdateDroits.jsp" />
</action>
</action-mappings>
>I think it must exist a simpliest solution using "indexed" attribute or
>others but i don't know what.
>And the documentations on struts are so poor for this kind of problem.
>
>sincerly
>
>Florent