Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3

...

Code Block
...

Link logoutLink = new Link("my-link-wicket-id") {

	public void onClick() {
		// you can use "getSession().invalidateNow();" if you want to remove all wicket components from the sessiongetSession().invalidate();
		getRequestCycle().setRedirect(true);
		setResponsePage(WhereEverYouWantToRedirect.class); [1]
	}
};

...

You can also redirect before a page renders:

Code Block

...

	@Override
	protected void onBeforeRender() {
		super.onBeforeRender();
		getRequestCycle().setRedirect(true);
		throw new RestartResponseException(WhereEverYouWantToRedirect.class);
	}

...

If you need to redirect to an external webpage...

Code Block

...

Link logoutLink = new Link("my-link-wicket-id") {

	public void onClick() {
		getSession().invalidate();
		getRequestCycle().setRedirect(true);
		setResponsePage(WhereEverYouWantToRedirect.classsetRequestTarget(new RedirectRequestTarget("http://www.another-web-site.com") );
	}
};

...

[1] it is important to use setResponsePage() variant that takes a page class and not a page instance because a page instance would be stored in session that is now marked for invalidation - thus resulting in a page expired error