Excerpt |
---|
- 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:
Code Block |
---|
redirectToInterceptPage(Page page)
|
and
Code Block |
---|
continueToOriginalDestination()
|
In your current Page you may use:
Code Block |
---|
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:
Code Block |
---|
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());
}
}
}
}
}
|