Re: Action Form Design Question

2003-09-22 Thread Michael Thompson
That hits on some points, I did read that thread earlier this week(I'll 
even read it again), and I'm starting to agree on not shoving everything 
in the ActionForm, but I don't recall it hitting on an Action needing 
one form for input and one form for output.  If I totally ignore it, the 
second page will render, but what if I need my html form in the second 
JSP(JSPB) to be prepopulated with the results of the processing in ActionA?

Scenario:
I have jspA that is rendered with ActionFormA.  Now user submits that 
data to ActionA.  ActionA recieves an ActionFormA as its input form in 
execute.  Now ActionA needs to forward to jspB which expectes an 
ActionFormB, what is the cleanest way to handle this in struts(see code 
below).  Do struts users run across this case often or do I need to 
rethink my Action/Form design? 

   --m

Robert Taylor wrote:

This was discussed earlier this week. 

Some solutions are addressed here:
http://www.mail-archive.com/struts-user%40jakarta.apache.org/msg81101.html
robert

 

-Original Message-
From: Michael Thompson [mailto:[EMAIL PROTECTED]
Sent: Friday, September 19, 2003 6:10 PM
To: struts-user
Subject: Action Form Design Question
I've hit a stumbling block and I'm not quite sure how to work around 
it.  I've written struts apps in the past and I've taken the approach of 
putting everything in the ActionForm so that the jsp has a one stop shop 
for all it's display needs.  So where I've hit an issue is when say I 
have jsp A that is rendered with form A.  When user submits data to 
action A, the ActionForm pushed to execute is form A.  What happens when 
I need to forward from action A to jsp B which is rendered with form B?  
I need to populate an ActionForm B to send to jsp B, but I don't have 
one.  Is it normal to create a form of a different type in your 
Action?  So essentially the code would look something like:

public ActionForward execute(ActionMapping mapping, ActionForm form, 
HttpServletRequest request, HttpServletResponse response)
throws Exception
{
  FormA inputForm = (FormA)form;
  Result result = doSomeCrunchingOnDataSubmittedViaFormA(inputForm);
FormB outputForm = getInstanceOfFormB(mapping, request);  //this 
would stash in request/session also
  populateFormBWithResults(outputForm, result);

  return mapping.findForward(success);
}
getInstanceOfFormB is a little hazy, but I did notice a method in 
RequestUtils that might help.  Seems like this might be breaking some 
struts abstractions by knowing what form to create etc.

Is this the correct way to approach this or should I think about a 
redesign of my forms and actions?  Thanks in advance!
--m



-
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]


RE: Action Form Design Question

2003-09-22 Thread Susan Bradeen
On 09/21/2003 09:02:43 PM Robert Taylor wrote:

 H. Well, yes, you could call this chaining to some degree.
 But I think its necessary chaining or even (dare I say it?) good 
chaining :)
 
 IMHO the following is a good design pattern:
 
 SetupPageAAction == PageA == ProcessPageAAction == SetupPageBAction 
==
 PageB == ProcessPageBAction
 

Agreed. I use this throughout my application and it works well. 

 The only coupling here is that SetupPageBAction needs to know that
 the data needed to populate the form used for PageB is found in
 some scope (request, session, or application) under a name.
 The only reason to do this is to prevent from having to manually
 create the form needed for PageB in ProcessPageAction. Yes, there
 is some loose coupling but the cohesion is tighter within actions
 and as we discussed before, we allow Struts to do it is allowed to
 manage the action form life cycle.
 
 So, the bottom line is that somewhere you have to prepare PageB
 for display. Should you do it in ProcessPageAction or should you
 place the data in request scope and pass it along to an action
 dedicated to preparing PageB?
 

Setting up PageB from SetupPageBAction (instead of within 
ProcessPageAAction) allows you to reuse the Setup/Page/Process for B from 
elsewhere in your application, not just after PageA has completed. I tend 
to keep these Setup/Page/Process units distinct for my pages so that they 
can be called from various places in the web app ... menu options, page 
links, and page forwards ... as is often a requirement for my application. 


