I have two situations I am trying to address with one generic solution:
1) For every update action, I had to maintain two separate "result
confirmation" JSPs, one stating "Update Successful" and one "Updated failed
due to system error. Try again later." (must be a system error, as any
data validation errors would have been returned to original data entry
JSP.) Each of these also has a button with a unique link to take it to the
appropriate action to build what should be the next view for that user (I
want to be able to bounce them back to a page that was most recent or
appropriate for where they were in the application.)
2) On session timeout, I want to bounce the user to a login page, then
bring them back to the page/action they were attempting to go to, or the
most appropriate location, based on the application knowing only the user
id of the user and no other context.
If you could review my plan below and let me know if it is sound from a
Struts perspective OR whether there are Struts best practices to accomplish
the same thing in a more elegant way, that would be great. I am pretty
sure there is a bug in how I propose using the various session attibutes
below, but please don't worry with that - I'll sort it out when I
implement. I am really seeking an opinion on the overall approach.
Thanks!
MY PLAN:
Keep three attributes in the session object up to date at all times:
a) previousAction - the most recent action completed by the user
b) currentAction - the next action the user was attempting when the
error or session timeout occurred
c) nextAction - the next action that should be invoked after a
successful action (ONLY after successful actions)
c) previousActionResult - the message to be displayed on
actionResult.jsp (after ALL update actions, whether successful, failed, or
timed-out)
Psuedo-code for a session timeout scenario:
User is on ChangePasswordDef and presses button to process change with
ChangePasswordAction
AuthenticationFilter (this is a filter that precedes ALL actions. It
checks authority of the user to execute the action, logs that the user
executed the action, and looks for session timeout)
set previousAction = currentAction (no longer prev action. In fact,
null in this scenario.)
set currentAction = ChangePassword
If new session (session timed out before this action)
set previousActionResult = "...inactive too long..."
forward to actionResult.jsp
actionResult.jsp
display previousActionResult
render OK button to go to GoToLoginAction
GoToLoginAction
forward to LoginDef (Tiles)
LoginDef
invoke LoginAction
LoginAction
process login successfully
If currentAction != null
forward to actionResultAction
actionResultAction
If currentAction = "ChangePassword"
forward to ChangePasswordAction
AuthenticationFilter
pass authorization check and do not detect session timeout
if current action != previousAction
set previousAction = BuildHomeViewAction
currentAction = ChangePassword
ChangePasswordAction
(finally where the user wanted to be!)
--
"NOTICE: The information contained in this electronic mail transmission is
intended by Convergys Corporation for the use of the named individual or
entity to which it is directed and may contain information that is
privileged or otherwise confidential. If you have received this electronic
mail transmission in error, please delete it from your system without
copying or forwarding it, and notify the sender of the error by reply email
or by telephone (collect), so that the sender's address records can be
corrected."
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]