About a month ago I recommend this same thing. The problem really is
that Struts has no concept of a page, so it's impossible to tell the
difference between actions that perform business logic and actions that
just front rendering of a page.
You really need a page-based framework to make this happened. My
personal recommendation was to include a "page" property on each action
mapping which you consider a page. Then in the controller, the last URI
can be tracked if this attribute is present in the action mapping. I
really recommend this approach to you.
It's such a custom solution though that I couldn't recommend it to be
included into the Struts Framework. If Struts ever does involve into a
page-based controller, then there is leverage to do such a thing... but
at the present time you can totally emulate what you need by what I said
above.
Paul
Thomas Hamacher wrote:
Dear everyone,
after spending a lot of time with googling and multiple tries with different
approaches and also my questions to the struts-user-mailinglist didn´t come
to a solution, I would like to as you guys if there is a way or not. So I´m
sorry, if I use the developers-list for a stupid user-question, but I don´t
know any place else I might find a solution to this problem:
My question is: Does the struts-framework provide a possibility to forward
back to the page you came from?
I can´t believe, that I´m the only one, who has this problem and I don´t think
there is no struts-conform solution. Let me give you the following scenarios
so that you know what I´m talking about.
- I wanna show a login-box on every page. If the user logs into the webpage,
the login-action executes and afterwards the user is redirected to the page
he has been before, but the userMenu is displayed instead the login-box. If
the authorization fails, he´ll be redirected to the same page, showing im an
error-message
- On top of every page is a possibility to change the language through
clicking on a button with a language-flag. After changing the locale, the
user will be redirected back to the page he came from, but using a different
language.
These are only 2 examples to get an idea, what I´m talking about. I tried the
following:
- using the referrer from the request. But this could not be a solution, as it
is not struts-conform and there are many possibilities, that the referrer
might not be availabe
- using the ActionMapping-Object´s input-Value. This doesn´t work together
with tiles, as the input-value is only part of the tile, but I need the
information of the "parent"-tile. Furtermore this doesn´t work if the last
action was a ForwardAction. Other attributes in the mapping-object only refer
to the next page, but not the current page.
- saving the last ActionForward in the session. This does only work, if the
user uses one browser-window and does never use the back-button, because
otherwise he´ll be redirected to an unexpected page.
- saving the tiles-definition in a hidden field on the jsp-page. This would
prevent the problem with the unexpected page, but does only work, if a form
will be submitted, that has a hidden-field with this value. Or is there a way
to put a parameter into the request without submitting a form and without
adding it to the URI.
- Adding a forward to every ActionMapping and extend the BaseAction to forward
to a specified forward. This won´t work, because of tiles as well.
Unfortunately you never know, which pages include this tile, so you can´t use
a static forward.
So I´d expect a solution somewhere near the RequestProcessor, but especially
with the ComposableRequestProcessor, this goes very deep into the
struts-architecture. I´m open to do this, but I don´t know the place where to
look at.
Is there a way I haven´t looked at or does anyone have an idea how to solve
this, as you probably know the struts-processes a lot better than I do. Or is
there a special reason, that this could not be implemented into the
struts-framework because of technically restrictions?
I´d greately appriciate any help to this topic. Sorry for asking this question
in the developers-list again, but I don´t know any other place to ask for a
solution, as I could not get any information to solve this problem.
I hope, someone knows a solution to this or might share some ideas.
Many thanks
Thomas
---------------------------------------------------------------------
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]