Every thing looks fine to me. Is this the actual struts-config.xml you are
trying to use - because I did notice your "/user/update" has re-direct in
the "Success" forward.  Obviously you say the problem is with the
"/user/setUp" action but I ask because a re-direct would cause the kind of
behaviour you describe.

Niall

----- Original Message ----- 
From: "Danko Desancic" <[EMAIL PROTECTED]>
To: "Struts Users Mailing List" <[EMAIL PROTECTED]>
Sent: Friday, March 12, 2004 8:26 PM
Subject: Re: (pre)populating DynaActionForm


> I tried that and it does not work. No errors though just balnk form with
> initial value.
>
> Thanks anyway
>
> Hubert Rabago wrote:
>
> >My bad.  I didn't read your mail through; only saw the top portion.
> >In your setupUserAction, after you prepopulate the form, set it as a
request
> >attribute:
> >
> >
> >
> >>>from SetUpUserAction.execute()
> >>>            DynaActionForm userForm = (DynaActionForm)form;
> >>>
> >>>            userForm.set("userName",user.getUserName());
> >>>            userForm.set("password",user.getPassword());
> >>>            userForm.set("fullName",user.getFullName());
> >>>            userForm.set("email",user.getEmail());
> >>>            userForm.set("status",new Integer(1));
> >>>
> >>>
> >                request.setAttribute("userForm",userForm);
> >
> >
> >>>
> >>>            forward = mapping.findForward("Success");
> >>>            return forward;
> >>>
> >>>
> >
> >It works when the form is in session scope because that will make the
whole
> >session deal with one form instance.
> >
> >hth,
> >Hubert
> >
> >--- Hubert Rabago <[EMAIL PROTECTED]> wrote:
> >
> >
> >>As far as I can tell, there really isn't any support for prepopulating a
> >>DynaActionForm.  The ff is from
> >>
> >>
> >>
>
>http://jakarta.apache.org/struts/userGuide/building_controller.html#dyna_ac
tion_form_classes
> >
> >
> >>"DynaActionForms are not a drop-in replacement for ActionForms. If you
need
> >>to access ActionForm properties in your Action, you will need to use the
> >>map-style accessor, like myForm.get("name"). If you actively use the
> >>ActionForm object in your Action, then you may want to use conventional
> >>ActionForms instead.
> >>
> >>"DynaActionForms cannot be instantiated using a no-argument constructor.
In
> >>order to simulate the extra properties, there is a lot of machinery
> >>involved
> >>in their construction. You must rely on Struts to instantiate a
> >>DynaActionForm for you, via the ActionMapping."
> >>
> >>What I did was copy the code that RequestUtils uses to instantiate a
> >>DynaActionForm, and put it in a method that I can call like this:
> >>DynaActionForm dynaForm = createDynaActionForm("formName",
> >>mapping.getModuleConfig());
> >>
> >>
> >>
> >>    /**
> >>     * <p>Create the [EMAIL PROTECTED] DynaActionForm} instance identified by the
> >>given
> >>     * formName.</p>
> >>     *
> >>     * @param formName the name used to identify the form
> >>     * @param moduleConfig the configuration for the current module
> >>     * @return the DynaActionForm identified by formName
> >>     */
> >>    public static DynaActionForm createDynaActionForm(
> >>            String formName,
> >>            ModuleConfig moduleConfig) {
> >>        DynaActionForm dynaForm;
> >>        try {
> >>            // the code here is based on [copied from? :) ]
> >>            //  RequestUtils.createActionForm()
> >>            FormBeanConfig formBeanConfig =
> >>                    moduleConfig.findFormBeanConfig(formName);
> >>
> >>            DynaActionFormClass dynaClass =
> >>                    DynaActionFormClass.createDynaActionFormClass(
> >>                            formBeanConfig);
> >>
> >>            dynaForm = (DynaActionForm) dynaClass.newInstance();
> >>
> >>            if (logger.isTraceEnabled()) {
> >>                logger.trace("inside findDynaActionForm() where
dynaForm="
> >>+
> >>                          dynaForm + " and formBeanConfig=" +
> >>formBeanConfig);
> >>            }
> >>
> >>            initializeDynaForm(formName, dynaForm, moduleConfig);
> >>        } catch (Exception e) {
> >>            logger.error("Exception [" + e + "," + e.getMessage() + "]",
> >>e);
> >>            // TODO what to do if we get an error initializing the form?
> >>            // -> right now we're just returning null
> >>            dynaForm = null;
> >>        }
> >>        return dynaForm;
> >>    }
> >>
> >>    /**
> >>     * <p>Initialize all bean properties to their initial values, as
> >>specified
> >>     * in the [EMAIL PROTECTED] FormPropertyConfig} elements associated with the
> >>     * definition of this <code>DynaActionForm</code>.  Based on the
> >>     * <code>DynaActionForm.initialize()</code> method.
> >>     * </p>
> >>     *
> >>     * @param dynaForm the DynaActionForm to be initialized
> >>     * @param moduleConfig the ModuleConfig under which this dynaForm
> >>     *
> >>     */
> >>    protected static void initializeDynaForm(String name,
> >>                                             DynaActionForm dynaForm,
> >>                                             ModuleConfig moduleConfig)
{
> >>
> >>        FormBeanConfig config = moduleConfig.findFormBeanConfig(name);
> >>        if (config == null) {
> >>            return;
> >>        }
> >>        FormPropertyConfig props[] = config.findFormPropertyConfigs();
> >>        for (int i = 0; i < props.length; i++) {
> >>            dynaForm.set(props[i].getName(), props[i].initial());
> >>        }
> >>    }
> >>
> >>hth,
> >>Hubert
> >>
> >>--- Danko Desancic <[EMAIL PROTECTED]> wrote:
> >>
> >>
> >>>I am newbie to Struts and have a problem with  populating
> >>>DynaActionForm. I have two actions: one to set up userForm and one to
> >>>process it. 1st one is suposed to grab user info and populate the form.
> >>>The second one updates user info after the form is submitted. The
> >>>problem is that the from is not populated. Moreover changing the scope
> >>>to "session" in action "/user/setUp"  results in form being populated
> >>>with appropriate data. What am I doing wrong in here?
> >>>
> >>>Thanks
> >>>Danko
> >>>
> >>>from struts-config.xml
> >>><form-bean name="userForm"
> >>>type="org.apache.struts.action.DynaActionForm">that
> >>>            <form-property name="userName" type="java.lang.String"/>
> >>>            <form-property name="password" type="java.lang.String"/>
> >>>            <form-property name="fullName" type="java.lang.String"/>
> >>>            <form-property name="email" type="java.lang.String"/>
> >>>            <form-property name="status" type="java.lang.Integer"
> >>>initial="0"/>
> >>></form-bean>
> >>>
> >>><action
> >>>            path="/user/setUp"
> >>>            type="myPackage.user.SetUpUserAction"
> >>>            name="userForm"
> >>>            scope="request"
> >>>            validate="false">
> >>>            <forward name="Success"
> >>>path="/WEB-INF/jsp/user/userForm.jsp"/>
> >>></action>
> >>>
> >>><action
> >>>            path="/user/update"
> >>>            type="myPackage.user.UpdateUserAction"
> >>>            name="userForm"
> >>>            scope="request"
> >>>            validate="true"
> >>>            input="/WEB-INF/jsp/user/userForm.jsp">
> >>>            <forward name="Success"  path="/user/edit.do"
> >>>
> >>>
> >>redirect="true"/>
> >>
> >>
> >>> </action>
> >>>
> >>>from SetUpUserAction.execute()
> >>>            DynaActionForm userForm = (DynaActionForm)form;
> >>>
> >>>            userForm.set("userName",user.getUserName());
> >>>            userForm.set("password",user.getPassword());
> >>>            userForm.set("fullName",user.getFullName());
> >>>            userForm.set("email",user.getEmail());
> >>>            userForm.set("status",new Integer(1));
> >>>
> >>>            forward = mapping.findForward("Success");
> >>>            return forward;
> >>>
> >>>
> >>>from userForm.jsp
> >>><html:form action="/user/update.do">
> >>><table cellpadding="2" cellspacing="2" border="1" width="800px">
> >>>    <tr>
> >>>        <td class="fieldHeader" colspan="4">UPDATE USER</td>
> >>>    </tr>
> >>>    <tr>
> >>>        <td class="fieldName">Username</td>
> >>>        <td><html:text property="userName"/></td>
> >>>    </tr>
> >>>   ......
> >>>    <tr>
> >>>        <td class="fieldName">Status</td>
> >>>        <td><html:radio property="status" value="1"/>Active &nbsp
> >>><html:radio property="status" value="0"/>Inactive </td>
> >>>    </tr>
> >>>    <tr>
> >>>        <td colspan="4" class="fieldName" align="center">
> >>>            <html:submit value="UPDATE"/>
> >>>        </td>
> >>>    </tr>
> >>></table>
> >>></html:form>
> >>>
> >>>
> >>>---------------------------------------------------------------------
> >>>To unsubscribe, e-mail: [EMAIL PROTECTED]
> >>>For additional commands, e-mail: [EMAIL PROTECTED]
> >>>
> >>>
> >>>
> >>__________________________________
> >>Do you Yahoo!?
> >>Yahoo! Search - Find what you’re looking for faster
> >>http://search.yahoo.com
> >>
> >>---------------------------------------------------------------------
> >>To unsubscribe, e-mail: [EMAIL PROTECTED]
> >>For additional commands, e-mail: [EMAIL PROTECTED]
> >>
> >>
> >>
> >
> >
> >__________________________________
> >Do you Yahoo!?
> >Yahoo! Search - Find what you’re looking for faster
> >http://search.yahoo.com
> >
> >---------------------------------------------------------------------
> >To unsubscribe, e-mail: [EMAIL PROTECTED]
> >For additional commands, e-mail: [EMAIL PROTECTED]
> >
> >
> >
> >
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to