Susan Bradeen

 I think when you here others speak of chaing as bad, they mean using
 actions as business components and trying to use (or reuse) them in a
 sequence.
 This type of logic or use of objects should be reserved for the business
 tier and not the presentation tier.
 
 robert
 
 
  -Original Message-
  From: Michael Thompson [mailto:[EMAIL PROTECTED]
  Sent: Sunday, September 21, 2003 5:43 PM
  To: Struts Users Mailing List
  Subject: Re: Action Form Design Question
 
 
  Thanks Robert!
 
  I agree on letting struts do it's job where available, that's why I
  thought my code snippet below was a little goofy.  My only question
  about your suggestions is in solution 2 you mention having a second
  action.  You're not suggesting action chaining are you?  If not, how 
do
  you hook into second action the struts way?   Or would this be one
  place where action chaining is accepted?
 
  Thanks again!
 
  --m
 
 
  Robert Taylor wrote:
 
  I would say the solution depends on the process.
  
  If the process of going from pageA to pageB to ... pageN, is
  a wizard style process then you might think of placing all
  your data in the same form and putting the form in session scope.
  
  If you don't want to put your form in session scope AND the
  data you capture along the way can be stored in hidden fields,
  then you could also use a single form placed in request scope.
  
  If the process is somewhat disjoint and you have separate forms,
  then is the data to be rendered in pageB unique to the user? Is
  it static data? If so, place that data in ServletContext and
  make it available to all users and you don't need a set up action
  for pageB.
  
  If the data IS unique to the user AND you have separate forms then
  in this situation, I would still let Struts perform the form 
creation.
  -Soluation 1:
  Place the data retrieved from processing pageA in request scope
  and forward to the page and tell the particular html component to 
look
  for the data in the request under some defined name.
  -Solution 2:
  Insert and additional preparation action in between the action 
processing
  pageA and pageB; call it ShowPageB or something of the sort. 
ShowPageB
  action would access the data out of request scope and populate the 
form
  defined for pageB and forward to pageB.
  
  There are so many ways to approach this solution. It's subjective to 
the
  complexity of the process. I wouldn't stress over the fact of having
  to place data in the request scope temporarily.
  
  What I would stress is let Struts do its job where possible - like
  creating action forms.
  
  robert
  
  
  
  
  
  
  -Original Message-
  From: Michael Thompson [mailto:[EMAIL PROTECTED]
  Sent: Saturday, September 20, 2003 11:09 AM
  To: Struts Users Mailing List
  Subject: Re: Action Form Design Question
  
  
  //
  ///
  //I've been having issues with posting to this list, so I apologize 
if
  this is a repost.
  //
  ///
  
  That hits on some points, I did read that thread earlier this 
week(I'll
  even read it again), and I'm starting to agree on not shoving
  everything
  in the ActionForm, but I don't recall it hitting

RE: Action Form Design Question

2003-09-21 Thread Robert Taylor
I would say the solution depends on the process.

If the process of going from pageA to pageB to ... pageN, is
a wizard style process then you might think of placing all
your data in the same form and putting the form in session scope.

If you don't want to put your form in session scope AND the
data you capture along the way can be stored in hidden fields,
then you could also use a single form placed in request scope.

If the process is somewhat disjoint and you have separate forms,
then is the data to be rendered in pageB unique to the user? Is
it static data? If so, place that data in ServletContext and
make it available to all users and you don't need a set up action
for pageB. 

If the data IS unique to the user AND you have separate forms then
in this situation, I would still let Struts perform the form creation.
-Soluation 1:
Place the data retrieved from processing pageA in request scope
and forward to the page and tell the particular html component to look
for the data in the request under some defined name.
-Solution 2: 
Insert and additional preparation action in between the action processing
pageA and pageB; call it ShowPageB or something of the sort. ShowPageB
action would access the data out of request scope and populate the form
defined for pageB and forward to pageB.

There are so many ways to approach this solution. It's subjective to the
complexity of the process. I wouldn't stress over the fact of having 
to place data in the request scope temporarily. 

What I would stress is let Struts do its job where possible - like
creating action forms.

robert




 -Original Message-
 From: Michael Thompson [mailto:[EMAIL PROTECTED]
 Sent: Saturday, September 20, 2003 11:09 AM
 To: Struts Users Mailing List
 Subject: Re: Action Form Design Question
 
 
 //
 ///
 //I've been having issues with posting to this list, so I apologize if 
 this is a repost.
 //
 ///
 
 That hits on some points, I did read that thread earlier this week(I'll 
 even read it again), and I'm starting to agree on not shoving everything 
 in the ActionForm, but I don't recall it hitting on an Action needing 
 one form for input and one form for output.  If I totally ignore it, the 
 second page will render, but what if I need my html form in the second 
 JSP(JSPB) to be prepopulated with the results of the processing 
 in ActionA?
 
 Scenario:
 I have jspA that is rendered with ActionFormA.  Now user submits that 
 data to ActionA.  ActionA recieves an ActionFormA as its input form in 
 execute.  Now ActionA needs to forward to jspB which expectes an 
 ActionFormB, what is the cleanest way to handle this in struts(see code 
 below).  Do struts users run across this case often or do I need to 
 rethink my Action/Form design?
--m
 
 
 Robert Taylor wrote:
 
 This was discussed earlier this week. 
 
 Some solutions are addressed here:
 http://www.mail-archive.com/struts-user%40jakarta.apache.org/msg8
 1101.html
 
 robert
 
 
   
 
 -Original Message-
 From: Michael Thompson [mailto:[EMAIL PROTECTED]
 Sent: Friday, September 19, 2003 6:10 PM
 To: struts-user
 Subject: Action Form Design Question
 
 
 I've hit a stumbling block and I'm not quite sure how to work around 
 it.  I've written struts apps in the past and I've taken the 
 approach of 
 putting everything in the ActionForm so that the jsp has a one 
 stop shop 
 for all it's display needs.  So where I've hit an issue is when say I 
 have jsp A that is rendered with form A.  When user submits data to 
 action A, the ActionForm pushed to execute is form A.  What 
 happens when 
 I need to forward from action A to jsp B which is rendered with 
 form B?  
 I need to populate an ActionForm B to send to jsp B, but I don't have 
 one.  Is it normal to create a form of a different type in your 
 Action?  So essentially the code would look something like:
 
 public ActionForward execute(ActionMapping mapping, ActionForm form, 
 HttpServletRequest request, HttpServletResponse response)
  throws Exception
 {
FormA inputForm = (FormA)form;
Result result = doSomeCrunchingOnDataSubmittedViaFormA(inputForm);
  FormB outputForm = getInstanceOfFormB(mapping, request);  //this 
 would stash in request/session also
populateFormBWithResults(outputForm, result);
 
return mapping.findForward(success);
 }
 
 getInstanceOfFormB is a little hazy, but I did notice a method in 
 RequestUtils that might help.  Seems like this might be breaking some 
 struts abstractions by knowing what form to create etc.
 
 Is this the correct way to approach this or should I think about a 
 redesign of my forms and actions?  Thanks in advance!
  --m
 
 
 
 -
 To unsubscribe, e

Re: Action Form Design Question

2003-09-21 Thread Michael Thompson
Thanks Robert!

I agree on letting struts do it's job where available, that's why I 
thought my code snippet below was a little goofy.  My only question 
about your suggestions is in solution 2 you mention having a second 
action.  You're not suggesting action chaining are you?  If not, how do 
you hook into second action the struts way?   Or would this be one 
place where action chaining is accepted?

Thanks again!

   --m

Robert Taylor wrote:

I would say the solution depends on the process.

If the process of going from pageA to pageB to ... pageN, is
a wizard style process then you might think of placing all
your data in the same form and putting the form in session scope.
If you don't want to put your form in session scope AND the
data you capture along the way can be stored in hidden fields,
then you could also use a single form placed in request scope.
If the process is somewhat disjoint and you have separate forms,
then is the data to be rendered in pageB unique to the user? Is
it static data? If so, place that data in ServletContext and
make it available to all users and you don't need a set up action
for pageB. 

If the data IS unique to the user AND you have separate forms then
in this situation, I would still let Struts perform the form creation.
-Soluation 1:
Place the data retrieved from processing pageA in request scope
and forward to the page and tell the particular html component to look
for the data in the request under some defined name.
-Solution 2: 
Insert and additional preparation action in between the action processing
pageA and pageB; call it ShowPageB or something of the sort. ShowPageB
action would access the data out of request scope and populate the form
defined for pageB and forward to pageB.

There are so many ways to approach this solution. It's subjective to the
complexity of the process. I wouldn't stress over the fact of having 
to place data in the request scope temporarily. 

What I would stress is let Struts do its job where possible - like
creating action forms.
robert



 

-Original Message-
From: Michael Thompson [mailto:[EMAIL PROTECTED]
Sent: Saturday, September 20, 2003 11:09 AM
To: Struts Users Mailing List
Subject: Re: Action Form Design Question
//
///
//I've been having issues with posting to this list, so I apologize if 
this is a repost.
//
///

That hits on some points, I did read that thread earlier this week(I'll 
even read it again), and I'm starting to agree on not shoving everything 
in the ActionForm, but I don't recall it hitting on an Action needing 
one form for input and one form for output.  If I totally ignore it, the 
second page will render, but what if I need my html form in the second 
JSP(JSPB) to be prepopulated with the results of the processing 
in ActionA?

Scenario:
I have jspA that is rendered with ActionFormA.  Now user submits that 
data to ActionA.  ActionA recieves an ActionFormA as its input form in 
execute.  Now ActionA needs to forward to jspB which expectes an 
ActionFormB, what is the cleanest way to handle this in struts(see code 
below).  Do struts users run across this case often or do I need to 
rethink my Action/Form design?
  --m

Robert Taylor wrote:

   

This was discussed earlier this week. 

Some solutions are addressed here:
http://www.mail-archive.com/struts-user%40jakarta.apache.org/msg8
 

1101.html
   

robert



 

-Original Message-
From: Michael Thompson [mailto:[EMAIL PROTECTED]
Sent: Friday, September 19, 2003 6:10 PM
To: struts-user
Subject: Action Form Design Question
I've hit a stumbling block and I'm not quite sure how to work around 
it.  I've written struts apps in the past and I've taken the 
   

approach of 
   

putting everything in the ActionForm so that the jsp has a one 
   

stop shop 
   

for all it's display needs.  So where I've hit an issue is when say I 
have jsp A that is rendered with form A.  When user submits data to 
action A, the ActionForm pushed to execute is form A.  What 
   

happens when 
   

I need to forward from action A to jsp B which is rendered with 
   

form B?  
   

I need to populate an ActionForm B to send to jsp B, but I don't have 
one.  Is it normal to create a form of a different type in your 
Action?  So essentially the code would look something like:

public ActionForward execute(ActionMapping mapping, ActionForm form, 
HttpServletRequest request, HttpServletResponse response)
throws Exception
{
 FormA inputForm = (FormA)form;
 Result result = doSomeCrunchingOnDataSubmittedViaFormA(inputForm);
   FormB outputForm = getInstanceOfFormB(mapping, request);  //this 
would stash in request/session also
 populateFormBWithResults(outputForm, result);

 return mapping.findForward(success

RE: Action Form Design Question

2003-09-21 Thread Robert Taylor
H. Well, yes, you could call this chaining to some degree.
But I think its necessary chaining or even (dare I say it?) good chaining :)

IMHO the following is a good design pattern:

SetupPageAAction == PageA == ProcessPageAAction == SetupPageBAction ==
PageB == ProcessPageBAction

The only coupling here is that SetupPageBAction needs to know that
the data needed to populate the form used for PageB is found in
some scope (request, session, or application) under a name.
The only reason to do this is to prevent from having to manually
create the form needed for PageB in ProcessPageAction. Yes, there
is some loose coupling but the cohesion is tighter within actions
and as we discussed before, we allow Struts to do it is allowed to
manage the action form life cycle.

So, the bottom line is that somewhere you have to prepare PageB
for display. Should you do it in ProcessPageAction or should you
place the data in request scope and pass it along to an action
dedicated to preparing PageB?

I think when you here others speak of chaing as bad, they mean using
actions as business components and trying to use (or reuse) them in a
sequence.
This type of logic or use of objects should be reserved for the business
tier and not the presentation tier.

robert


 -Original Message-
 From: Michael Thompson [mailto:[EMAIL PROTECTED]
 Sent: Sunday, September 21, 2003 5:43 PM
 To: Struts Users Mailing List
 Subject: Re: Action Form Design Question


 Thanks Robert!

 I agree on letting struts do it's job where available, that's why I
 thought my code snippet below was a little goofy.  My only question
 about your suggestions is in solution 2 you mention having a second
 action.  You're not suggesting action chaining are you?  If not, how do
 you hook into second action the struts way?   Or would this be one
 place where action chaining is accepted?

 Thanks again!

 --m


 Robert Taylor wrote:

 I would say the solution depends on the process.
 
 If the process of going from pageA to pageB to ... pageN, is
 a wizard style process then you might think of placing all
 your data in the same form and putting the form in session scope.
 
 If you don't want to put your form in session scope AND the
 data you capture along the way can be stored in hidden fields,
 then you could also use a single form placed in request scope.
 
 If the process is somewhat disjoint and you have separate forms,
 then is the data to be rendered in pageB unique to the user? Is
 it static data? If so, place that data in ServletContext and
 make it available to all users and you don't need a set up action
 for pageB.
 
 If the data IS unique to the user AND you have separate forms then
 in this situation, I would still let Struts perform the form creation.
 -Soluation 1:
 Place the data retrieved from processing pageA in request scope
 and forward to the page and tell the particular html component to look
 for the data in the request under some defined name.
 -Solution 2:
 Insert and additional preparation action in between the action processing
 pageA and pageB; call it ShowPageB or something of the sort. ShowPageB
 action would access the data out of request scope and populate the form
 defined for pageB and forward to pageB.
 
 There are so many ways to approach this solution. It's subjective to the
 complexity of the process. I wouldn't stress over the fact of having
 to place data in the request scope temporarily.
 
 What I would stress is let Struts do its job where possible - like
 creating action forms.
 
 robert
 
 
 
 
 
 
 -Original Message-
 From: Michael Thompson [mailto:[EMAIL PROTECTED]
 Sent: Saturday, September 20, 2003 11:09 AM
 To: Struts Users Mailing List
 Subject: Re: Action Form Design Question
 
 
 //
 ///
 //I've been having issues with posting to this list, so I apologize if
 this is a repost.
 //
 ///
 
 That hits on some points, I did read that thread earlier this week(I'll
 even read it again), and I'm starting to agree on not shoving
 everything
 in the ActionForm, but I don't recall it hitting on an Action needing
 one form for input and one form for output.  If I totally
 ignore it, the
 second page will render, but what if I need my html form in the second
 JSP(JSPB) to be prepopulated with the results of the processing
 in ActionA?
 
 Scenario:
 I have jspA that is rendered with ActionFormA.  Now user submits that
 data to ActionA.  ActionA recieves an ActionFormA as its input form in
 execute.  Now ActionA needs to forward to jspB which expectes an
 ActionFormB, what is the cleanest way to handle this in struts(see code
 below).  Do struts users run across this case often or do I need to
 rethink my Action/Form design?
--m
 
 
 Robert Taylor wrote

RE: Action Form Design Question

2003-09-20 Thread Robert Taylor
This was discussed earlier this week. 

Some solutions are addressed here:
http://www.mail-archive.com/struts-user%40jakarta.apache.org/msg81101.html

robert


 -Original Message-
 From: Michael Thompson [mailto:[EMAIL PROTECTED]
 Sent: Friday, September 19, 2003 6:10 PM
 To: struts-user
 Subject: Action Form Design Question
 
 
 I've hit a stumbling block and I'm not quite sure how to work around 
 it.  I've written struts apps in the past and I've taken the approach of 
 putting everything in the ActionForm so that the jsp has a one stop shop 
 for all it's display needs.  So where I've hit an issue is when say I 
 have jsp A that is rendered with form A.  When user submits data to 
 action A, the ActionForm pushed to execute is form A.  What happens when 
 I need to forward from action A to jsp B which is rendered with form B?  
 I need to populate an ActionForm B to send to jsp B, but I don't have 
 one.  Is it normal to create a form of a different type in your 
 Action?  So essentially the code would look something like:
 
 public ActionForward execute(ActionMapping mapping, ActionForm form, 
 HttpServletRequest request, HttpServletResponse response)
  throws Exception
 {
FormA inputForm = (FormA)form;
Result result = doSomeCrunchingOnDataSubmittedViaFormA(inputForm);
  FormB outputForm = getInstanceOfFormB(mapping, request);  //this 
 would stash in request/session also
populateFormBWithResults(outputForm, result);
 
return mapping.findForward(success);
 }
 
 getInstanceOfFormB is a little hazy, but I did notice a method in 
 RequestUtils that might help.  Seems like this might be breaking some 
 struts abstractions by knowing what form to create etc.
 
 Is this the correct way to approach this or should I think about a 
 redesign of my forms and actions?  Thanks in advance!
  --m
 
 
 
 -
 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]



Re: Action Form Design Question

2003-09-20 Thread Michael Thompson
/
//I've been having issues with posting to this list, so I apologize if 
this is a repost.
/

That hits on some points, I did read that thread earlier this week(I'll 
even read it again), and I'm starting to agree on not shoving everything 
in the ActionForm, but I don't recall it hitting on an Action needing 
one form for input and one form for output.  If I totally ignore it, the 
second page will render, but what if I need my html form in the second 
JSP(JSPB) to be prepopulated with the results of the processing in ActionA?

Scenario:
I have jspA that is rendered with ActionFormA.  Now user submits that 
data to ActionA.  ActionA recieves an ActionFormA as its input form in 
execute.  Now ActionA needs to forward to jspB which expectes an 
ActionFormB, what is the cleanest way to handle this in struts(see code 
below).  Do struts users run across this case often or do I need to 
rethink my Action/Form design?
  --m

Robert Taylor wrote:

This was discussed earlier this week. 

Some solutions are addressed here:
http://www.mail-archive.com/struts-user%40jakarta.apache.org/msg81101.html
robert

 

-Original Message-
From: Michael Thompson [mailto:[EMAIL PROTECTED]
Sent: Friday, September 19, 2003 6:10 PM
To: struts-user
Subject: Action Form Design Question
I've hit a stumbling block and I'm not quite sure how to work around 
it.  I've written struts apps in the past and I've taken the approach of 
putting everything in the ActionForm so that the jsp has a one stop shop 
for all it's display needs.  So where I've hit an issue is when say I 
have jsp A that is rendered with form A.  When user submits data to 
action A, the ActionForm pushed to execute is form A.  What happens when 
I need to forward from action A to jsp B which is rendered with form B?  
I need to populate an ActionForm B to send to jsp B, but I don't have 
one.  Is it normal to create a form of a different type in your 
Action?  So essentially the code would look something like:

public ActionForward execute(ActionMapping mapping, ActionForm form, 
HttpServletRequest request, HttpServletResponse response)
throws Exception
{
  FormA inputForm = (FormA)form;
  Result result = doSomeCrunchingOnDataSubmittedViaFormA(inputForm);
FormB outputForm = getInstanceOfFormB(mapping, request);  //this 
would stash in request/session also
  populateFormBWithResults(outputForm, result);

  return mapping.findForward(success);
}
getInstanceOfFormB is a little hazy, but I did notice a method in 
RequestUtils that might help.  Seems like this might be breaking some 
struts abstractions by knowing what form to create etc.

Is this the correct way to approach this or should I think about a 
redesign of my forms and actions?  Thanks in advance!
--m



-
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]


Re: Action Form Design Question

2003-09-19 Thread K.C. Baltz
Personally, I've tried to stay away from putting data in the ActionForm 
that isn't related to an actual form submission value.  So if I have a 
drop down with a list of countries for the user to choose, the list of 
countries goes into the request attributes and the single choosen 
country value goes into the ActionForm.  That way, you don't need to 
repopulate the Country List when the user submits their form, something 
you might have to do if you put the list into the ActionForm. 

This is just what has worked for me.  I've definitely struggled with 
where to put data and I'm going to be curious to see other replies to 
your question.

K.C. 

Michael Thompson wrote:

I've hit a stumbling block and I'm not quite sure how to work around 
it.  I've written struts apps in the past and I've taken the approach 
of putting everything in the ActionForm so that the jsp has a one stop 
shop for all it's display needs.  So where I've hit an issue is when 
say I have jsp A that is rendered with form A.  When user submits data 
to action A, the ActionForm pushed to execute is form A.  What happens 
when I need to forward from action A to jsp B which is rendered with 
form B?  I need to populate an ActionForm B to send to jsp B, but I 
don't have one.  Is it normal to create a form of a different type 
in your Action?  So essentially the code would look something like:

public ActionForward execute(ActionMapping mapping, ActionForm form, 
HttpServletRequest request, HttpServletResponse response)
throws Exception
{
  FormA inputForm = (FormA)form;
  Result result = doSomeCrunchingOnDataSubmittedViaFormA(inputForm);
FormB outputForm = getInstanceOfFormB(mapping, request);  //this 
would stash in request/session also
  populateFormBWithResults(outputForm, result);

  return mapping.findForward(success);
}
getInstanceOfFormB is a little hazy, but I did notice a method in 
RequestUtils that might help.  Seems like this might be breaking some 
struts abstractions by knowing what form to create etc.

Is this the correct way to approach this or should I think about a 
redesign of my forms and actions?  Thanks in advance!
--m



-
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]


RE: Action Form Design Question

2003-09-19 Thread Ray Madigan
I populate a bean with the data in the Action class and store the
bean in a request scope attribute.  I like to keep the Form as
clean and small as I can.  I usually use the same form for multiple
jsp's so I don't need the clutter of all of the collections of
stuff in the Form.

Just My Opinion! :-)

-Original Message-
From: K.C. Baltz [mailto:[EMAIL PROTECTED]
Sent: Friday, September 19, 2003 5:16 PM
To: Struts Users Mailing List
Subject: Re: Action Form Design Question


Personally, I've tried to stay away from putting data in the ActionForm 
that isn't related to an actual form submission value.  So if I have a 
drop down with a list of countries for the user to choose, the list of 
countries goes into the request attributes and the single choosen 
country value goes into the ActionForm.  That way, you don't need to 
repopulate the Country List when the user submits their form, something 
you might have to do if you put the list into the ActionForm. 

This is just what has worked for me.  I've definitely struggled with 
where to put data and I'm going to be curious to see other replies to 
your question.


K.C. 

Michael Thompson wrote:

 I've hit a stumbling block and I'm not quite sure how to work around 
 it.  I've written struts apps in the past and I've taken the approach 
 of putting everything in the ActionForm so that the jsp has a one stop 
 shop for all it's display needs.  So where I've hit an issue is when 
 say I have jsp A that is rendered with form A.  When user submits data 
 to action A, the ActionForm pushed to execute is form A.  What happens 
 when I need to forward from action A to jsp B which is rendered with 
 form B?  I need to populate an ActionForm B to send to jsp B, but I 
 don't have one.  Is it normal to create a form of a different type 
 in your Action?  So essentially the code would look something like:

 public ActionForward execute(ActionMapping mapping, ActionForm form, 
 HttpServletRequest request, HttpServletResponse response)
 throws Exception
 {
   FormA inputForm = (FormA)form;
   Result result = doSomeCrunchingOnDataSubmittedViaFormA(inputForm);
 FormB outputForm = getInstanceOfFormB(mapping, request);  //this 
 would stash in request/session also
   populateFormBWithResults(outputForm, result);

   return mapping.findForward(success);
 }

 getInstanceOfFormB is a little hazy, but I did notice a method in 
 RequestUtils that might help.  Seems like this might be breaking some 
 struts abstractions by knowing what form to create etc.

 Is this the correct way to approach this or should I think about a 
 redesign of my forms and actions?  Thanks in advance!
 --m



 -
 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]