WOW Thanks Ted thisis great info.
I have narrowed my problem down to:
I want to use a <SELECT> Tag on a form I want the options to be
Ted Husted wrote:
> The general order of things is
>
> 1) Client requests an Action URI (the path from the ActionMapping)
> 2) The container passes the request to the ActionServlet
> 3) The ActionServlet looks up the mapping for the path
> 4) If the mapping specifies a form bean, the ActionServlet sees if there
> is one already, or creates one.
> 4.1) If a form bean is in play, the ActionServlet resets and populates
> it from the HTTP request
> 4.2) If the mapping has validate set to true, it calls validate on the
> form bean. If it fails, it forwards to the path specified by the input
> property, and this control flow ends
> 5) If the mapping specifies an Action type, it is instantiated if
> needed, or reused if already there
> 5.1) The Action's perform method is called, with the instantiated form
> bean
> 5.2) The Action may populate the form bean, call business objects,and do
> whatever else is needed
> 5.3) The Action returns an ActionForward to the ActionServlet
>
> If the ActionForward is to another Action URI, we begin again, else it's
> off to a JSP or something.
>
> If the ActionForward is to a JSP
> 1) Jasper, or the equivalent, renders the page
> 2) If the Struts html tags see the ActionForm in the request (from 4),
> it populate the controls from the ActionForm. Else the html:form tag
> creates one, and uses its default values in its tags.
>
> (Can't draw, but I sure can number;-)
>
> If you just need to create a blank form (4), you can use a "continue
> Action" to pass control through an Action and then out to the JSP.
>
> public ActionForward perform(ActionMapping mapping,
> ActionForm form,
> HttpServletRequest request,
> HttpServletResponse response)
> throws IOException, ServletException {
>
> return mapping.findForward(request.getParameter("continue"));
>
> }
>
> So in the mapping you specify the ActionForm for this instance,
> validate=false, and a local forward for the JSP input form.
>
> David Lauta wrote:
> >
> > Thanks for the reply,
> > I understand that you would like me to seperate the UI from the Model
> > Can you be more specific about
> > 'The recommended control flow is to go through an Action first'
> > I'm trying to get a one page does it all UI - Is there a tag I should use to invoke
> > some kind
> > of preprocess action?
> >
> > What I am after is populating the List boxes with data from (ultimately) EJB's
> > I need to decide where I am going to instantiate and initialize my EJB's ( Session
> > Beans )
> >
> > To this point in my model I have subclassed ActionForm, Action, and ActionMapping
> > my struts-config.xml is:
> > <form-beans>
> > <form-bean
> > name="StrutsTestForm"
> > type="web.StrutsTestForm" />
> > </form-beans>
> >
> > <action-mappings>
> > <action
> > name="StrutsTestForm"
> > path="/StrutsTest"
> > type="web.StrutsTestAction"
> > input="/StrutsTest.jsp"
> > attribute="StrutsTestForm" >
> >
> > <forward name="success" path="/StrutsTest.jsp" />
> > </action>
> >
> > </action-mappings>
> >
> > Should I be using the ActionFormBean instead or in conjunction with the ActionForm
> > subclass?
> > >From the ActionForm I can get the ActionMapping through
> > ActionServlet.findMapping(String)
> > At what point in time is the servlet associated with ActionForm valid.
> >
> > Most of my confusion comes from the order of things.
> > So far my model
> > 1 Create the ActionForm ( Servlet is null )
> > 2 Initialize the JSP ( all form values are null )
> > 3 Get ActionMapping Name
> > 4 Get ActionMapping Name
> > 5 Create another ActionForm (Servlet is null)
> > 6 Some magic I haven't been able to trace yet
> > 7 The JSP appears and the list boxes are filled in
> >
> > It seems like I have two instances of ActionMapping and two instances of ActionForm
> >
> > How should the initialization really occur?
> >
> > Thanks for your attention
> > -David Lauta
> > [EMAIL PROTECTED]
> >
> > Ted Husted wrote:
> >
> > > In Struts 1.0.1, init() is called if the ActionForm is instantiated by
> > > the JavaServer Page. In Struts 1.0, this only happens when the
> > > ActionForm is instantiated by the ActionServlet. Of course, any default
> > > values assigned to the fields in the ActionForm class itself will be
> > > available in either case. The recommended control flow is to go through
> > > an Action first, and populate the ActionForm there. Populating the
> > > ActionForm from the JSP is a Model 1 strategy.
> > >
> > > -- Ted Husted, Husted dot Com, Fairport NY USA.
> > > -- Custom Software ~ Technical Services.
> > > -- Tel +1 716 737-3463
> > > -- http://www.husted.com/struts/
> > >
> > > David Lauta wrote:
> > > >
> > > > Is there a method in the framework that gets invoked allowing you to
> > > > initialize the ActionForm before the JSP is displayed?
> > > >
> > > > Brett Porter wrote:
> > > >
> > > > > That's an interesting design decision. I have always had a form bean and
> > > > > then another bean containing the actual data. The action copies it across,
> > > > > processes it, and stores it.
> > > > >
> > > > > The reason I'd do it that way is that I imagine the message is a "business
> > > > > class", and you don't really want you model "polluted" by extending an
> > > > > ActionForm. Maybe I've been living in OOAD land too long though ;)
> > > > >
> > > > > This can trip you up though - at least once I have added the form element,
> > > > > added it to the bean, added it to the form bean, and forgetten to do the
> > > > > setter in the action :) The way around that is probably a function in the
> > > > > form bean that says "fill my business class" and "fill from a business
> > > > > class". Actually, I might put that in my todo list :D
> > > > >
> > > > > Cheers,
> > > > > Brett
> > > > >
> > > > > -----Original Message-----
> > > > > From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]
> > > > > Sent: Thursday, 29 November 2001 12:48 PM
> > > > > To: Struts Users Mailing List
> > > > > Subject: Re: Hidden Field in a form. Do I use struts taglib or vanilla
> > > > > ht ml?
> > > > >
> > > > > The data I am storing in the bean is logically different from what the
> > > > > hidden field value is, I have a message
> > > > >
> > > > > message
> > > > > {
> > > > > string Recipent
> > > > > string From
> > > > > string MessageBode
> > > > > }
> > > > >
> > > > > And the hidden field is action=sendMessage and I didn't think that
> > > > >
> > > > > message
> > > > > {
> > > > > string Action
> > > > > string Recipent
> > > > > string From
> > > > > string MessageBode
> > > > > }
> > > > >
> > > > > would be the correct thing to do, but I am open to suggestions. If it
> > > > > works out easier to put this extra field in my message formbean then I
> > > > > will do it. What do you think?
> > > > >
> > > > > Cheers
> > > > >
> > > > > Tony
> > > > >
> > > > > Brett Porter wrote:
> > > > >
> > > > > > The question I ask is why you wouldn't put it in your form bean?
> > > > > >
> > > > > > I prefer form.getAction() over httpServletRequest.getParameter( "action" )
> > > > > > any day! :)
> > > > > >
> > > > > > -----Original Message-----
> > > > > > From: Yee Keat [mailto:[EMAIL PROTECTED]]
> > > > > > Sent: Thursday, 29 November 2001 12:36 PM
> > > > > > To: Struts Users Mailing List
> > > > > > Subject: Re: Hidden Field in a form. Do I use struts taglib or vanilla
> > > > > > html?
> > > > > >
> > > > > >
> > > > > > Yup, using the taglib makes it compulsory to have that field in your
> > > > > > FormBean
> > > > > >
> > > > > > On Thursday 29 November 2001 09:25 am, you wrote:
> > > > > >
> > > > > >>Hi
> > > > > >>
> > > > > >>I want to include a hidden field in a form which I have. I do not want
> > > > > >>this information to be included in the formbean which is defined for
> > > > > >>this page. How can I do this? Should I just use plain html
> > > > > >>
> > > > > >><INPUT TYPE=hidden NAME=action VALUE=send>
> > > > > >>
> > > > > >>without using the html taglib supplied with struts?
> > > > > >>
> > > > > >>Cheers
> > > > > >>
> > > > > >>Tony
> > > > > >>
> > > > > >
> > > > >
> > > > > --
> > > > > To unsubscribe, e-mail:
> > > > > <mailto:[EMAIL PROTECTED]>
> > > > > For additional commands, e-mail:
> > > > > <mailto:[EMAIL PROTECTED]>
> > > >
> > > > --
> > > > Thank you,
> > > > David Lauta
> > > > [EMAIL PROTECTED]
> > > > (561)272-2698
> > > > (561)289-0502 cell
> > > >
> > > > --
> > > > To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
> > > > For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
> > >
> > > --
> > > To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
> > > For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
> >
> > --
> > Thank you,
> > David Lauta
> > [EMAIL PROTECTED]
> > (561)272-2698
> > (561)289-0502 cell
> >
> > --
> > To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
> > For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
>
> -- Ted Husted, Husted dot Com, Fairport NY USA.
> -- Custom Software ~ Technical Services.
> -- Tel +1 716 737-3463
> -- http://www.husted.com/struts/
>
> --
> To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
--
Thank you,
David Lauta
[EMAIL PROTECTED]
(561)272-2698
(561)289-0502 cell
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>