Thanks Christian,
I tried to implement it this way, but found implementing
activateExternalPage on every page a bit of an overkill!!
With my solution it 'just works' for every (GET) page with no additional
work. But surely there is a better way to do it than both of these.
PS I've removed the hack of using DescriptionReceiver to retrieve
HttpServletRequest from WebRequest (I found I can just inject
HttpServletRequest).
Paul.
Christian Dutaret wrote:
Check javadoc for
ExternalCallback<http://tapestry.apache.org/tapestry4.1/apidocs/org/apache/tapestry/callback/ExternalCallback.html>
ApplicationPage:
public abstract class ApplicationPage extends BasePage
{
....
public abstract HttpServletRequest getRequest();
public void pageValidate(PageEvent event)
{
if (Boolean.parseBoolean(getSecure()) &&
!getVisit().isAuthentic())
{
Login page = getLoginPage();
HttpServletRequest request = getRequest();
if (request.getMethod().equals("GET"))
page.setForwardTo(request.getRequestURL() + "?" +
request.getQueryString());
throw new PageRedirectException(page);
}
}
}
Login
public abstract class Login extends ApplicationPage
{
...
public abstract String getForwardTo();
public abstract void setForwardTo(String forwardTo);
public IPage doSubmit()
{
User user = getUserService().getUserByUsername(getUsername());
if (user != null && user.getPassword().equals(getPassword()))
{
getVisit().setUser(user);
if (getForwardTo() == null)
{
Home page = getHomePage();
page.setMessage(user.getFullName() + " successfully
logged in.");
return page;
}
throw new RedirectException(getForwardTo());
}
setError("Invalid login. Please try again.");
return this;
}
}
Login.html:
...
<input type="hidden" jwcid="[EMAIL PROTECTED]" value="ognl:forwardTo"/>
...
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]