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]

Reply via email to