1.2 is the previous stable release.

List of major changes from 1.1 to 1.2

See the changelist for minor changes and bug fixes.

Formerly, you had to address a bookmarkable page like this:

myapp?bookmarkablePage=com.my.Page

in Wicket 1.2 and up, this should be changed in this:

myapp?wicket:bookmarkablePage=:com.my.Page

where wicket:bookmarkablePage is the parameter name, com.my.Page is the page name, and : is the seperator between the page map and the page. In this case, the page map is null.

settings refactor

*Your MyApplication initialization code should be moved from MyApplication constructor to MyApplication.init() to make sure that the application gets initialized properly. Settings provided in the constructor are in danger of being replaced by Wicket later on in the initialization phase by default values.

*Application now expects the home page class provided by implementing abstract Application.getHomePage() instead of pushing it into the settings object

*Application.getPages() and ApplicationPages have been removed, its properties are now located in Application.getApplicationSettings()

*getPages().putClassAlias() has been replaced by a more flexible mounting strategy. See WebApplication.mount() for details.

*Application.getAuthorizationStrategy() is no longer supported. instead use
Application.getSecuritySettings().setAuthoriazationStrategy(...)

*Application.getLocalizer() is no longer supported. instead use Application.getMarkupSettings().setLocalizer(...)

*Crypt setup has changed. Application.newCrypt(), ApplicationSettings.setEncryptionKey(), and ApplicationSettings.setCryptClass() are gone. Instead use Application.getSecuritySettings().setCryptFactory(...). By default a CachingSunJceCryptFactory will be used with ISecuritySettings.DEFAULT_ENCRYPTION_KEY.

*Application.getAdditionalMarkupHandler() is gone. instead use Application.getMarkupSettings().setMarkupParserFactory(new MarkupParserFactory(IMarkupFilter[] additionalFilters))

*ApplicationSettings.configure() methods moved to Application

*You used to be able to get the HttpSession by doing ((WebSession)getSession())getHttpSession(). Due to some horrible misuse we saw, and due to the fact that WebSession doesn't have to be backed by HttpSession at all, we decided to remove the getHttpSession method. If you /really/ need the HttpSession (for instance for integration with non-Wicket programs), you can get it as follows: ((WebRequest)getRequest).getHttpServletRequest().getSession().

Bordered Pages

In order to implement bordered pages you were asked to do something like

	/**
	 * Constructor.
	 */
	public BorderedPage()
	{
		border = new PageBorder("border");
		super.add(border);
	}

	/**
	 * @see wicket.MarkupContainer#add(wicket.Component)
	 */
	public MarkupContainer add(final Component child)
	{
		// Add children of the page to the page's border component
		border.add(child);
		return this;
	}

	/**
	 * @see wicket.MarkupContainer#removeAll()
	 */
	public void removeAll()
	{
		border.removeAll();
	}

	/**
	 * @see wicket.MarkupContainer#replace(wicket.Component)
	 */
	public MarkupContainer replace(Component child)
	{
		return border.replace(child);
	}
	
	/**
	 * @see wicket.MarkupContainer#autoAdd(Component)
	 */
	public boolean autoAdd(final Component component)
	{
	    return border.autoAdd(component);
	}

Now it is much simpler. Just do

	public BorderedPage()
	{
		border = new PageBorder("border");
		border.setTransparentResolver(true);
		super.add(border);
	}

As a consequence, add(), remove(), removeAll() and autoAdd() are now final and not be replaced any more.