one stange thing is that the callback i set doesn't persist in the login page.

public abstract class LoginPage extends BlaskanBasePage {

    @Bean
    public abstract ValidationDelegate getDelegate();
        
        public abstract String getUserName();
    public abstract String getPassword();
    
        public abstract void setNextPage(ICallback callback);
        public abstract ICallback getNextPage();
        
        public void doLogin(IRequestCycle cycle) {
                
                ValidationDelegate delegate = getDelegate();

        if(!delegate.getHasErrors()) {
                try {
                        UserState user = getUserState();
                        user.doLogin(getUserName(), getPassword());
                        ICallback callback = getNextPage();

                        if (callback != null) {
                                callback.performCallback(cycle);
                        } else {
                                System.out.println("callback was null");
                                cycle.activate("Home");
                        }
                } catch(LoginException e) {
                        //add error to delegate
                        delegate.setFormComponent(null);
                        delegate.record(getMessages().getMessage("login-error") 
+ "
(" + e.getMessage() + ")", ValidationConstraint.CONSISTENCY);
                }
        }
        
        
        }
        
}


my page that redirects to the login page looks like this (only showing
important stuff)

        @InjectPage("Login")
        public abstract LoginPage getLoginPage();

        public void pageValidate(PageEvent event) {
                if(!getSessionScopeManager().exists("user-state")) {
                        LoginPage login = getLoginPage();
                        System.out.println("setting callback");
                        login.setNextPage(new PageCallback(this));
                        throw new PageRedirectException(login);
                } else if(!getUserState().hasAdminAbilities()) {
                        throw new PageRedirectException("Home");
                }
        }


now the output I get is:
setting callback
callback was null

so for some reason the callback is set before the LoginPage is
activated and then when i login (all happening on the loginpage) the
callback that is supposed to take me back is null :(



On 9/19/05, Ted Steen <[EMAIL PROTECTED]> wrote:
> I'm looking at it right now. I remembered that it was in Kents book I read it.
> 
> thanks!
> 
> On 9/19/05, Martijn Hinten <[EMAIL PROTECTED]> wrote:
> > Kent Tong does an excellent job in describing this in chapter 4 of
> > his e-book Enjoying Web Development With Tapestry:
> > www.agileskills2.org. Pages 121 and further contain an example that
> > may be is what you are looking for.
> >
> > It indeed uses ICallback.
> >
> > ---- Original Message ----
> > From: [EMAIL PROTECTED]
> > To: [email protected]
> > Subject: RE: A way to make user e.g. login and then redirect back to
> > the page we started from
> > Date: Mon, 19 Sep 2005 16:38:08 +0200
> >
> > >Hi!
> > >
> > >If in the middle of an application a user need to login to proceed it
> > >would be nice to be able to get back to the place he/she came from
> > >after login/registration is completed.
> > >My first thought was that I could save the IPage I'm coming from, but
> > >then I remembered that I have seen this beeing done somewhere, and
> > >that they didn't use IPage.
> > >Could someone please lead me in the right direction?
> > >
> > >--
> > >/ted
> > >
> > >---------------------------------------------------------------------
> > >To unsubscribe, e-mail: [EMAIL PROTECTED]
> > >For additional commands, e-mail: [EMAIL PROTECTED]
> > >g
> >
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> >
> >
> 
> 
> --
> /ted
> 


-- 
/ted

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

Reply via email to