>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

Reply via email to