Sunday, March 27, 2011

Apache Click v2.3.0 final now available

Apache Click 2.3.0 final is available for download. v2.3.0 contains important new features including Ajax support, Page Actions and light-weight stateful controls. In addition there are new documentation, examples and a slew of other enhancements.

New features and improvement:
  • Ajax support.
  • Page Action support.
  • Stateful Controls.
  • Improve fields to only be processed if they have an incoming request parameter. This improvement streamlines dynamic forms since fields added at runtime during s POST request won't bind their values and won't be validated for that request. In subsequent requests the Field will have an incoming parameter and so will have it's value bound and validated. Another advantage is that dynamically added Fields won't have their default value overridden in the POST request they were added in. This issue has been raised by Nirmal Solanki [CLK-722].
  • Added automapping support for GAE with a caveat that page templates must be placed under the folders page or pages. This issue was raised by Ke Sun [CLK-639].
  • Added MessagesMapService interface to support pluggable messages map implementations [CLK-655].
  • Improved MessagesMap to be extendable and customizable [CLK-728].
  • Added support for loading DateField translations for month and day names from the JDK. [CLK-650].
  • Added support for Menus that do not have roles defined. If no roles are defined, IsUserInRoles passes a null argument to hasAccess to determine whether access is permitted to menus without roles [CLK-724]. 
  •   Added support for multiple TabbedPanels on a page. To programmatically activate a specific TabbedPanel use the tabPanelIndex- request parameter, for example tabPanelIndex-myTabbedPanel [CLK-753].
New documentation:

New examples:
Removed:
  • Removed the ability to automatically bypass validation for Forms through JavaScript. This ability was added in 2.2.0 but raised concerns over security and was dropped for 2.3.0. If you used this feature in existing applications, please see the Upgrade path for a safe alternative to bypass validation. We apologize for the inconvenience.

Deprecated:
  • Deprecated stateful page support: Page.setStateful().
  • Stateful pages had the following issues:
    • Stateful pages was introduced to make it easier to store page state across multiple HTTP requests. However developing a stateful page is very different from developing a stateless one and this lead to Click applications that are inconsistent and harder to maintain.
    • In addition stateful page support has never been implemented consistently across the framework and some components did not work correctly.
    • Stateful pages are very coarse grained, making it difficult to control which objects are stored in the session.
    • Stateful pages have also introduced unnecessary complexity in the framework itself, which can now be phased out.
    Unfortunately there is no direct upgrade path from a stateful page. However the majority of use cases are catered for by the new stateful support in the controls: Table, Form, TabbedPanel, Field and AbstractLink.

The Apache Click team

Monday, January 24, 2011

Apache Click v2.3.0 Release Candidate 1 now available

Apache Click 2.3.0 Release Candidate 1  is available for download. v2.3.0 contains important new features including Ajax support, Page Actions and light-weight stateful controls. In addition there are new documentation, examples and a slew other enhancements.

New features and improvement:
  • Ajax support.
  • Page Action support.
  • Stateful Controls.
  • Improve fields to only be processed if they have an incoming request parameter. This improvement streamlines dynamic forms since fields added at runtime during s POST request won't bind their values and won't be validated for that request. In subsequent requests the Field will have an incoming parameter and so will have it's value bound and validated. Another advantage is that dynamically added Fields won't have their default value overridden in the POST request they were added in. This issue has been raised by Nirmal Solanki [CLK-722].
  • Added automapping support for GAE with a caveat that page templates must be placed under the folders page or pages. This issue was raised by Ke Sun [CLK-639].
  • Added MessagesMapService interface to support pluggable messages map implementations [CLK-655].
  • Improved MessagesMap to be extendable and customizable [CLK-728].
  • Added support for loading DateField translations for month and day names from the JDK. [CLK-650].
  • Added support for Menus that do not have roles defined. If no roles are defined, IsUserInRoles passes a null argument to hasAccess to determine whether access is permitted to menus without roles [CLK-724].
  •  Added support for absolute page classnames when configuring pages in click.xml. Absolute classnames aids with IDE hot-linking and is less confusing to use. [CLK-704]. 
  • Fixed escaping of control values and attributes to be XML friendly in order to support Ajax requests. Previously all HTML characters was escaped, now only the following characters are escaped: <, >, ", ', & [CLK-674]. 
New documentation:

New examples:
Removed:
  • Removed the ability to automatically bypass validation for Forms through JavaScript. This ability was added in 2.2.0 but raised concerns over security and was dropped for 2.3.0. If you used this feature in existing applications, please see the Upgrade path for a safe alternative to bypass validation. We apologize for the inconvenience.

Deprecated:
  • Deprecated stateful page support: Page.setStateful().
  • Stateful pages had the following issues:
    • Stateful pages was introduced to make it easier to store page state across multiple HTTP requests. However developing a stateful page is very different from developing a stateless one and this lead to Click applications that are inconsistent and harder to maintain.
    • In addition stateful page support has never been implemented consistently across the framework and some components did not work correctly.
    • Stateful pages are very coarse grained, making it difficult to control which objects are stored in the session.
    • Stateful pages have also introduced unnecessary complexity in the framework itself, which can now be phased out.
    Unfortunately there is no direct upgrade path from a stateful page. However the majority of use cases are catered for by the new stateful support in the controls: Table, Form, TabbedPanel, Field and AbstractLink.

The Apache Click team