struts-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Adam Lipscombe" <adam.lipsco...@expensys.com>
Subject Best practice for formbean scope and handling form validation errors
Date Fri, 04 Feb 2005 16:45:45 GMT
Folks,


I have 2 actions which look (sort of) like this:

<action name="myActionForm" path="/initAction" scope="request"
type="com.xxx.yyy.myAction" validate="false" >
   <forward name="displayForm" path="/Form1.jsp" />
</action>

<action input="/Form1.jsp" name="myActionForm" path="/processAction"
scope="request" validate="true" >
  <forward name="nextStep" path="/Form2.jsp" />
</action> 

If the Form1.jsp is submitted the "/processAction.do" gets called.
Validation occurs in either the "myActionForm" actionform or the "myAction"
action.

If the validation fails a struts ActionErrors object is populated and
Form1.jsp is re-displayed by getting the forward like this:

 forward = actionMapping.getInputForward();





But, if the scope of the "myActionForm" formbean is "request" a new instance
of the formbean is constructed when Form1.jsp is re-displayed. Hence none of
the data that it originally held in it is present and the form fails. The
formBean was originally populated by /initAction.do
In order to preserve the myAction formBean I have to make its scope
"session".

I need to re-display the Form1.jsp if validation fails so that it shows the
correct formBean values as populated by /initAction.do. However it seems
that eventually I will have a cluttered session object with many formBeans
that I don't need immediately.


Is this normal? 
Or is there a better way to do it where one can have formBeans in "request"
scope and still preserve their contents if validation fails?
What is best practice?


TIA -Adam


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org


Mime
View raw message