• remembering last visited pages and redirection

Not sure if this is the only (or best!) way but... Suppose you want to redirect your response to an intermediate page (like a login page) and then return to what the user was doing or seeing. There are two methods in Component just for that:

redirectToInterceptPage(Page page)

and 

continueToOriginalDestination()

In your current Page you may use:

public class WishlistPage extends WebPage {

    public WishlistPage(PageParameters params) {
        User user = ((MyAppSession)getSession()).getUser(); // MyAppSession extends WebSession and stores the current user
        if (!user.loggedIn()) {
            redirectToInterceptPage(new LoginPage());
        }
             ...
    }
    ...
 }

And in LoginPage:

public class LoginPage extends WebPage {     public LoginPage(PageParameters params) {
	// Custon login form
	LoginForm form = new LoginForm("form");
	add(form);
    }
...
    public class LoginForm extends Form {
        ...	public LoginForm(String id) {
		super(id);
		// add login components
		add(new TextField("username" ...);
		...
	}
        protected void onSubmit() {
		...
		if (loginOk(username, password)) {
                	// continue to original requested destination if exists, otherwise go to a default home page
                	if (!continueToOriginalDestination()) {
                		setResponsePage(getApplication().getHomePage());
                	}
            	}
        }
    }
} 
  • No labels