I'm currently running into an issue w/ data reposting after I've forwarded to
another Action.

In my ActionForm, say I have an ArrayList of ApplicationUser objects.  In the
associated JSP page, I list the data for each ApplicationUser object in a HTML
table (one row for one ApplicationUser).

The flow I'm trying to setup is as follows:
1. User types in some URL that maps to a setup type action.  In this setup Action
the ApplicationUser objects are retrieved from persistence and loaded into the
ActionForm.  The request is then forward to the appropriate JSP page.

2. The user clicks a checkbox on one of the rows to denote that they'd like
that specific ApplicationUser deleted and then hits "submit".  

3. The HTML form data is posted to a URL that maps to an Action that processes
the data appropriately (in this case deleting the ApplicationUser).  The request
is then forwarded to the same URL as in step 1 (so that the HTML page they just
came from is redisplayed w/ the updated data).


If I understand correctly, these are the sequence of events at a technical level:


1. User posts data for saving (ie hits 'Submit' button)

2. Struts invokes reset() on ActionForm.  
** NOTE: I needed to implement a hack here - normally in the reset() method
you return all attributes to non-valued states.  So in this case the ArrayList
that would hold all the ApplicationUser objects is cleared out.  However, if
I do clear them out, I run into an IndexOutOFBoundsException because Struts
will try to populate the form values into an empty ArrayList of ApplicationUser
objects.  As a result, in the reset method I have to repopulate the ApplicationUser
objects back into the Form.  I've been on several Struts projects and have never
found a good way of dealing w/ this (populating form list data in two spots:
setup Action and reset method).  If anyone has any good ideas, I'd LOVE to hear
them!

3. Struts populates data from HTML post into ActionForm

4. Struts forwards to the Action that does the processing.

5. The Action deletes the appropriate user from persistence and forwards to
a setup type Action.

6. Struts invokes reset() on ActionForm
** NOTE: Now at this point one user was deleted so the size of the ArrayList
will be smaller than when we started.

7. Struts attempts to populate data from the original HTML post into the ActionForm.
 When Struts tries to access the last element, it throws an IndexOutOfBoundsException
(because the number of ApplicationUser objects is now reduced by one).

I'm not 100% certain that step #7 is taking place, but it's a reasonable explanation
for why I get the IndexOutOfBoundsException.

So my question to the group is
- Can someone confirm that step #7 is occuring
- Recommend any alternative approachs to sidestep the problem or prevent the
reset() method from getting invoked before the setup Action.
* Extra points for anyone who can recommend a good way of dealing w/ the hack
noted in step #2 :)


John M. Corro
Cornerstone Consulting

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

Reply via email to