tag:blogger.com,1999:blog-25875000560918297052024-02-20T11:27:03.446-08:00Click FrameworkMalcolm Edgarhttp://www.blogger.com/profile/15663016100232653779noreply@blogger.comBlogger35125tag:blogger.com,1999:blog-2587500056091829705.post-24824778792567219752011-03-27T04:10:00.000-07:002011-03-27T11:53:51.655-07:00Apache Click v2.3.0 final now availableApache Click 2.3.0 final is available for download. v2.3.0 contains important new features including <a href="http://click.apache.org/docs/user-guide/html/ch04.html">Ajax</a> support, <a href="http://click.apache.org/docs/user-guide/html/ch02s07.html">Page Actions</a> and light-weight <a href="http://click.apache.org/docs/click-api/org/apache/click/Stateful.html">stateful controls</a>. In addition there are new documentation, examples and a slew of other enhancements.<br />
<br />
<ul><li><a href="http://click.apache.org/">Click Home</a></li>
<li><a href="http://click.apache.org/docs/roadmap-changes.html#2.3.0">Roadmap and Changes</a> - full list of new features, improvements and bug fixes</li>
<li><a href="http://click.apache.org/docs/upgrade-path.html#2.3.0">Upgrade Path</a> - please see the upgrade path when upgrading from 2.2.0 or earlier.</li>
<li><a href="http://www.apache.org/dyn/closer.cgi/click/click/2.3.0/click-2.3.0.zip">Download Click 2.3.0</a></li>
<li><a href="http://repo1.maven.org/maven2/org/apache/click/">Maven bundles</a> </li>
<li><a href="http://click.avoka.com/click-examples/">Live examples</a></li>
</ul><b>New features and improvement:</b><br />
<ul><li><a href="http://click.apache.org/docs/user-guide/html/ch04.html">Ajax</a> support.</li>
<li><a href="http://click.apache.org/docs/user-guide/html/ch02s07.html">Page Action</a> support. </li>
<li><a href="http://click.apache.org/docs/click-api/org/apache/click/Stateful.html">Stateful</a> Controls.</li>
<li>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 [<a href="https://issues.apache.org/jira/browse/CLK-722" target="_blank">CLK-722</a>]. </li>
<li> Added automapping support for GAE with a caveat that page templates must be placed under the folders <tt>page</tt> or <tt>pages</tt>. This issue was raised by Ke Sun [<a href="https://issues.apache.org/jira/browse/CLK-639" target="_blank">CLK-639</a>]. </li>
<li> Added <a href="http://click.apache.org/docs/click-api/org/apache/click/service/MessagesMapService.html">MessagesMapService</a> interface to support pluggable messages map implementations [<a href="https://issues.apache.org/jira/browse/CLK-655" target="_blank">CLK-655</a>]. </li>
<li> Improved <a href="http://click.apache.org/docs/click-api/org/apache/click/util/MessagesMap.html">MessagesMap</a> to be extendable and customizable [<a href="https://issues.apache.org/jira/browse/CLK-728" target="_blank">CLK-728</a>]. </li>
<li> Added support for loading <a href="http://click.apache.org/docs/extras-api/org/apache/click/extras/control/DateField.html">DateField</a> translations for month and day names from the JDK. [<a href="https://issues.apache.org/jira/browse/CLK-650" target="_blank">CLK-650</a>]. </li>
<li> Added support for Menus that do not have <tt>roles</tt> defined. If no roles are defined, <a href="http://click.apache.org/docs/extras-api/org/apache/click/extras/control/Menu.html#isUserInRoles%28%29">IsUserInRoles</a> passes a <tt>null</tt> argument to <a href="http://click.apache.org/docs/extras-api/org/apache/click/extras/security/AccessController.html#hasAccess%28javax.servlet.http.HttpServletRequest,%20java.lang.String%29">hasAccess</a> to determine whether access is permitted to menus without roles [<a href="https://issues.apache.org/jira/browse/CLK-724" target="_blank">CLK-724</a>]. </li>
<li> Added support for multiple TabbedPanels on a page. To programmatically activate a specific TabbedPanel use the <tt>tabPanelIndex-<panel-name></panel-name></tt> request parameter, for example <tt>tabPanelIndex-myTabbedPanel</tt> [<a href="https://issues.apache.org/jira/browse/CLK-753" target="_blank">CLK-753</a>]. </li>
</ul><b>New documentation:</b><br />
<ul><li>Added a section covering the new <a href="http://click.apache.org/docs/user-guide/html/ch03s08.html">Behavior</a> support.</li>
<li>Added a chapter on <a href="http://click.apache.org/docs/user-guide/html/ch04.html">Ajax</a>, covering <a href="http://click.apache.org/docs/user-guide/html/ch04s02.html">AjaxBehaviors</a>, <a href="http://click.apache.org/docs/user-guide/html/ch04s03.html">Ajax execution flow</a> and a full <a href="http://click.apache.org/docs/user-guide/html/ch04s04.html">example</a>.</li>
<li>Added a section covering the new <a href="http://click.apache.org/docs/user-guide/html/ch02s07.html">Page Action</a> support.<br />
</li>
</ul><br />
<b>New examples:</b><br />
<ul><li>Added <a class="external" href="http://click.avoka.com/click-examples/" target="_blank">examples</a> showcasing the new Ajax support. See the Ajax Menu for the full list of examples.</li>
<li>Added an example showing how to integrate a <a class="external" href="http://click.avoka.com/click-examples/panel/tabbed-panel-with-controls.htm" target="_blank">TabbedPanel, Form and Table</a>.</li>
<li>Added an example showing a <a class="external" href="http://click.avoka.com/click-examples/panel/stateful-tabbed-panel-demo.htm" target="_blank">Stateful TabbedPanel</a>.</li>
<li>Added an example <a href="http://click.avoka.com/click-examples/control/field-separator-demo.htm" target="_blank">FieldSeparator Control</a> and example usage page [<a href="https://issues.apache.org/jira/browse/CLK-544" target="_blank">CLK-544</a>]. </li>
</ul><b>Removed:</b> <br />
<ul><li>Removed the ability to automatically <tt>bypass validation</tt> 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 <a href="http://click.apache.org/docs/upgrade-path.html#removed-bypass-validation">Upgrade path</a> for a safe alternative to <tt>bypass validation</tt>. We apologize for the inconvenience. </li>
</ul><br />
<b>Deprecated:</b><br />
<ul><li>Deprecated stateful page support: <a href="http://click.apache.org/docs/click-api/org/apache/click/Page.html#setStateful%28boolean%29">Page.setStateful()</a>. </li>
<li class="change"> Stateful pages had the following issues: <br />
<ul><li> 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. </li>
<li> In addition stateful page support has never been implemented consistently across the framework and some components did not work correctly. </li>
<li> Stateful pages are very coarse grained, making it difficult to control which objects are stored in the session. </li>
<li> Stateful pages have also introduced unnecessary complexity in the framework itself, which can now be phased out. </li>
</ul>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. </li>
</ul><br />
The Apache Click teamBob Schellinkhttp://www.blogger.com/profile/10996406110751921749noreply@blogger.com0tag:blogger.com,1999:blog-2587500056091829705.post-26396057011225885332011-01-24T02:32:00.000-08:002011-01-29T17:55:26.764-08:00Apache Click v2.3.0 Release Candidate 1 now availableApache Click 2.3.0 Release Candidate 1 is available for download. v2.3.0 contains important new features including <a href="http://click.apache.org/docs/user-guide/html/ch04.html">Ajax</a> support, <a href="http://click.apache.org/docs/user-guide/html/ch02s07.html">Page Actions</a> and light-weight <a href="http://click.apache.org/docs/click-api/org/apache/click/Stateful.html">stateful controls</a>. In addition there are new documentation, examples and a slew other enhancements.<br />
<br />
<ul><li><a href="http://click.apache.org/">Click Home</a></li>
<li><a href="http://click.apache.org/docs/roadmap-changes.html#2.3.0">Roadmap and Changes</a> - full list of new features, improvements and bug fixes</li>
<li><a href="http://click.apache.org/docs/upgrade-path.html#2.3.0">Upgrade Path</a> - please see the upgrade path when upgrading from 2.2.0 or earlier.</li>
<li><a href="http://www.apache.org/dyn/closer.cgi/click/click/2.3.0-RC1/click-2.3.0-RC1.zip">Download Click 2.3.0-RC1</a></li>
<li><a href="http://repo1.maven.org/maven2/org/apache/click/">Maven bundles</a> </li>
<li><a href="http://click.avoka.com/click-examples/">Live examples</a></li>
</ul><b>New features and improvement:</b><br />
<ul><li><a href="http://click.apache.org/docs/user-guide/html/ch04.html">Ajax</a> support.</li>
<li><a href="http://click.apache.org/docs/user-guide/html/ch02s07.html">Page Action</a> support. </li>
<li><a href="http://click.apache.org/docs/click-api/org/apache/click/Stateful.html">Stateful</a> Controls.</li>
<li>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 [<a href="https://issues.apache.org/jira/browse/CLK-722" target="_blank">CLK-722</a>]. </li>
<li> Added automapping support for GAE with a caveat that page templates must be placed under the folders <tt>page</tt> or <tt>pages</tt>. This issue was raised by Ke Sun [<a href="https://issues.apache.org/jira/browse/CLK-639" target="_blank">CLK-639</a>]. </li>
<li> Added <a href="http://click.apache.org/docs/click-api/org/apache/click/service/MessagesMapService.html">MessagesMapService</a> interface to support pluggable messages map implementations [<a href="https://issues.apache.org/jira/browse/CLK-655" target="_blank">CLK-655</a>]. </li>
<li> Improved <a href="http://click.apache.org/docs/click-api/org/apache/click/util/MessagesMap.html">MessagesMap</a> to be extendable and customizable [<a href="https://issues.apache.org/jira/browse/CLK-728" target="_blank">CLK-728</a>]. </li>
<li> Added support for loading <a href="http://click.apache.org/docs/extras-api/org/apache/click/extras/control/DateField.html">DateField</a> translations for month and day names from the JDK. [<a href="https://issues.apache.org/jira/browse/CLK-650" target="_blank">CLK-650</a>]. </li>
<li> Added support for Menus that do not have <tt>roles</tt> defined. If no roles are defined, <a href="http://click.apache.org/docs/extras-api/org/apache/click/extras/control/Menu.html#isUserInRoles%28%29">IsUserInRoles</a> passes a <tt>null</tt> argument to <a href="http://click.apache.org/docs/extras-api/org/apache/click/extras/security/AccessController.html#hasAccess%28javax.servlet.http.HttpServletRequest,%20java.lang.String%29">hasAccess</a> to determine whether access is permitted to menus without roles [<a href="https://issues.apache.org/jira/browse/CLK-724" target="_blank">CLK-724</a>]. </li>
<li> Added support for absolute page classnames when configuring pages in <tt>click.xml</tt>. Absolute classnames aids with IDE hot-linking and is less confusing to use. [<a href="https://issues.apache.org/jira/browse/CLK-704" target="_blank">CLK-704</a>]. </li>
<li>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: <, >, ", ', & [<a href="https://issues.apache.org/jira/browse/CLK-674" target="_blank">CLK-674</a>]. </li>
</ul><b>New documentation:</b><br />
<ul><li>Added a section covering the new <a href="http://click.apache.org/docs/user-guide/html/ch03s08.html">Behavior</a> support.</li>
<li>Added a chapter on <a href="http://click.apache.org/docs/user-guide/html/ch04.html">Ajax</a>, covering <a href="http://click.apache.org/docs/user-guide/html/ch04s02.html">AjaxBehaviors</a>, <a href="http://click.apache.org/docs/user-guide/html/ch04s03.html">Ajax execution flow</a> and a full <a href="http://click.apache.org/docs/user-guide/html/ch04s04.html">example</a>.</li>
<li>Added a section covering the new <a href="http://click.apache.org/docs/user-guide/html/ch02s07.html">Page Action</a> support.<br />
</li>
</ul><br />
<b>New examples:</b><br />
<ul><li>Added <a class="external" href="http://click.avoka.com/click-examples/" target="_blank">examples</a> showcasing the new Ajax support. See the Ajax Menu for the full list of examples.</li>
<li>Added an example showing how to integrate a <a class="external" href="http://click.avoka.com/click-examples/panel/tabbed-panel-with-controls.htm" target="_blank">TabbedPanel, Form and Table</a>.</li>
<li>Added an example showing a <a class="external" href="http://click.avoka.com/click-examples/panel/stateful-tabbed-panel-demo.htm" target="_blank">Stateful TabbedPanel</a>.</li>
<li>Added an example <a href="http://click.avoka.com/click-examples/control/field-separator-demo.htm" target="_blank">FieldSeparator Control</a> and example usage page [<a href="https://issues.apache.org/jira/browse/CLK-544" target="_blank">CLK-544</a>]. </li>
</ul><b>Removed:</b> <br />
<ul><li>Removed the ability to automatically <tt>bypass validation</tt> 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 <a href="http://click.apache.org/docs/upgrade-path.html#removed-bypass-validation">Upgrade path</a> for a safe alternative to <tt>bypass validation</tt>. We apologize for the inconvenience. </li>
</ul><br />
<b>Deprecated:</b><br />
<ul><li>Deprecated stateful page support: <a href="http://click.apache.org/docs/click-api/org/apache/click/Page.html#setStateful%28boolean%29">Page.setStateful()</a>. </li>
<li class="change"> Stateful pages had the following issues: <br />
<ul><li> 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. </li>
<li> In addition stateful page support has never been implemented consistently across the framework and some components did not work correctly. </li>
<li> Stateful pages are very coarse grained, making it difficult to control which objects are stored in the session. </li>
<li> Stateful pages have also introduced unnecessary complexity in the framework itself, which can now be phased out. </li>
</ul>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. </li>
</ul><br />
The Apache Click teamBob Schellinkhttp://www.blogger.com/profile/10996406110751921749noreply@blogger.com0tag:blogger.com,1999:blog-2587500056091829705.post-46337853925619970432010-11-28T16:49:00.000-08:002010-11-28T17:13:29.600-08:00Apache Click v2.3.0 Milestone 1 now availableClick 2.3.0 Milestone 1 is available for download. This milestone contains important new features including <a href="http://click.apache.org/docs/user-guide/html/ch04.html">Ajax</a> support, <a href="http://click.apache.org/docs/user-guide/html/ch02s07.html">Page Actions</a> and light-weight <a href="http://click.apache.org/docs/click-api/org/apache/click/Stateful.html">stateful controls</a>. In addition there are new documentation, examples and other minor enhancements.<br />
<br />
<ul><li><a href="http://click.apache.org/">Click Home</a></li>
<li><a href="http://click.apache.org/docs/roadmap-changes.html#2.3.0">Roadmap and Changes</a> - full list of new features, improvements and bug fixes</li>
<li><a href="http://click.apache.org/docs/upgrade-path.html#2.3.0">Upgrade Path</a> - please see the upgrade path when upgrading from 2.2.0 or earlier.</li>
<li><a href="http://www.apache.org/dyn/closer.cgi/click/click/2.3.0-M1/click-2.3.0-M1.zip">Download Click 2.3.0-M1</a></li>
<li><a href="http://repo1.maven.org/maven2/org/apache/click/">Maven bundles</a> </li>
<li><a href="http://click.avoka.com/click-examples/">Live examples</a></li>
</ul><b>New features and improvement:</b><br />
<div style="margin-bottom: 1em; margin-left: -2em; margin-top: 1.5em;"></div><ul><li><a href="http://click.apache.org/docs/user-guide/html/ch04.html">Ajax</a> support.</li>
<li><a href="http://click.apache.org/docs/user-guide/html/ch02s07.html">Page Action</a> support. </li>
<li><a href="http://click.apache.org/docs/click-api/org/apache/click/Stateful.html">Stateful</a> Controls.</li>
<li>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 [<a href="https://issues.apache.org/jira/browse/CLK-722" target="_blank">CLK-722</a>]. </li>
<li> Added automapping support for GAE with a caveat that page templates must be placed under the folders <tt>page</tt> or <tt>pages</tt>. This issue was raised by Ke Sun [<a href="https://issues.apache.org/jira/browse/CLK-639" target="_blank">CLK-639</a>]. </li>
<li> Added <a href="http://click.apache.org/docs/click-api/org/apache/click/service/MessagesMapService.html">MessagesMapService</a> interface to support pluggable messages map implementations [<a href="https://issues.apache.org/jira/browse/CLK-655" target="_blank">CLK-655</a>]. </li>
<li> Improved <a href="http://click.apache.org/docs/click-api/org/apache/click/util/MessagesMap.html">MessagesMap</a> to be extendable and customizable [<a href="https://issues.apache.org/jira/browse/CLK-728" target="_blank">CLK-728</a>]. </li>
<li> Added support for loading <a href="http://click.apache.org/docs/extras-api/org/apache/click/extras/control/DateField.html">DateField</a> translations for month and day names from the JDK. [<a href="https://issues.apache.org/jira/browse/CLK-650" target="_blank">CLK-650</a>]. </li>
<li> Added support for Menus that do not have <tt>roles</tt> defined. If no roles are defined, <a href="http://click.apache.org/docs/extras-api/org/apache/click/extras/control/Menu.html#isUserInRoles%28%29">IsUserInRoles</a> passes a <tt>null</tt> argument to <a href="http://click.apache.org/docs/extras-api/org/apache/click/extras/security/AccessController.html#hasAccess%28javax.servlet.http.HttpServletRequest,%20java.lang.String%29">hasAccess</a> to determine whether access is permitted to menus without roles [<a href="https://issues.apache.org/jira/browse/CLK-724" target="_blank">CLK-724</a>]. </li>
<li> Added support for absolute page classnames when configuring pages in <tt>click.xml</tt>. Absolute classnames aids with IDE hot-linking and is less confusing to use. [<a href="https://issues.apache.org/jira/browse/CLK-704" target="_blank">CLK-704</a>]. </li>
<li>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: <, >, ", ', & [<a href="https://issues.apache.org/jira/browse/CLK-674" target="_blank">CLK-674</a>]. </li>
</ul><b>New documentation:</b><br />
<ul><li>Added a section covering the new <a href="http://click.apache.org/docs/user-guide/html/ch03s08.html">Behavior</a> support.</li>
<li>Added a chapter on <a href="http://click.apache.org/docs/user-guide/html/ch04.html">Ajax</a>, covering <a href="http://click.apache.org/docs/user-guide/html/ch04s02.html">AjaxBehaviors</a>, <a href="http://click.apache.org/docs/user-guide/html/ch04s03.html">Ajax execution flow</a> and a full <a href="http://click.apache.org/docs/user-guide/html/ch04s04.html">example</a>.</li>
<li>Added a section covering the new <a href="http://click.apache.org/docs/user-guide/html/ch02s07.html">Page Action</a> support.<br />
</li>
</ul><br />
<b>New examples:</b><br />
<ul><li>Added <a class="external" href="http://click.avoka.com/click-examples/" target="_blank">examples</a> showcasing the new Ajax support. See the Ajax Menu for the full list of examples.</li>
<li>Added an example showing how to integrate a <a class="external" href="http://click.avoka.com/click-examples/panel/tabbed-panel-with-controls.htm" target="_blank">TabbedPanel, Form and Table</a>.</li>
<li>Added an example showing a <a class="external" href="http://click.avoka.com/click-examples/panel/stateful-tabbed-panel-demo.htm" target="_blank">Stateful TabbedPanel</a>.</li>
<li>Added an example <a href="http://click.avoka.com/click-examples/control/field-separator-demo.htm" target="_blank">FieldSeparator Control</a> and example usage page [<a href="https://issues.apache.org/jira/browse/CLK-544" target="_blank">CLK-544</a>]. </li>
</ul><b></b><br />
<b>Removed:</b> <br />
<ul><li>Removed the ability to automatically <tt>bypass validation</tt> 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 <a href="http://click.apache.org/docs/upgrade-path.html#removed-bypass-validation">Upgrade path</a> for a safe alternative to <tt>bypass validation</tt>. We apologize for the inconvenience. </li>
</ul><br />
<b>Deprecated:</b><br />
<ul><li>Deprecated stateful page support: <a href="http://click.apache.org/docs/click-api/org/apache/click/Page.html#setStateful%28boolean%29">Page.setStateful()</a>. </li>
<li class="change"> Stateful pages had the following issues: <br />
<ul><li> 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. </li>
<li> In addition stateful page support has never been implemented consistently across the framework and some components did not work correctly. </li>
<li> Stateful pages are very coarse grained, making it difficult to control which objects are stored in the session. </li>
<li> Stateful pages have also introduced unnecessary complexity in the framework itself, which can now be phased out. </li>
</ul>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. </li>
</ul><br />
The Apache Click team <br />
<ul></ul>Bob Schellinkhttp://www.blogger.com/profile/10996406110751921749noreply@blogger.com1tag:blogger.com,1999:blog-2587500056091829705.post-80805532136986031182010-09-14T04:02:00.000-07:002010-11-23T01:21:17.692-08:00Apache Click 2.2.0: Dynamic Form ValidationIn this three part series I'll blog about some of the new features added in 2.2.0, namely:<br />
<ol><li><a href="http://click-framework.blogspot.com/2010/07/apache-click-220-dataprovider.html">DataProviders</a> (<a href="http://d.hatena.ne.jp/takezoe/20100917#p1">Japanese version</a>)</li>
<li><a href="http://click-framework.blogspot.com/2010/09/apache-click-220-explicit-binding.html">Explicit binding</a> (<a href="http://d.hatena.ne.jp/takezoe/20100918#p1">Japanese version</a>)<br />
</li>
<li><a href="http://click-framework.blogspot.com/2010/09/apache-click-220-dynamic-form.html">Dynamic Form Validation</a> ( <a href="http://d.hatena.ne.jp/takezoe/20100921#p1">Japanese version</a>)</li>
</ol><ul></ul><br />
<br />
In this third and final installment I'll cover conditional form validation. This feature simplifies dynamic Form behavior by allowing developers to control when form validation should be applied. Generally form validation should be applied when the user submits the completed form. However when working with dynamic forms, the form is often submitted (using JavaScript) to the server in an incomplete state in order to add dynamic Fields and components. I'll refer to this as "incomplete submissions" because the form was not completely filled out by the user when the submission occurs.<br />
<br />
Ideally form validation should <tt>not</tt> be applied to incomplete submissions as the user will be presented any validation errors that occurred. Seeing the errors will be unexpected for the user since they are still busy filling out the form and did not intend to perform a submission.<br />
<br />
Let's look at a simple example. Below we have a page with a required <i>name</i> field and a checkbox that indicates whether the user is <i>married</i> or not. If the married checkbox is checked, a field is displayed for capturing the <i>spouse's</i> name. The spouse's name field is also required.<br />
<br />
<pre class="brush: java; highlight: [19]" title="ValidationDemo.java">public class ValidationDemo extends BorderPage {
Form form = new Form("form");
// The submit button is used to submit the completed form. Note, do not
// name the Submit button "submit". That will cause a JavaScript error when
// the button is clicked.
Submit ok = new Submit("ok");
@Override
public void onInit() {
super.onInit();
form.add(new TextField("fullName", true));
addControl(form);
Checkbox married = new Checkbox("married", "Married?");
// We use JavaScrcipt to submit the "incomplete" form when the user
// clicks the checkbox.
married.setAttribute("onclick", "form.submit();");
form.add(married);
form.add(ok);
// Explicitly bind the checkbox
ClickUtils.bind(married);
if (married.isChecked()) {
form.add(new TextField("spouseName", true));
}
}
}</pre><br />
Note the highlighted line above. We are using JavaScript to submit the form when the <i>married </i>checkbox is checked. <br />
<br />
Here is a screenshot of the page:<br />
<div class="separator" style="clear: both; text-align: center;"><a href="http://3.bp.blogspot.com/_Ijl8pg_nh3E/TIrhZdSVl_I/AAAAAAAAAE8/izC3vU1Y8zg/s1600/validation-demo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="125" src="http://3.bp.blogspot.com/_Ijl8pg_nh3E/TIrhZdSVl_I/AAAAAAAAAE8/izC3vU1Y8zg/s200/validation-demo.png" width="200" /></a></div><br />
When the checkbox is checked, the form is submitted and the spouse field is added. Next the form is validated and the <i>required name</i> and <i>spouse</i> error messages is displayed, as seen in the screenshot below:<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="http://2.bp.blogspot.com/_Ijl8pg_nh3E/TIreVtg_JiI/AAAAAAAAAEk/VxqlU6P-Kic/s1600/validation-showing-errors.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="173" src="http://2.bp.blogspot.com/_Ijl8pg_nh3E/TIreVtg_JiI/AAAAAAAAAEk/VxqlU6P-Kic/s200/validation-showing-errors.png" width="200" /></a></div><br />
We don't want to show the validation messages yet. Particularly problematic is the error message for the <i>Spouse Name</i> field since the user has not seen this field until now.<br />
<br />
One solution is to clear the error messages if the form was submitted but the "ok" Submit button was not clicked, meaning the form was submitted through some other means ie. JavaScript. We can add this logic to the onPost page event:<br />
<br />
<pre class="brush: java; highlight: [6,7,8]" title="ValidationDemo.java">...
@Override
public void onPost() {
// Clear form errors if the "ok" submit button was not clicked
if (!ok.isClicked()) {
form.clearErrors();
}
} </pre><br />
This produces the screenshot below:<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="http://2.bp.blogspot.com/_Ijl8pg_nh3E/TIrfPC3pQgI/AAAAAAAAAEs/F62mi44PPf8/s1600/validation-showing-clear-errors.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="134" src="http://2.bp.blogspot.com/_Ijl8pg_nh3E/TIrfPC3pQgI/AAAAAAAAAEs/F62mi44PPf8/s200/validation-showing-clear-errors.png" width="200" /></a></div>This looks better. The <i>Spouse Name</i> has been added and no error messages are shown.<br />
<br />
However this solution is not ideal because the validation step is still performed and we have to manually clear the errors. So is there a better way?<br />
<br />
Indeed there is. By leveraging <a href="http://click-framework.blogspot.com/2010/09/apache-click-220-explicit-binding.html">Explicit binding</a>, one can conditionally switch off form and field validation as follows: <br />
<br />
<pre class="prettyprint"><span class="com"></span></pre><pre class="prettyprint"><span class="com"></span><span class="kwd">if</span><span class="pun">(</span><span class="pun">!</span><span class="pln">submit</span><span class="pun">.</span><span class="pln">isClicked</span><span class="pun">())</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
form</span><span class="pun">.</span><span class="pln">setValidate</span><span class="pun">(</span><span class="kwd">false</span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span></pre><br />
Let's revisit our earlier example and update it to use conditional validation:<br />
<br />
<pre class="brush: java; highlight: [26,29,30,31]" title="ValidationDemo.java">public class ValidationDemo extends BorderPage {
Form form = new Form("form");
// The submit button is used to submit the completed form. Note, do not
// name the Submit button "submit". That will cause a JavaScript error when
// the button is clicked.
Submit ok = new Submit("ok");
@Override
public void onInit() {
super.onInit();
form.add(new TextField("fullName", true));
addControl(form);
Checkbox married = new Checkbox("married", "Married?");
// We use JavaScript to submit the "incomplete" form when the user
// clicks the checkbox.
married.setAttribute("onclick", "form.submit();");
form.add(married);
form.add(ok);
// Bind the submit button. If it wasn't clicked it means the Form was
// submitted using JavaScript and we don't want to validate yet
ClickUtils.bind(submit);
// If the Form was submitted but the submit was not clicked, don't validate
if(form.isFormSubmission() && !submit.isClicked()) {
form.setValidate(false);
}
if (married.isChecked()) {
form.add(new TextField("spouseName", true));
}
}
}</pre><br />
The screenshot below shows the form after checking the checkbox:<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="http://1.bp.blogspot.com/_Ijl8pg_nh3E/TIrfdyXBpfI/AAAAAAAAAE0/Zoohxz30wg8/s1600/validation-bypassed.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="134" src="http://1.bp.blogspot.com/_Ijl8pg_nh3E/TIrfdyXBpfI/AAAAAAAAAE0/Zoohxz30wg8/s200/validation-bypassed.png" width="200" /></a></div><br />
<br />
As you can see, no errors are displayed since the form was not validated.<br />
<br />
Conditional form validation together with explicit binding provides a good combination for adding dynamic behavior to your Click pages and forms.<br />
<br />
This concludes the three part series covering the new features of Click 2.2.0.Bob Schellinkhttp://www.blogger.com/profile/10996406110751921749noreply@blogger.com0tag:blogger.com,1999:blog-2587500056091829705.post-92038016366044588822010-09-14T03:42:00.000-07:002010-09-22T21:10:37.475-07:00Apache Click 2.2.0: Explicit BindingIn this three part series I'll blog about some of the new features added in 2.2.0, namely:<br />
<ol><li><a href="http://click-framework.blogspot.com/2010/07/apache-click-220-dataprovider.html">DataProviders</a> (<a href="http://d.hatena.ne.jp/takezoe/20100917#p1">Japanese version</a>)</li>
<li><a href="http://click-framework.blogspot.com/2010/09/apache-click-220-explicit-binding.html">Explicit binding</a> (<a href="http://d.hatena.ne.jp/takezoe/20100918#p1">Japanese version</a>)<br />
</li>
<li><a href="http://click-framework.blogspot.com/2010/09/apache-click-220-dynamic-form.html">Dynamic Form Validation</a> ( <a href="http://d.hatena.ne.jp/takezoe/20100921#p1">Japanese version</a>)</li>
</ol><ul></ul><br />
In this second installment I'll cover <tt>explicit binding</tt> which allows developers to bind, or set, a control's value to incoming request parameters. Not all controls support binding though. The most common bindable controls include <tt>Field</tt>, <tt>Form</tt> and <tt>Abstractlink</tt>. Explicit binding simplifies dynamic Page and Form behavior as it allows you to bind and query control values whenever you need to, for example in the onInit event or the Page constructor.<br />
<br />
When talking about <tt>explicit binding</tt> it is also worth mentioning <tt>implicit binding</tt>.<br />
Implicit binding occurs <tt>automatically</tt> every request as part of the <tt>onProcess</tt> event. So Control values will automatically be set once the onProcess event has occurred.Click Controls uses a convention of handling bind logic in a method called <tt>bindRequestValue()</tt>.<br />
<br />
A typical bindRequestValue() implementation looks like this:<br />
<br />
<pre class="brush: java; highlight: [3,4,5,6,7]" title="BindRequestValue.java">public void bindRequestValue() {
Context context = getContext();
String controlName = getName();
String value = context.getRequestParameter(controlName);
if(value != null) {
setValue(value);
}
}
// For completeness sake we show the onProcess implementation as well.
// onProcess delegates the binding logic to bindRequestValue
public void onProcess() {
bindRequestValue();
...
}
</pre><br />
Generally the control name is used to lookup the incoming request parameter, but<br />
other conventions can be used as well.<br />
<br />
Under most circumstances, implicit binding is all you need. But sometimes you might want to know the value of a control before the onProcess event occurs. For example, within the onInit()<br />
event, you might want to check which drop-down value a user selected in order to<br />
add another Field to the Form. Remember, only Controls that are created and<br />
attached to their parent page/container partakes in the onProcess event. That's why it's important to create and attach Controls to their parents <b>prior</b> to the onProcess event.<br />
<br />
As you probably know already, the onInit event occurs before onProcess, and because implicit binding only occurs during onProcess, the Control value is <tt>not</tt> available for querying from onInit.<br />
<br />
So how can you find out the value of a Control during the onInit event? This is<br />
where explicit binding comes into play. Explicit binding allows developers to<br />
dictate when the Control value is bound. So how can one explicitly bind the Control value?<br />
By invoking the Control method, <tt>bindRequestValue()</tt>. (Recall that not all Controls<br />
support binding and might not provide a bindRequestValue() method.)<br />
<br />
There are a couple of caveats to be aware of when invoking bindRequestValue<br />
directly.<br />
<br />
<ul><li>Fields should only be bound if their parent Form has been submitted, otherwise if you have multiple forms on the page, you might end up in a situation where form1 fields could be bound to form2 fields.</li>
<li>Forwarded requests have already been processed and should not be used for binding purposes.</li>
</ul><br />
To make things easier, Click provides a couple of helper methods that takes care<br />
of the caveats mentioned above. These helper methods are available from the<br />
<tt>ClickUtils</tt> class which sports a variety of <tt>bind()</tt> and <tt>bindAndValidate()</tt> methods.<br />
You can even pass in Containers such as Form to these methods and all child<br />
controls will be bound.<br />
<br />
The bindAndValidate() method will both bind and validate a Field or Form.<br />
<br />
<br />
<br />
It's worth mentioning that it's also possible to lookup request parameters directly through the <tt>Context</tt> object instead of having to bind the control value.<br />
<br />
Let's look at some examples next.<br />
<br />
In this first example we will look at a dynamic Form where a Checkbox determines<br />
whether a TextField should be added to the Form or not.<br />
<br />
<br />
<pre class="brush: java; highlight: [4,16,17,18,19]" title="DynamicFormDemo.java">public class DynamicFormDemo extends Page {
@Override
public void onInit() {
super.onInit();
Form form = new Form("form");
addControl(form);
Checkbox chk = new Checkbox("chk");
form.add(chk);
Submit ok = new Submit("ok");
form.add(ok);
// Explicitly bind the checkbox in the onInit event which allows us to query
// whether the Checkbox was checked or not.
ClickUtils.bind(chk);
if(chk.isChecked()) {
form.add(new TextField("name"));
}
}
}
</pre><br />
We use the ClickUtils.bind() method to explicitly bind the Checkbox value so we<br />
can query whether it is checked or not.<br />
<br />
In this second example we expand the first by adding a Select field as well.<br />
<br />
<br />
<br />
<pre class="brush: java; highlight: [4,20,21,22,23]" title="DynamicFormDemo.java">public class DynamicFormDemo extends Page {
@Override
public void onInit() {
super.onInit();
Form form = new Form("form");
addControl(form);
Checkbox chk = new Checkbox("chk");
form.add(chk);
Select countries = new CountrySelect("countries");
countries.getOptionList().add(Option.EMPTY_OPTION);
form.add(countries);
Submit ok = new Submit("ok");
form.add(ok);
// Explicitly bind the Form (and all it's child controls) in the onInit
// event, allowing us to query whether he user checked the Checkbox and
// which country was selected.
ClickUtils.bind(form);
if (chk.isChecked()) {
form.add(new TextField("name"));
}
if (StringUtils.isNotBlank(countries.getValue())) {
form.add(new TextField("location"));
}
}
}
</pre><br />
Note, instead of binding the Checkbox and Select separately we pass the Form to<br />
the ClickUtils.bind() method. When passing a container such as a Form to the<br />
ClickUtils.bind() methods, all bindable controls in the container will have their<br />
values bound. This provides an easy shortcut to quickly bind multiple controls.<br />
<br />
In this third and final example we show how to both bind <tt>and</tt> validate a form.<br />
<br />
<pre class="brush: java; highlight: [4,21,22,23,24,25,26,27,28,29]" title="DynamicFormDemo.java">public class DynamicFormDemo extends BorderPage {
@Override
public void onInit() {
super.onInit();
Form form = new Form("form");
addControl(form);
Checkbox chk = new Checkbox("chk");
form.add(chk);
Select countries = new CountrySelect("countries", true);
countries.getOptionList().add(Option.EMPTY_OPTION);
form.add(countries);
Submit ok = new Submit("ok");
form.add(ok);
// Explicitly bind and check that the Form (and all it's child
// controls) is valid in the onInit event, allowing us to safely
// query whether he user checked the Checkbox and
// which country was selected.
if (ClickUtils.bindAndValidate(form)) {
if (chk.isChecked()) {
form.add(new TextField("name"));
}
// The form validation passed and since the countries field is required
// we can safely assume that a valid country has been selected
form.add(new TextField("location"));
}
}
}
</pre><br />
The <tt>ClickUtils.bindAndValidate()</tt> methods will bind and validate the field/s and return<tt> true</tt> if the field/s are valid, <tt>false</tt> otherwise.Bob Schellinkhttp://www.blogger.com/profile/10996406110751921749noreply@blogger.com0tag:blogger.com,1999:blog-2587500056091829705.post-53220139898487027092010-09-10T02:17:00.000-07:002010-09-10T02:19:45.532-07:00ClickIDE 2.2.0.0 has been released!ClickIDE 2.2.0.0 is now available! ClickIDE is an Eclipse plug-in for the developing Click web applications.<br />
<br />
This version supports Apache Click 2.2.0 and fixes some minor issues.<br />
<br />
For details about ClickIDE see:<br />
<a href="http://click.apache.org/docs/click-ide.html">http://click.apache.org/docs/click-ide.html</a><br />
<br />
Download is available here:<br />
<a href="http://click.apache.org/docs/click-ide-downloads.html"> http://click.apache.org/docs/click-ide-downloads.html</a><br />
<br />
<br />
Enjoy ClickBob Schellinkhttp://www.blogger.com/profile/10996406110751921749noreply@blogger.com0tag:blogger.com,1999:blog-2587500056091829705.post-19270926407879358812010-07-24T07:47:00.000-07:002010-07-24T07:47:47.471-07:00SD Times interview with Apache Click vice presidentMalcolm Edgar, Apache Click Vice President, recently had a chat with <a href="http://www.sdtimes.com/">SD Times</a> editor in chief, David Rubinstein. Great to see Click getting some much deserved exposure.<br />
<br />
Full interview can be viewed <a href="http://www.sdtimes.com/blog/post/2010/07/21/Java-app-framework-just-a-Click-away.aspx">here</a>.Bob Schellinkhttp://www.blogger.com/profile/10996406110751921749noreply@blogger.com0tag:blogger.com,1999:blog-2587500056091829705.post-90295179851089918562010-07-14T19:05:00.000-07:002010-09-22T21:10:07.413-07:00Apache Click 2.2.0: DataProviderIn this three part series I'll blog about some of the new features added in 2.2.0, namely:<br />
<ol><li><a href="http://click-framework.blogspot.com/2010/07/apache-click-220-dataprovider.html">DataProviders</a> (<a href="http://d.hatena.ne.jp/takezoe/20100917#p1">Japanese version</a>)</li>
<li><a href="http://click-framework.blogspot.com/2010/09/apache-click-220-explicit-binding.html">Explicit binding</a> (<a href="http://d.hatena.ne.jp/takezoe/20100918#p1">Japanese version</a>)<br />
</li>
<li><a href="http://click-framework.blogspot.com/2010/09/apache-click-220-dynamic-form.html">Dynamic Form Validation</a> ( <a href="http://d.hatena.ne.jp/takezoe/20100921#p1">Japanese version</a>)<br />
<span id="goog_635793847"></span><span id="goog_635793848"></span><a href="http://www.blogger.com/"></a></li>
</ol><ul></ul>In this first installment I'll cover DataProviders and how they simplify Click Page implementations.<br />
<br />
To understand the benefits of DataProviders, we need to look at the problem they are trying to solve. To start off with let's do a quick recap of the major life cycle events of a Click Page. Below we list the events in the order they are executed: <br />
<ul><li><tt><<init>></tt>: page is created<br />
</li>
<li><tt>onInit</tt>: page controls are created and added to the page<br />
</li>
<li><tt>onProcess</tt>: control values are bound to request parameters, control values are validated and <tt>action listeners</tt> are fired</li>
<li><tt>onRender</tt>: database intensive operations are performed here<br />
</li>
</ul>Click allows certain events to be skipped depending on the outcome of a previous event. <tt>onRender</tt> for example, will be skipped if a Control action returns false. This together with the fact that onRender is the last event exposed by Click makes onRender ideal for database intensive operations. If a control action listener decides to redirect to a different page, it can return false to bypass the slow onRender method.<br />
<br />
For example:<br />
<pre class="brush: java; highlight: [26,27,28,29,30]" title="CustomerPage.java">public class CustomerPage extends BorderPage {
private Table table = new Table("table");
private ActionLink editLink = new EditLink("edit");
@Override
public void onInit() {
super.onInit();
table.add(new Column("firstname"));
...
editLink.setActionListener(new ActionListener() {
public boolean onAction(Control source) {
Map params = Collections.singletonMap("id", editLink.getValue());
// Redirect to edit customer page and pass the selected customer ID
setRedirect(EditCustomerPage.class, params);
return false;
}
});
}
@Override
public void onRender() {
// Database intensive operation: retrieving all customers from the database
List<Customer> customers = getCustomerService.getCustomers();
table.setRows(customers);
}
}
</pre>In the example above you can see that we don't want to hit the database and retrieve all the customers only to be redirected to another page that does not render the customers we retrieved. In other words, because the customers won't be rendered by the page we redirect to, we don't want to pay for the database hit. Since the onRender event is skipped if an action listener returns false, it makes sense to place database intensive code there.<br />
<br />
<span style="font-weight: bold;">Inconsistent</span><br />
<br />
Unfortunately this pattern cannot be applied to all <tt>controls</tt>. Some controls need their values populated <tt>before</tt> the <tt>onProcess</tt> event, either for validation or parameter binding purposes. For example, the Select control validation depends on its values to determines whether or not a valid selection was made. FormTable needs to have it's rows set in order to update its entity values against incoming request parameters.<br />
<br />
Having some of the controls populated in <tt>onInit</tt> and others in <tt>onRender</tt> is inconsistent and a common pitfall for new users as they have to figure out which controls should be populated in which event.<br />
<br />
<span style="font-weight: bold;">DataProvider</span><br />
<br />
The solution used in Click was to add a <a href="http://click.apache.org/docs/click-api/org/apache/click/dataprovider/DataProvider.html">DataProvider</a> interface to enable on demand data loading. A DataProvider has a single method, <tt>"public List getData()"</tt>, that the control can invoke when it needs it's data. For example, a Table will invoke getData when it is rendered, a Select will invoke getData when it is validated and a FormTable will invoke getData when it is processed.<br />
<br />
DataProviders leads to a more consistent Page implementation where all control creation logic can be encapsulated in the <tt>onInit</tt> event or even the page constructor. For example:<br />
<br />
<pre class="brush: java; highlight: [14,15,16,17,18]" title="CustomerPage.java">public class CustomerPage extends BorderPage {
private Table table = new Table("table");
private Select select = new Select("markets");
@Override
public void onInit() {
super.onInit();
table.add(new Column("firstname"));
...
table.setDataProvider(new DataProvider() {
public List<Customer> getData() {
return getCustomerService().getCustomers();
}
});
select.setDataProvider(new DataProvider() {
public List<Option> getData() {
List options = new ArrayList();
for (Market market : getMarketService().getMarkets()) {
options.add(new Option(market.getId(), market.getName());
}
return options;
}
});
}
}
</pre>In the example above we use DataProviders for both the Table and Select control. The Table data is only retrieved when the Table is rendered, so in the event of a redirect, the database operation is skipped. The Page is now consistent as all control setup logic is placed inside the onInit event.<br />
<br />
<span style="font-weight: bold;">Is onRender still necessary?</span><br />
<br />
Absolutely. While DataProviders allow <tt>control creation logic</tt> to be encapsulated within the onInit event, not all data needs to be represented with controls. The Page template (Velocity) for example can be used to render markup for the customers passed from the page. <tt>onRender</tt> could still be used to retrieve the customers and make it available to the template. For example:<br />
<br />
<pre class="brush: java; highlight: [3,4,5]" title="CustomerPage.java">public class CustomerPage extends BorderPage {
public void onRender() {
addModel("customers", getCustomerService().getCustomers());
}
} </pre><br />
<pre class="brush: xml; highlight: [4]" title="customer.htm"><table>
...
#foreach($customer in $customers)
<tr>
<td>
$customer.name
<td>
<td>
$customer.holdings
<td>
</tr>
#end
</table> </pre><br />
If an action listener returns false, onRender is skipped and the database operation won't be performed, which is exactly the behavior we want. <br />
<br />
Hope this overview was helpful. In the next installment I'll cover Explicit binding and Dynamic Form Validation, which both simplifies dynamic form creation.Bob Schellinkhttp://www.blogger.com/profile/10996406110751921749noreply@blogger.com0tag:blogger.com,1999:blog-2587500056091829705.post-85292390093803269542010-05-15T06:06:00.001-07:002010-07-15T23:10:07.425-07:00Apache Click v2.2.0 has been releasedClick 2.2.0 final is available for download. Major new features include DataProviders for on-demand data loading and a Page interceptor facility for implementing cross cutting concerns such as security and transaction handling. There are also improved support for dynamic forms and stateful pages.<br />
<br />
<ul><li><a href="http://click.apache.org/">Click Home</a></li>
<li><a href="http://click.apache.org/docs/roadmap-changes.html#2.2.0">Roadmap and Changes</a> - full list of new features, improvements and bug fixes</li>
<li><a href="http://click.apache.org/docs/upgrade-path.html#2.2.0">Upgrade Path</a> - please see the upgrade path when upgrading from 2.1.0 or earlier.</li>
<li><a href="http://www.apache.org/dyn/closer.cgi/click/click/2.2.0/click-2.2.0.zip">Download Click 2.2.0</a></li>
<li><a href="http://repo1.maven.org/maven2/org/apache/click/">Maven bundles</a><br />
</li>
<li><a href="http://www.avoka.com/click-examples/">Live examples</a></li>
</ul><span style="font-weight: bold;">New features and improvements:</span><br />
<ul><li class="change"> Added <a href="http://click.apache.org/docs/click-api/org/apache/click/dataprovider/DataProvider.html">DataProvider</a> support for Table, Select, PickList and CheckList providing on demand loading of data. With DataProviders, users won't have to be concerned about which page event (onInit or onRender) to set the data on the control [<a href="https://issues.apache.org/jira/browse/CLK-640" target="_blank">CLK-640</a>]. </li>
<li class="change"> Added <a href="http://click.apache.org/docs/click-api/org/apache/click/dataprovider/PagingDataProvider.html">PagingDataProvider</a> interface to support large paginated result sets for Tables [<a href="https://issues.apache.org/jira/browse/CLK-640" target="_blank">CLK-640</a>]. </li>
<li class="change"> Added a <a href="http://click.apache.org/docs/extras-api/org/apache/click/extras/control/MenuFactory.html">MenuFactory</a> for creating and loading Menus from <tt>configuration</tt> files. All the static Menu methods have been deprecated and will be removed in a future release. </li>
<li class="change"> Added an <a href="http://click.apache.org/docs/extras-api/org/apache/click/extras/control/MenuFactory.html#getRootMenu%28boolean%29">option</a> for MenuFactory to not statically cache menus. This allows developers to cache menus in different scopes such as HttpSession. [<a href="https://issues.apache.org/jira/browse/CLK-405" target="_blank">CLK-405</a>]. </li>
<li class="change"> Added i18n support for Menus loaded from <tt>menu.xml</tt>. The menu DTD now includes a new <tt>name</tt> attribute. By specifying a <tt>name</tt> attribute in <tt>menu.xml</tt>, the Menu will attempt to load its <tt>label</tt> and <tt>title</tt> from resource bundles [<a href="https://issues.apache.org/jira/browse/CLK-591" target="_blank">CLK-591</a>]. </li>
<li class="change"> Added a <a href="http://click.apache.org/docs/click-api/org/apache/click/PageInterceptor.html">Page Interceptor</a> facility that provides an extension point for code which can listen to key page events and also interrupt normal page processing flow. [<a href="https://issues.apache.org/jira/browse/CLK-598" target="_blank">CLK-598</a>]. </li>
<li class="change"> Added improved dynamic Form support. Forms can now optionally bypass validation for JavaScript based submissions using the new JavaScript function <tt>"Click.submit(formName, validate)"</tt> [<a href="https://issues.apache.org/jira/browse/CLK-638" target="_blank">CLK-638</a>]. </li>
<li class="change"> Added improved dynamic Page and Form behaviour through new helper methods that can bind and validate Forms and Fields <tt>before</tt> the onProcess page event e.g. in the Page constructor or <tt>"onInit"</tt> event. The new methods are:<br />
<ul style="margin-top: 10px;"><li> <a href="http://click.apache.org/docs/click-api/org/apache/click/util/ClickUtils.html#bind%28org.apache.click.control.Field%29">ClickUtils.bind(Field)</a> </li>
<li> <a href="http://click.apache.org/docs/click-api/org/apache/click/util/ClickUtils.html#bind%28org.apache.click.control.Form%29">ClickUtils.bind(Form)</a> </li>
<li> <a href="http://click.apache.org/docs/click-api/org/apache/click/util/ClickUtils.html#bind%28org.apache.click.control.AbstractLink%29">ClickUtils.bind(AbstractLink)</a> </li>
<li> <a href="http://click.apache.org/docs/click-api/org/apache/click/util/ClickUtils.html#bindAndValidate%28org.apache.click.control.Field%29">ClickUtils.bindAndValidate(Field)</a> </li>
<li> <a href="http://click.apache.org/docs/click-api/org/apache/click/util/ClickUtils.html#bindAndValidate%28org.apache.click.control.Form%29">ClickUtils.bindAndValidate(Form)</a> [<a href="https://issues.apache.org/jira/browse/CLK-638" target="_blank">CLK-638</a>] </li>
</ul></li>
<li class="change"> Added improved disabled behavior through the following changes:<br />
<ul style="margin-top: 10px;"><li> Disabled fields are not processed or validated </li>
<li> Disabled field values are not copied to domain objects </li>
<li> Disabled fields are automatically enabled if the field has an incoming request parameter, indicating that the field was enabled on the client using JavaScript. Please note that this behavior does not apply to Checkbox or Radio fields. See the <a href="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#setDisabled%28boolean%29">setDisabled()</a> javadoc for details [<a href="https://issues.apache.org/jira/browse/CLK-646" target="_blank">CLK-646</a>]. </li>
</ul></li>
<li class="change"> Added new method <a href="http://click.apache.org/docs/click-api/org/apache/click/control/Container.html#replace%28org.apache.click.Control,%20org.apache.click.Control%29">Container.replace</a> for replacing an existing control with a new control. In previous releases, an exception would be raised if a page or container already contained a control with the same name as the newly added control. In 2.2.0 the replace method is automatically called when adding a control which name matches that of an existing control in the page or container. This behavior will likely only benefit <tt>stateful</tt> pages since <tt>stateless</tt> pages are recreated each request [<a href="https://issues.apache.org/jira/browse/CLK-666" target="_blank">CLK-666</a>]. </li>
<li class="change"> Added methods to Fields for styling their labels. See new methods <a href="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#setLabelStyle%28java.lang.String%29">Field.setLabelStyle(String)</a> and <a href="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#setLabelStyleClass%28java.lang.String%29">Field.setLabelStyleClass(String)</a>. This issue was raised by Stefax [<a href="https://issues.apache.org/jira/browse/CLK-595" target="_blank">CLK-595</a>]. </li>
<li class="change"> Added methods to Fields for providing styling hints to their containing elements. See new methods <a href="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#setParentStyleHint%28java.lang.String%29">Field.setParentStyleHint(String)</a> and <a href="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#setParentStyleClassHint%28java.lang.String%29">Field.setParentStyleClassHint(String)</a>. This issue was raised by Stefax [<a href="https://issues.apache.org/jira/browse/CLK-595" target="_blank">CLK-595</a>]. </li>
<li class="change"> Added trim property to Field for controlling if the Field request parameter is trimmed or not. See new method <a href="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#setTrim%28boolean%29">Field.setTrim(boolean)</a>. This issue was raised by Andrey Rybin [<a href="https://issues.apache.org/jira/browse/CLK-627" target="_blank">CLK-627</a>]. </li>
<li class="change"> Added new Context methods <a href="http://click.apache.org/docs/click-api/org/apache/click/Context.html#hasRequestParameter%28java.lang.String%29">Context.hasRequestParameter(String)</a> and <a href="http://click.apache.org/docs/click-api/org/apache/click/Context.html#hasRequestAttribute%28java.lang.String%29">Context.hasRequestAttribute(String)</a>. </li>
<li class="change"> Added support to Select for a <a href="http://click.apache.org/docs/click-api/org/apache/click/control/Select.html#setDefaultOption%28org.apache.click.control.Option%29">default option</a> that can be used to validate non selection against and allows the Select to only populate its optionList at rendering time, instead of during <tt>onProcess</tt> event. [<a href="https://issues.apache.org/jira/browse/CLK-641" target="_blank">CLK-641</a>]. </li>
<li class="change"> Improved default autobinding mode to bind both public fields and fields annotated with @Bindable. In previous versions the default autobinding mode only binded public Page fields [<a href="https://issues.apache.org/jira/browse/CLK-648" target="_blank">CLK-648</a>]. </li>
<li class="change"> Added mock support for user <a href="http://click.apache.org/docs/mock-api/org/apache/click/servlet/MockPrincipal.html">principals</a> and roles. This issue was raised and fixed by Sven Pfeiffer [<a href="https://issues.apache.org/jira/browse/CLK-585" target="_blank">CLK-585</a>]. </li>
<li class="change"> Added localized Date format pattern support. This issue was raised by Andrey Rybin [<a href="https://issues.apache.org/jira/browse/CLK-610" target="_blank">CLK-610</a>]. </li>
<li class="change"> Added Polish resource bundle for DateField. This issue was raised and fixed by Rafal Rusin [<a href="https://issues.apache.org/jira/browse/CLK-624" target="_blank">CLK-624</a>]. </li>
<li class="change"> Migrated controls to import resources through Elements and the <tt>getHeadElements</tt> method [<a href="https://issues.apache.org/jira/browse/CLK-647" target="_blank">CLK-647</a>]. </li>
<li class="change"> Improved SpringClickServlet to re-inject transient beans after stateful page deserialization. This feature is only supported when the stateful page instance is created by Click, not Spring [<a href="https://issues.apache.org/jira/browse/CLK-667" target="_blank">CLK-667</a>]. </li>
<li class="change"> Replaced Page and Control getMessage methods with varargs equivalents [<a href="https://issues.apache.org/jira/browse/CLK-604" target="_blank">CLK-604</a>]. </li>
<li class="change"> Removed Click core's dependency on Velocity. This issue was raised by by Andrey Rybin [<a href="https://issues.apache.org/jira/browse/CLK-606" target="_blank">CLK-606</a>]. </li>
<li class="change"> Replaced multiple ClickUtils close methods with a single method accepting a <a href="http://click.apache.org/docs/click-api/org/apache/click/util/ClickUtils.html#close%28java.io.Closeable%29">Closeable</a>. This issue was raised by Andrey Rybin [<a href="https://issues.apache.org/jira/browse/CLK-620" target="_blank">CLK-620</a>]. </li>
<li class="change"> Improved ClickServlet to use the response's OutputStream if the Writer cannot be retrieved [<a href="https://issues.apache.org/jira/browse/CLK-644" target="_blank">CLK-644</a>]. </li>
<li class="change"> Fixed issue where RadioGroup label referenced a non-existing ID. RadioGroup is now wrapped inside a span tag with the given ID. This issue was raised and fixed by Finn Bock [<a href="https://issues.apache.org/jira/browse/CLK-577" target="_blank">CLK-577</a>]. </li>
<li class="change"> Fixed DateField to set seconds back to zero. This issue was raised by Andrey Rybin [<a href="https://issues.apache.org/jira/browse/CLK-664" target="_blank">CLK-664</a>]. </li>
<li class="change"> The menu.dtd has been published to <a href="http://click.apache.org/dtds/menu-2.2.dtd">http://click.apache.org/dtds/menu-2.2.dtd</a>. If you want your configuration to conform to the menu.dtd, include the following declaration in your menu.xml:<br />
<pre class="brush: xml"><!DOCTYPE menu PUBLIC
"-//Apache Software Foundation//DTD Click Menu 2.2//EN"
"http://click.apache.org/dtds/menu-2.2.dtd">
</pre></li>
<li class="change"> The new click-2.2.dtd has been published to <a href="http://click.apache.org/dtds/click-2.2.dtd">http://click.apache.org/dtds/click-2.2.dtd</a>. If you want your configuration to conform to the click.dtd, include the following declaration in your click.xml:<br />
<pre class="brush: xml"><!DOCTYPE click-app PUBLIC
"-//Apache Software Foundation//DTD Click Configuration 2.2//EN"
"http://click.apache.org/dtds/click-2.2.dtd">
</pre></li>
</ul><div class="separator" style="clear: both; text-align: center;"></div><span style="font-weight: bold;">New examples: </span><br />
<ul><li> <a class="external" href="http://www.avoka.com/click-examples/form/dynamic/dynamic-form.htm" target="_blank"> Dynamic Form</a> demonstrates how to dynamically add new Fields at runtime. </li>
<li> <a class="external" href="http://www.avoka.com/click-examples/form/dynamic/dynamic-field-set.htm" target="_blank"> Dynamic FieldSet</a> demonstrates how to dynamically add a FieldSet at runtime. </li>
<li> <a class="external" href="http://www.avoka.com/click-examples/form/dynamic/dynamic-select.htm" target="_blank"> Dynamic Select</a> demonstrates how to dynamically add fields based on a Select field value. </li>
<li> <a class="external" href="http://www.avoka.com/click-examples/control/disabled-demo.htm" target="_blank"> Disabled Demo</a> demonstrates the behavior of disabled fields. </li>
</ul>Enjoy.<br />
<br />
- The Click teamBob Schellinkhttp://www.blogger.com/profile/10996406110751921749noreply@blogger.com1tag:blogger.com,1999:blog-2587500056091829705.post-45258634978955377132010-05-01T22:36:00.000-07:002010-07-15T23:10:31.962-07:00Apache Click v2.2.0-RC1 now availableClick 2.2.0-RC1 is now available. Major new features include DataProviders for on-demand data loading and a Page interceptor facility for implementing cross cutting concerns such as security and transaction handling. There are also improved support for dynamic forms and stateful pages.<br />
<br />
<ul><li><a href="http://click.apache.org/">Click Home</a></li>
<li><a href="http://click.apache.org/docs/roadmap-changes.html#2.2.0">Roadmap and Changes</a> - full list of new features, improvements and bug fixes</li>
<li><a href="http://click.apache.org/docs/upgrade-path.html#2.2.0">Upgrade Path</a> - please see the upgrade path when upgrading from 2.1.0 or earlier.</li>
<li><a href="http://www.apache.org/dyn/closer.cgi/click/click/2.2.0-RC1/click-2.2.0-RC1.zip">Download Click 2.2.0 RC1</a></li>
<li><a href="http://repo1.maven.org/maven2/org/apache/click/">Maven bundles</a><br />
</li>
<li><a href="http://www.avoka.com/click-examples/">Live examples</a></li>
</ul><span style="font-weight: bold;">New features and improvements:</span><br />
<ul><li class="change"> Added <a href="http://click.apache.org/docs/click-api/org/apache/click/dataprovider/DataProvider.html">DataProvider</a> support for Table, Select, PickList and CheckList providing on demand loading of data. With DataProviders, users won't have to be concerned about which page event (onInit or onRender) to set the data on the control [<a href="https://issues.apache.org/jira/browse/CLK-640" target="_blank">CLK-640</a>]. </li>
<li class="change"> Added <a href="http://click.apache.org/docs/click-api/org/apache/click/dataprovider/PagingDataProvider.html">PagingDataProvider</a> interface to support large paginated result sets for Tables [<a href="https://issues.apache.org/jira/browse/CLK-640" target="_blank">CLK-640</a>]. </li>
<li class="change"> Added a <a href="http://click.apache.org/docs/extras-api/org/apache/click/extras/control/MenuFactory.html">MenuFactory</a> for creating and loading Menus from <tt>configuration</tt> files. All the static Menu methods have been deprecated and will be removed in a future release. </li>
<li class="change"> Added an <a href="http://click.apache.org/docs/extras-api/org/apache/click/extras/control/MenuFactory.html#getRootMenu%28boolean%29">option</a> for MenuFactory to not statically cache menus. This allows developers to cache menus in different scopes such as HttpSession. [<a href="https://issues.apache.org/jira/browse/CLK-405" target="_blank">CLK-405</a>]. </li>
<li class="change"> Added i18n support for Menus loaded from <tt>menu.xml</tt>. The menu DTD now includes a new <tt>name</tt> attribute. By specifying a <tt>name</tt> attribute in <tt>menu.xml</tt>, the Menu will attempt to load its <tt>label</tt> and <tt>title</tt> from resource bundles [<a href="https://issues.apache.org/jira/browse/CLK-591" target="_blank">CLK-591</a>]. </li>
<li class="change"> Added a <a href="http://click.apache.org/docs/click-api/org/apache/click/PageInterceptor.html">Page Interceptor</a> facility that provides an extension point for code which can listen to key page events and also interrupt normal page processing flow. [<a href="https://issues.apache.org/jira/browse/CLK-598" target="_blank">CLK-598</a>]. </li>
<li class="change"> Added improved dynamic Form support. Forms can now optionally bypass validation for JavaScript based submissions using the new JavaScript function <tt>"Click.submit(formName, validate)"</tt> [<a href="https://issues.apache.org/jira/browse/CLK-638" target="_blank">CLK-638</a>]. </li>
<li class="change"> Added improved dynamic Page and Form behaviour through new helper methods that can bind and validate Forms and Fields <tt>before</tt> the onProcess page event e.g. in the Page constructor or <tt>"onInit"</tt> event. The new methods are: <br />
<ul style="margin-top: 10px;"><li> <a href="http://click.apache.org/docs/click-api/org/apache/click/util/ClickUtils.html#bind%28org.apache.click.control.Field%29">ClickUtils.bind(Field)</a> </li>
<li> <a href="http://click.apache.org/docs/click-api/org/apache/click/util/ClickUtils.html#bind%28org.apache.click.control.Form%29">ClickUtils.bind(Form)</a> </li>
<li> <a href="http://click.apache.org/docs/click-api/org/apache/click/util/ClickUtils.html#bind%28org.apache.click.control.AbstractLink%29">ClickUtils.bind(AbstractLink)</a> </li>
<li> <a href="http://click.apache.org/docs/click-api/org/apache/click/util/ClickUtils.html#bindAndValidate%28org.apache.click.control.Field%29">ClickUtils.bindAndValidate(Field)</a> </li>
<li> <a href="http://click.apache.org/docs/click-api/org/apache/click/util/ClickUtils.html#bindAndValidate%28org.apache.click.control.Form%29">ClickUtils.bindAndValidate(Form)</a> [<a href="https://issues.apache.org/jira/browse/CLK-638" target="_blank">CLK-638</a>] </li>
</ul></li>
<li class="change"> Added improved disabled behavior through the following changes: <br />
<ul style="margin-top: 10px;"><li> Disabled fields are not processed or validated </li>
<li> Disabled field values are not copied to domain objects </li>
<li> Disabled fields are automatically enabled if the field has an incoming request parameter, indicating that the field was enabled on the client using JavaScript. Please note that this behavior does not apply to Checkbox or Radio fields. See the <a href="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#setDisabled%28boolean%29">setDisabled()</a> javadoc for details [<a href="https://issues.apache.org/jira/browse/CLK-646" target="_blank">CLK-646</a>]. </li>
</ul></li>
<li class="change"> Added new method <a href="http://click.apache.org/docs/click-api/org/apache/click/control/Container.html#replace%28org.apache.click.Control,%20org.apache.click.Control%29">Container.replace</a> for replacing an existing control with a new control. In previous releases, an exception would be raised if a page or container already contained a control with the same name as the newly added control. In 2.2.0 the replace method is automatically called when adding a control which name matches that of an existing control in the page or container. This behavior will likely only benefit <tt>stateful</tt> pages since <tt>stateless</tt> pages are recreated each request [<a href="https://issues.apache.org/jira/browse/CLK-666" target="_blank">CLK-666</a>]. </li>
<li class="change"> Added methods to Fields for styling their labels. See new methods <a href="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#setLabelStyle%28java.lang.String%29">Field.setLabelStyle(String)</a> and <a href="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#setLabelStyleClass%28java.lang.String%29">Field.setLabelStyleClass(String)</a>. This issue was raised by Stefax [<a href="https://issues.apache.org/jira/browse/CLK-595" target="_blank">CLK-595</a>]. </li>
<li class="change"> Added methods to Fields for providing styling hints to their containing elements. See new methods <a href="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#setParentStyleHint%28java.lang.String%29">Field.setParentStyleHint(String)</a> and <a href="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#setParentStyleClassHint%28java.lang.String%29">Field.setParentStyleClassHint(String)</a>. This issue was raised by Stefax [<a href="https://issues.apache.org/jira/browse/CLK-595" target="_blank">CLK-595</a>]. </li>
<li class="change"> Added trim property to Field for controlling if the Field request parameter is trimmed or not. See new method <a href="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#setTrim%28boolean%29">Field.setTrim(boolean)</a>. This issue was raised by Andrey Rybin [<a href="https://issues.apache.org/jira/browse/CLK-627" target="_blank">CLK-627</a>]. </li>
<li class="change"> Added new Context methods <a href="http://click.apache.org/docs/click-api/org/apache/click/Context.html#hasRequestParameter%28java.lang.String%29">Context.hasRequestParameter(String)</a> and <a href="http://click.apache.org/docs/click-api/org/apache/click/Context.html#hasRequestAttribute%28java.lang.String%29">Context.hasRequestAttribute(String)</a>. </li>
<li class="change"> Added support to Select for a <a href="http://click.apache.org/docs/click-api/org/apache/click/control/Select.html#setDefaultOption%28org.apache.click.control.Option%29">default option</a> that can be used to validate non selection against and allows the Select to only populate its optionList at rendering time, instead of during <tt>onProcess</tt> event. [<a href="https://issues.apache.org/jira/browse/CLK-641" target="_blank">CLK-641</a>]. </li>
<li class="change"> Improved default autobinding mode to bind both public fields and fields annotated with @Bindable. In previous versions the default autobinding mode only binded public Page fields [<a href="https://issues.apache.org/jira/browse/CLK-648" target="_blank">CLK-648</a>]. </li>
<li class="change"> Added mock support for user <a href="http://click.apache.org/docs/mock-api/org/apache/click/servlet/MockPrincipal.html">principals</a> and roles. This issue was raised and fixed by Sven Pfeiffer [<a href="https://issues.apache.org/jira/browse/CLK-585" target="_blank">CLK-585</a>]. </li>
<li class="change"> Added localized Date format pattern support. This issue was raised by Andrey Rybin [<a href="https://issues.apache.org/jira/browse/CLK-610" target="_blank">CLK-610</a>]. </li>
<li class="change"> Added Polish resource bundle for DateField. This issue was raised and fixed by Rafal Rusin [<a href="https://issues.apache.org/jira/browse/CLK-624" target="_blank">CLK-624</a>]. </li>
<li class="change"> Migrated controls to import resources through Elements and the <tt>getHeadElements</tt> method [<a href="https://issues.apache.org/jira/browse/CLK-647" target="_blank">CLK-647</a>]. </li>
<li class="change"> Improved SpringClickServlet to re-inject transient beans after stateful page deserialization. This feature is only supported when the stateful page instance is created by Click, not Spring [<a href="https://issues.apache.org/jira/browse/CLK-667" target="_blank">CLK-667</a>]. </li>
<li class="change"> Replaced Page and Control getMessage methods with varargs equivalents [<a href="https://issues.apache.org/jira/browse/CLK-604" target="_blank">CLK-604</a>]. </li>
<li class="change"> Removed Click core's dependency on Velocity. This issue was raised by by Andrey Rybin [<a href="https://issues.apache.org/jira/browse/CLK-606" target="_blank">CLK-606</a>]. </li>
<li class="change"> Replaced multiple ClickUtils close methods with a single method accepting a <a href="http://click.apache.org/docs/click-api/org/apache/click/util/ClickUtils.html#close%28java.io.Closeable%29">Closeable</a>. This issue was raised by Andrey Rybin [<a href="https://issues.apache.org/jira/browse/CLK-620" target="_blank">CLK-620</a>]. </li>
<li class="change"> Improved ClickServlet to use the response's OutputStream if the Writer cannot be retrieved [<a href="https://issues.apache.org/jira/browse/CLK-644" target="_blank">CLK-644</a>]. </li>
<li class="change"> Fixed issue where RadioGroup label referenced a non-existing ID. RadioGroup is now wrapped inside a span tag with the given ID. This issue was raised and fixed by Finn Bock [<a href="https://issues.apache.org/jira/browse/CLK-577" target="_blank">CLK-577</a>]. </li>
<li class="change"> Fixed DateField to set seconds back to zero. This issue was raised by Andrey Rybin [<a href="https://issues.apache.org/jira/browse/CLK-664" target="_blank">CLK-664</a>]. </li>
<li class="change"> The menu.dtd has been published to <a href="http://click.apache.org/dtds/menu-2.2.dtd">http://click.apache.org/dtds/menu-2.2.dtd</a>. If you want your configuration to conform to the menu.dtd, include the following declaration in your menu.xml:<br />
<pre class="brush: xml"><!DOCTYPE menu PUBLIC
"-//Apache Software Foundation//DTD Click Menu 2.2//EN"
"http://click.apache.org/dtds/menu-2.2.dtd">
</pre></li>
<li class="change"> The new click-2.2.dtd has been published to <a href="http://click.apache.org/dtds/click-2.2.dtd">http://click.apache.org/dtds/click-2.2.dtd</a>. If you want your configuration to conform to the click.dtd, include the following declaration in your click.xml:<br />
<pre class="brush: xml"><!DOCTYPE click-app PUBLIC
"-//Apache Software Foundation//DTD Click Configuration 2.2//EN"
"http://click.apache.org/dtds/click-2.2.dtd">
</pre></li>
</ul><div class="separator" style="clear: both; text-align: center;"></div><span style="font-weight: bold;">New examples: </span><br />
<ul><li> <a class="external" href="http://www.avoka.com/click-examples/form/dynamic/dynamic-form.htm" target="_blank"> Dynamic Form</a> demonstrates how to dynamically add new Fields at runtime. </li>
<li> <a class="external" href="http://www.avoka.com/click-examples/form/dynamic/dynamic-field-set.htm" target="_blank"> Dynamic FieldSet</a> demonstrates how to dynamically add a FieldSet at runtime. </li>
<li> <a class="external" href="http://www.avoka.com/click-examples/form/dynamic/dynamic-select.htm" target="_blank"> Dynamic Select</a> demonstrates how to dynamically add fields based on a Select field value. </li>
<li> <a class="external" href="http://www.avoka.com/click-examples/control/disabled-demo.htm" target="_blank"> Disabled Demo</a> demonstrates the behavior of disabled fields. </li>
</ul>Enjoy.<br />
<br />
- The Click teamBob Schellinkhttp://www.blogger.com/profile/10996406110751921749noreply@blogger.com0tag:blogger.com,1999:blog-2587500056091829705.post-87173010130135231282010-02-19T22:02:00.001-08:002010-02-19T22:03:14.334-08:00ClickIDE 2.1.0.0 released: support Apache Click 2.1.0 and Eclipse 3.5<p>The latest version of ClickIDE is available. This release supports Click 2.1.0 and Eclipse 3.5.</p><p> ClickIDE is based on Eclipse and the Eclipse Web Tools Project (WTP), and provides extended features for developing web applications using Click.<br /></p><p> <span style="font-weight: bold;">Important links</span>:<br /></p> <ul><li><a href="http://click.apache.org/docs/click-ide.html">ClickIDE Home</a></li><li><a href="http://www.apache.org/dyn/closer.cgi/click/clickide/2.1.0.0/clickide-2.1.0.0.zip"><span style="font-size:100%;">Download ClickIDE 2.1.0.0</span></a></li></ul><p><b>Main features:</b><br /></p><ul><li>Fast switching between Page classes and templates (Ctrl+Alt+S)</li><li>Project creation wizard</li><li>Click page creation wizard</li><li>Visual editor for the Click configuration file</li><li>Velocity template editor</li><li>Spring Framework and Apache Cayenne Integration</li><li>Integrated Click documentation</li></ul><b>New features and enhancements in 2.1.0.0:</b><br /><ul><li class="change"> Upgraded to Cayenne to 3.0 M6.</li><li class="change"> Added "Use PerformanceFilter" option in the project creation wizard. </li><li class="change"> Added switching comment action in the Velocity editor ([CTRL] + [/]). </li><li class="change"> Added (*) to required attributes in the click.xml editor. </li></ul><p>Enjoy Click! </p>Bob Schellinkhttp://www.blogger.com/profile/10996406110751921749noreply@blogger.com0tag:blogger.com,1999:blog-2587500056091829705.post-37094826019891012192010-02-05T21:20:00.000-08:002010-02-12T07:02:38.704-08:00Apache Click becomes a Top-Level Project and v2.1.0 now availableApache Click has become a new Apache Top Level Project (TLP), signifying that Click is a well-governed project under the Apache Software Foundation <a href="http://www.apache.org/foundation/how-it-works.html">principles</a>.<br /><br />Furthermore Click 2.1.0 has been released sporting many new features, including support for <a class="external" target="_blank" href="http://code.google.com/appengine/docs/java/overview.html">Google App Engine</a>, a free Java hosting environment from Google.<br /><ul><li><a href="http://click.apache.org/">Click Home</a></li><li><a href="http://click.apache.org/docs/roadmap-changes.html#2.1.0">Roadmap and Changes</a> - full list of new features, improvements and bug fixes</li><li><a href="http://click.apache.org/docs/upgrade-path.html#2.1.0">Upgrade Path</a> - please see the upgrade path when upgrading from 2.0.1 or earlier.</li><li><a href="http://www.apache.org/dyn/closer.cgi/click/click/2.1.0/click-2.1.0.zip">Download Click 2.1.0</a></li><li><a href="http://repo1.maven.org/maven2/org/apache/click/">Maven bundles</a><br /></li><li><a href="http://www.avoka.com/click-examples/">Live examples</a></li></ul><span style="font-weight: bold;">New features and improvements:</span><br /><ul><li class="change"> Added support for <a class="external" target="_blank" href="http://code.google.com/appengine/docs/java/overview.html">Google App Engine</a>, a free Java hosting environment from Google. This provides an ideal environment for students and startups to easily host their Click applications online. See <a href="http://click.apache.org/docs/extras-api/org/apache/click/extras/gae/GoogleAppEngineListener.html">GoogleAppEngineListener</a> for details [<a target="_blank" href="https://issues.apache.org/jira/browse/CLK-560">560</a>]. </li><li class="change"> Added support for an in-memory <a href="http://click.apache.org/docs/extras-api/org/apache/click/extras/gae/MemoryFileUploadService.html">File Upload Service</a> that can be used for uploading files in a <a class="external" target="_blank" href="http://code.google.com/appengine/docs/java/overview.html">Google App Engine</a> environment. </li><li class="change"> Added support for templates with custom extensions through the new ConfigService.<a href="http://click.apache.org/docs/click-api/org/apache/click/service/ConfigService.html#isTemplate%28java.lang.String%29">isTemplate</a> method. The default ConfigService implementation, XmlConfigService, provides support for the extensions <tt>.htm</tt> and <tt>.jsp</tt>, but new extensions can be provided in a subclass. See the <a href="http://click.apache.org/docs/click-api/org/apache/click/service/XmlConfigService.html#isTemplate%28java.lang.String%29">JavaDoc</a> for details [<a target="_blank" href="https://issues.apache.org/jira/browse/CLK-568">568</a>]. </li><li class="change"> Added support to the Page class for conditionally including Control <a href="http://click.apache.org/docs/click-api/org/apache/click/Page.html#getHeadElements%28%29">head elements</a> through the new method <a href="http://click.apache.org/docs/click-api/org/apache/click/Page.html#setIncludeControlHeadElements%28boolean%29">includeControlHeadElements</a> [<a target="_blank" href="https://issues.apache.org/jira/browse/CLK-571">571</a>]. </li><li class="change"> Added support to deploy resources inside JARs from the Servlet 3.0 compliant location, <tt>META-INF/resources</tt>. Click's own pre-packaged resources are now also located in the JAR under <tt>META-INF/resources</tt> [<a target="_blank" href="https://issues.apache.org/jira/browse/CLK-570">570</a>]. </li><li class="change"> Added new Calendar popup to DateField. This Calendar popup uses <a target="_blank" class="external" href="http://code.google.com/p/calendardateselect/">Calendar Date Select</a> which is based on the Prototype JavaScript library. <p> Please note if you don't want a dependency on the Prototype library you can use the third-party <a class="external" target="_blank" href="http://code.google.com/p/click-calendar/">Click Calendar</a> instead. </p></li><li class="change"> Added first class support for HEAD elements such as JavaScript and Css. The following classes were added: <a href="http://click.apache.org/docs/click-api/org/apache/click/element/Element.html">Element</a>, <a href="http://click.apache.org/docs/click-api/org/apache/click/element/ResourceElement.html">ResourceElement</a>, <a href="http://click.apache.org/docs/click-api/org/apache/click/element/JsImport.html">JsImport</a>, <a href="http://click.apache.org/docs/click-api/org/apache/click/element/JsScript.html">JsScript</a>, <a href="http://click.apache.org/docs/click-api/org/apache/click/element/CssImport.html">CssImport</a> and <a href="http://click.apache.org/docs/click-api/org/apache/click/element/CssStyle.html">CssStyle</a>. A new method was added to Page and Control: <a href="http://click.apache.org/docs/click-api/org/apache/click/Control.html#getHeadElements%28%29">Control.getHeadElements()</a> and <a href="http://click.apache.org/docs/click-api/org/apache/click/Page.html#getHeadElements%28%29">Page.getHeadElements()</a> [<a target="_blank" href="https://issues.apache.org/jira/browse/CLK-501">501</a>]. </li><li class="change"> Added <a href="http://click.apache.org/docs/extras-api/org/apache/click/extras/control/SubmitLink.html">SubmitLink</a> control that can submit a Form [<a target="_blank" href="https://issues.apache.org/jira/browse/CLK-519">519</a>]. </li><li> Added <a href="http://click.apache.org/docs/extras-api/org/apache/click/extras/control/HiddenList.html">HiddenList</a> control for rendering and submitting a list of hidden fields [<a target="_blank" href="https://issues.apache.org/jira/browse/CLK-491">491</a>]. </li><li class="change"> Added pluggable security access controller (<a href="http://click.apache.org/docs/extras-api/org/apache/click/extras/security/AccessController.html">AccessController</a>) to Menu class. This pluggable interface enable use of security frameworks such as Spring Security (Acegi) or JSecurity to control user access to Menu items. This issue was raised by Demetrios Kyriakis [<a target="_blank" href="https://issues.apache.org/click/browse/CLK-406">406</a>]. </li><li class="change"> Added an Ant task, called DeployTask, for deploying static resources at build time. This task is useful when deploying Click applications in restricted environments. For more details see the section: <a href="http://click.apache.org/docs/user-guide/html/ch04s03.html#deploying-restricted-env">deploying resources in a restricted environment</a>. </li><li class="change"> Added a <a href="http://click.apache.org/docs/click-api/org/apache/click/service/ResourceService.html">ResourceService</a>, for serving static resources at runtime. This service is useful when deploying Click applications in restricted environments. For more details see the section: <a href="http://click.apache.org/docs/user-guide/html/ch04s03.html#deploying-restricted-env">deploying resources in a restricted environment</a> [<a target="_blank" href="https://issues.apache.org/click/browse/CLK-564">564</a>]. </li><li class="change"> Added method, <a href="http://click.apache.org/docs/click-api/org/apache/click/util/ClickUtils.html#createTemplateModel%28org.apache.click.Page,%20org.apache.click.Context%29">ClickUtils.createTemplateModel</a>, which returns a template model containing objects such as the Context path, Page path, HTTP request, HTTP response, HTTP session etc. </li><li class="change"> Added ability to specify a custom TreeNode icon through the new method TreeNode.<a href="http://click.apache.org/docs/extras-api/org/apache/click/extras/tree/TreeNode.html#setIcon%28java.lang.String%29">setIcon(String)</a>. This issue was raised and fixed by Tim Hooper [<a target="_blank" href="https://issues.apache.org/jira/browse/CLK-494">494</a>]. </li><li class="change"> Added method <a href="http://click.apache.org/docs/click-api/org/apache/click/util/Format.html#url%28java.lang.Object%29">Format.url</a> for encoding URL's in templates [<a target="_blank" href="https://issues.apache.org/jira/browse/CLK-399">399</a>]. </li><li class="change"> Added method <a href="http://click.apache.org/docs/extras-api/org/apache/click/extras/control/FieldColumn.html#setProperty%28java.lang.Object,%20java.lang.String,%20java.lang.Object%29">FieldColumn.setProperty</a> that can be overriden to provide custom binding for complex domain objects. This issue was raised and fixed by WarnerJan Veldhuis [<a target="_blank" href="https://issues.apache.org/jira/browse/CLK-528">528</a>]. </li><li class="change"> Added TypeConverter configuration option to ClickServlet. See <a href="http://click.apache.org/docs/click-api/org/apache/click/ClickServlet.html#getTypeConverter%28%29">getTypeConverter()</a> method for details. This issue was raised Joseph Schmidt and fixed by Adrian A. [<a target="_blank" href="https://issues.apache.org/jira/browse/CLK-539">539</a>]. </li><li class="change"> Added <a href="http://click.apache.org/docs/extras-api/org/apache/click/extras/service/Slf4jLogService.html">Slf4jLogService</a> for supporting multiple application servers. This issue was raised Oliver Burn [<a target="_blank" href="https://issues.apache.org/jira/browse/CLK-555">555</a>]. </li><li class="change"> Added <a href="http://click.apache.org/docs/click-api/org/apache/click/util/Bindable.html">@Bindable</a> annotation support for page field autobinding. @Bindable supports public, protected and private Page variables [<a target="_blank" href="https://issues.apache.org/jira/browse/CLK-556">556</a>, <a target="_blank" href="https://issues.apache.org/jira/browse/CLK-599">599</a> ]. </li><li class="change"> Added property files with translation for the Russian language. This issue was raised and fixed by Andrey Rybin [<a target="_blank" href="https://issues.apache.org/jira/browse/CLK-607">607</a>], [<a target="_blank" href="https://issues.apache.org/jira/browse/CLK-611">611</a>]. </li><li class="change"> Added new Tree methods <a href="http://click.apache.org/docs/extras-api/org/apache/click/extras/tree/Tree.html#setWidth%28java.lang.String%29">setWidth</a> / <a href="http://click.apache.org/docs/extras-api/org/apache/click/extras/tree/Tree.html#getWidth%28%29">getWidth</a> and <a href="http://click.apache.org/docs/extras-api/org/apache/click/extras/tree/Tree.html#setHeight%28java.lang.String%29">setHeight</a> / <a href="http://click.apache.org/docs/extras-api/org/apache/click/extras/tree/Tree.html#getHeight%28%29">getHeight</a>. Also fixed rendering issues in IE6/7 for long node labels that overflow the tree width [<a target="_blank" href="https://issues.apache.org/jira/browse/CLK-616">616</a>]. </li><li class="change"> The click.dtd has been published to <a href="http://click.apache.org/dtds/click-2.1.dtd">http://click.apache.org/dtds/click-2.1.dtd</a>.</li><li class="change"> If you want your configuration to conform to the click.dtd, include the following declaration in your click.xml:<br /><pre><!DOCTYPE click-app PUBLIC<br />"-//Apache Software Foundation//DTD Click Configuration 2.1//EN"<br />"http://click.apache.org/dtds/click_2_1.dtd"></pre></li><li class="change"> Improved Form validation to allow Form subclasses to override the <a href="http://click.apache.org/docs/click-api/org/apache/click/control/Form.html#validate%28%29">validate</a> method and implement cross-field validation. The following changes were made: the previous <tt>validate</tt> method was renamed to <a href="http://click.apache.org/docs/click-api/org/apache/click/control/Form.html#validateFileUpload%28%29">validateFileUpload</a> and a new empty <a href="http://click.apache.org/docs/click-api/org/apache/click/control/Form.html#validate%28%29">validate</a> method was introduced, that can safely be overridden in subclasses [<a target="_blank" href="https://issues.apache.org/jira/browse/CLK-572">572</a>]. </li><li class="change"> Improved Page redirect to support parameters. See the new Page methods <a href="http://click.apache.org/docs/click-api/org/apache/click/Page.html#setRedirect%28java.lang.String,%20java.util.Map%29">setRedirect(String, Map)</a> and <a href="http://click.apache.org/docs/click-api/org/apache/click/Page.html#setRedirect%28java.lang.Class,%20java.util.Map%29">setRedirect(Class, Map)</a> This issue was raised and fixed by Adrian [<a target="_blank" href="https://issues.apache.org/jira/browse/CLK-536">536</a>]. </li><li class="change"> Improved Link Controls to support multivalued parameters through the new AbstractLink methods <a href="http://click.apache.org/docs/click-api/org/apache/click/control/AbstractLink.html#getParameterValues%28java.lang.String%29">getParameterValues()</a> and <a href="http://click.apache.org/docs/click-api/org/apache/click/control/AbstractLink.html#setParameterValues%28java.lang.String,%20java.lang.String[]%29">setParameterValues()</a> [<a target="_blank" href="https://issues.apache.org/jira/browse/CLK-554">554</a>]. </li><li class="change"> Improved Table to support very large datasets by promoting the methods <a href="http://click.apache.org/docs/click-api/org/apache/click/control/Table.html#getFirstRow%28%29">getFirstRow()</a> and <a href="http://click.apache.org/docs/click-api/org/apache/click/control/Table.html#getLastRow%28%29">getLastRow()</a> as public. These methods provide the necessary information to only retrieve the displayed rows [<a target="_blank" href="https://issues.apache.org/jira/browse/CLK-504">504</a>]. </li><li class="change"> Improved LinkDecorator to support target identfier property parameter names. This issue was raised by Demetrios Kyriakis and fixed by fixed by Adrian A. [<a target="_blank" href="https://issues.apache.org/jira/browse/CLK-400">400</a>]. </li><li class="change"> Improved PickList methods <a href="http://click.apache.org/docs/extras-api/org/apache/click/extras/control/PickList.html#getValueObject%28%29">getValueObject()</a> and <a href="http://click.apache.org/docs/extras-api/org/apache/click/extras/control/PickList.html#setValueObject%28java.lang.Object%29">setValueObject(Object)</a> to delegate to <a href="http://click.apache.org/docs/extras-api/org/apache/click/extras/control/PickList.html#getSelectedValues%28%29">getSelectedValues()</a> and <a href="http://click.apache.org/docs/extras-api/org/apache/click/extras/control/PickList.html#addSelectedValue%28java.lang.String%29">addSelectedValue(String)</a> respectively [<a target="_blank" href="https://issues.apache.org/jira/browse/CLK-490">490</a>]. </li><li class="change"> Improved Spring integration with <a href="http://click.apache.org/docs/extras-api/org/apache/click/extras/spring/SpringClickServlet.html">SpringClickServlet</a> and <a href="http://click.apache.org/docs/extras-api/org/apache/click/extras/spring/PageScopeResolver.html">PageScopeResolver</a>, supporting Spring instantiated Pages with @Component configuration [<a target="_blank" href="https://issues.apache.org/jira/browse/CLK-534">534</a>]. </li><li class="change"> Improved CompressionServletResponseWrapper and CompressionResponseStream classes to have public visibility to enable use in custom servlet Filters [<a target="_blank" href="https://issues.apache.org/click/browse/CLK-547">547</a>]. </li><li class="change"> Improved Menu control to render attribute class="selected" when the menu item is selected. This issue was raised and fixed by Frederic Daoud [<a target="_blank" href="https://issues.apache.org/click/browse/CLK-551">551</a>]. </li><li class="change"> Improved PerformanceFilter to implement exclude-paths filtering [<a target="_blank" href="https://issues.apache.org/click/browse/CLK-498">498</a>]. </li><li class="change"> Improved XmlConfigService to scan for deployable resources inside folders on the classpath [<a target="_blank" href="https://issues.apache.org/click/browse/CLK-552">552</a>]. </li><li class="change"> Improved Cayenne DataContextFilter, including adding support for LifecycleListener registration [<a target="_blank" href="https://issues.apache.org/jira/browse/CLK-559">559</a>]. </li><li class="change"> Improved <a href="http://click.apache.org/docs/click-api/org/apache/click/control/AbstractLink.html">AbstractLink</a> to allow rendering of both icon and label in Link controls (default behavior renders either a label or an icon) [<a target="_blank" href="https://issues.apache.org/jira/browse/CLK-535">535</a>]. </li><li class="change"> Improved Page and Control message handling with null args. This issue was raised by WarnerJan Veldhuis [<a target="_blank" href="https://issues.apache.org/jira/browse/CLK-600">600</a>]. </li><li class="change"> Fixed resource deployment on JBoss 5 and up. The solution is based on the work done by the <a class="external" target="_blank" href="http://www.stripesframework.org/">Stripes Framework</a> developers [<a target="_blank" href="https://issues.apache.org/jira/browse/CLK-589">589</a>].<br /><br /></li></ul><span style="font-weight: bold;">Deprecated:</span><br /><ul><li class="change"> Deprecated methods: <a href="http://click.apache.org/docs/click-api/org/apache/click/Control.html#getHtmlImports%28%29">Control.getHtmlImports()</a> and <a href="http://click.apache.org/docs/click-api/org/apache/click/Page.html#getHtmlImports%28%29">Page.getHtmlImports()</a>. These methods have been deprecated in favor of <a href="http://click.apache.org/docs/click-api/org/apache/click/Control.html#getHeadElements%28%29">Control.getHeadElements()</a> and <a href="http://click.apache.org/docs/click-api/org/apache/click/Page.html#getHeadElements%28%29">Page.getHeadElements()</a>. </li><li class="change">Deprecated methods: <a href="http://click.apache.org/docs/click-api/org/apache/click/Page.html#getPageImports%28%29">Page.getPageImports()</a> and <a href="http://click.apache.org/docs/click-api/org/apache/click/Page.html#setPageImports%28org.apache.click.util.PageImports%29">Page.setPageImports()</a>. These methods have been deprecated in favor of <a href="http://click.apache.org/docs/click-api/org/apache/click/Page.html#getHeadElements%28%29">Page.getHeadElements()</a>. </li></ul><br /><span style="font-weight: bold;">Updated third-party libraries:</span><br /><ul><li class="change"> Update Velocity library to version <a href="http://velocity.apache.org/engine/releases/velocity-1.6.2/">1.6.3</a>. </li><li class="change"> Update Cayenne library to version <a href="http://cayenne.apache.org/">3.0M6</a>. </li><li style="text-align: left;" class="change"> Update Prototype.js library to version <a href="http://www.prototypejs.org/2009/9/1/prototype-1-6-1-released">1.6.1</a>. </li></ul><br /><span style="font-weight: bold;">New Documentation:</span><br /><ul><li>Documentation has been converted to Docbook and are made available in three different flavors: <a href="file:///C:/dev/os/apache/click/click-svn/documentation/docs/user-guide.html">PDF, HTML (single page) and HTML (multiple pages)</a>. Thanks to Gilberto C Andrade for doing the conversion [<a target="_blank" href="https://issues.apache.org/jira/browse/CLK-482">482</a>]. </li><li>Added a new section, <a href="http://click.apache.org/docs/user-guide/html/ch04s03.html#deploying-restricted-env">Deploying resources in a restricted environment</a>, describing how to deploy static resources in environments where WAR/EAR are not unpacked or where file system permissions are restricted, such as <a class="external" target="_blank" href="http://code.google.com/appengine/docs/java/overview.html">Google App Engine</a>. </li><li>Added documentation describing the new HEAD element support. Please see the new section on <a href="http://click.apache.org/docs/user-guide/html/ch02s12.html">Page HEAD elements</a> and the section on <a href="http://click.apache.org/docs/user-guide/html/ch03s05.html">Control HEAD elements</a>. </li></ul><br /><span style="font-weight: bold;">New examples: </span><br /><ul><li> <a target="_blank" class="external" href="http://www.avoka.com/click-examples/general/page-head-demo.htm"> Page HEAD elements</a> demonstrates how to add <a href="http://click.apache.org/docs/click-api/org/apache/click/element/JsImport.html">JsImport</a>, <a href="http://click.apache.org/docs/click-api/org/apache/click/element/JsScript.html">JsScript</a>, <a href="http://click.apache.org/docs/click-api/org/apache/click/element/CssImport.html">CssImport</a> and <a href="http://click.apache.org/docs/click-api/org/apache/click/element/CssStyle.html">CssStyle</a> HEAD elements to a Page. </li><li> <a target="_blank" class="external" href="http://www.avoka.com/click-examples/general/control-head-demo.htm"> Control HEAD elements</a> demonstrates how to add <a href="http://click.apache.org/docs/click-api/org/apache/click/element/JsImport.html">JsImport</a> and <a href="http://click.apache.org/docs/click-api/org/apache/click/element/CssImport.html">CssImport</a> HEAD elements to a custom Control. </li><li> <a target="_blank" class="external" href="http://www.avoka.com/click-examples/control/submit-link-demo.htm"> SubmitLink Demo</a> shows how to use the new <a href="http://click.apache.org/docs/extras-api/org/apache/click/extras/control/SubmitLink.html">SubmitLink</a> control. </li><li> <a target="_blank" class="external" href="http://www.avoka.com/click-examples/table/large-dataset-demo.htm"> Large Dataset</a> is an example of a Table with a large number of rows and how to lazily page through the rows using a custom data provider. </li><li> <a target="_blank" class="external" href="http://www.avoka.com/click-examples/panel/reusable-panel-demo.htm"> Reusable Panel</a> is an example of a reusable Panel which provides a Form for capturing Client details. </li><li> <a target="_blank" class="external" href="http://www.avoka.com/click-examples/quartz/quartz-job-scheduler.htm"> Quartz Job Scheduler</a> is an example demonstrating how to integrate the Quartz Job Scheduling framework into a Click application. </li><li><a target="_blank" class="external" href="http://www.avoka.com/click-examples/general/excel-export.htm">Excel Table Exporter</a> example demonstrates how to export a Click Table to an Excel spreadsheet using <a class="external" target="_blank" href="http://poi.apache.org/">Apache POI</a>. </li></ul><br />Enjoy.<br /><br />- The Click teamBob Schellinkhttp://www.blogger.com/profile/10996406110751921749noreply@blogger.com1tag:blogger.com,1999:blog-2587500056091829705.post-36377123887866076752010-01-05T13:25:00.000-08:002010-01-06T03:43:39.898-08:00New book: Getting Started With Apache ClickWe start 2010 with some great news. <a href="http://www.stripesbook.com/blog/">Freddy Daoud</a> just announced his new book: <a href="http://www.fdaoud.com/clickbook/">Getting started with Apache Click</a>. Finally, a book is available on the Click framework that provides a great way for getting started quickly.<br /><br />From the website: <blockquote>This book will help you get started with this excellent framework, starting with the basics and moving on to creating a sample application. You'll also learn how to integrate popular third-party frameworks such as Spring, Hibernate, Java Persistence API (JPA), and more. </blockquote>There is also a chapter on authentication and authorization which integrates Click and <a href="http://incubator.apache.org/shiro/">Apache Shiro</a>, an open source security framework also hosted at Apache.<br /><br />You can view the book table of contents <a href="http://www.fdaoud.com/clickbook/toc.html">here</a>, and download the example source code <a href="http://www.fdaoud.com/clickbook/examples.zip">here</a>.<br /><br />Enjoy.<br /><br />The Click team.Bob Schellinkhttp://www.blogger.com/profile/10996406110751921749noreply@blogger.com0tag:blogger.com,1999:blog-2587500056091829705.post-17692595149104632102009-10-24T01:23:00.000-07:002009-10-24T01:33:13.946-07:00Netbeans plugin released for Apache Click<p><a href="http://hantsy.blogspot.com/">Hantsy Bai</a> has announced the release of a <a href="http://hantsy.blogspot.com/2009/10/click-for-netbeans-plugin-10-is-avai.html">Netbeans plugin</a> for Apache Click. Netbeans users can now enjoy the same features provided by <a href="http://incubator.apache.org/click/docs/click-ide.html">ClickIDE</a>, the Eclipse based plugin.</p><p>Please note the plugin targets Netbeans 6.7.1 and might not work with earlier versions.</p><p>Features of the plugin includes:</p><ul><li>Wizard for creating a new Click project</li><li>Wizard for creating new pages and templates</li><li>Quickly switch between a Page class, template and property (you can also define keyboard shortcuts for these functions)<br /></li><li>Provides basic code completion, error checking, hyperlinking and refactoring for click.xml and menu.xml</li></ul><p>Not sure if its a feature of the plugin or of Netbeans itself, but the plugin automatically recognized my existing Click projects which is a nice touch.</p><p>Here are some screenshots of the plugin in action.</p><br />• Create a new Click project:<p><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Ijl8pg_nh3E/SuK7Gq57whI/AAAAAAAAADg/stOpKEb8310/s1600-h/create-click-project.png"><img style="cursor: pointer; width: 400px; height: 274px;" src="http://2.bp.blogspot.com/_Ijl8pg_nh3E/SuK7Gq57whI/AAAAAAAAADg/stOpKEb8310/s400/create-click-project.png" alt="" id="BLOGGER_PHOTO_ID_5396081026814165522" border="0" /></a></p><p> </p><p><br /></p><p>• Create a new Click page and template:<br /></p><p><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Ijl8pg_nh3E/SuK7R64gXfI/AAAAAAAAADo/MosPiL9y7OQ/s1600-h/create-click-page.png"><img style="cursor: pointer; width: 400px; height: 290px;" src="http://4.bp.blogspot.com/_Ijl8pg_nh3E/SuK7R64gXfI/AAAAAAAAADo/MosPiL9y7OQ/s400/create-click-page.png" alt="" id="BLOGGER_PHOTO_ID_5396081220081704434" border="0" /></a></p><p> </p><p><br /></p><p>• Switch to the Page template:<br /></p><p><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Ijl8pg_nh3E/SuK7dcwx_NI/AAAAAAAAADw/Wd6ND6h4-6s/s1600-h/goto-template.png"><img style="cursor: pointer; width: 400px; height: 363px;" src="http://3.bp.blogspot.com/_Ijl8pg_nh3E/SuK7dcwx_NI/AAAAAAAAADw/Wd6ND6h4-6s/s400/goto-template.png" alt="" id="BLOGGER_PHOTO_ID_5396081418154671314" border="0" /></a></p><p> </p><p><br /></p><p>• Switch to the Page class:</p><p><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Ijl8pg_nh3E/SuK7k6Ax0qI/AAAAAAAAAD4/-ZLrKoSrIcc/s1600-h/goto-page.png"><img style="cursor: pointer; width: 400px; height: 264px;" src="http://1.bp.blogspot.com/_Ijl8pg_nh3E/SuK7k6Ax0qI/AAAAAAAAAD4/-ZLrKoSrIcc/s400/goto-page.png" alt="" id="BLOGGER_PHOTO_ID_5396081546265481890" border="0" /></a></p><p> </p><p><br /></p><p>• Define keyboard shortcuts for the "Go to Page Class", "Go to Page Template" and "Go to Page Properties" functions:</p><p><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Ijl8pg_nh3E/SuK7u5iN1GI/AAAAAAAAAEA/F-EKu_1DYKc/s1600-h/shortcuts.png"><img style="cursor: pointer; width: 400px; height: 279px;" src="http://1.bp.blogspot.com/_Ijl8pg_nh3E/SuK7u5iN1GI/AAAAAAAAAEA/F-EKu_1DYKc/s400/shortcuts.png" alt="" id="BLOGGER_PHOTO_ID_5396081717935985762" border="0" /></a></p>Bob Schellinkhttp://www.blogger.com/profile/10996406110751921749noreply@blogger.com0tag:blogger.com,1999:blog-2587500056091829705.post-67674934813401330702009-07-19T03:04:00.000-07:002009-07-19T03:07:13.072-07:00Click Calendar 1.0.2 now available<p>Click Calendar 1.0.2 has been released fixing a bug in DateField that can disable Fields when the popup is closed.<br /></p><ul><li><a title="Click Calendar" href="http://code.google.com/p/click-calendar/">Click Calendar Home</a></li><li><a title="Click Calendar Jar" href="http://click-calendar.googlecode.com/files/click-calendar-1.0.2.jar">Download Click Calendar 1.0.2<br /></a></li><li><a title="Maven Bundles" href="http://repo2.maven.org/maven2/net/sf/click/click-calendar/">Maven bundle</a><br /></li></ul><span style="font-weight: bold;">Changes are:</span><br /><ul><li class="change"> Fixed DateField calendar popup which blocked keyboard input events after popup was destroyed. This issue was raised by Christophe FOIRET [<a target="_blank" href="https://issues.apache.org/click/browse/CLK-567">567</a>]. </li></ul>The Click team.Bob Schellinkhttp://www.blogger.com/profile/10996406110751921749noreply@blogger.com0tag:blogger.com,1999:blog-2587500056091829705.post-37849937873601453772009-07-18T01:37:00.000-07:002009-07-18T10:12:20.838-07:00Click 1.5.3 now availableClick 1.5.3 is the latest maintenance release in the 1.5 series. It fixes a bug in DateField that can disable Fields when the popup is closed. <br /><br />Please note that this is a non-Apache release. For new projects use <a href="http://incubator.apache.org/click/">Apache Click</a> which is continuing the development of this framework.<br /><ul><li><a href="http://click.sourceforge.net/index.html">Click Home</a></li><li><a href="http://click.sourceforge.net/docs/roadmap-changes.html#1.5.3">Roadmap and Changes</a></li><li><a href="http://click.sourceforge.net/docs/roadmap-changes.html#1.5-upgrade-path">Upgrade Path</a> - please see the upgrade path when upgrading from a previous release.</li><li><a href="https://sourceforge.net/projects/click/files/">Download Click 1.5.3</a></li><li><a href="http://repo1.maven.org/maven2/net/sf/click/">Maven bundles</a><br /></li><li><a href="http://www.avoka.com/click-examples/">Live examples</a></li></ul><span style="font-weight: bold;">Changes are:</span><br /><ul><li class="change"> Fixed DateField calendar popup which blocked keyboard input events after popup was destroyed. Only Internet Explorer is affected. This issue was raised by Christophe FOIRET [<a target="_blank" href="https://issues.apache.org/click/browse/CLK-567">567</a>]. </li><li class="change"> Fixed maven pom to refer to the correct Velocity <tt>groupId</tt>. </li><li class="change">Updated Velocity documentation to version 1.6.2. </li></ul>The Click team.Bob Schellinkhttp://www.blogger.com/profile/10996406110751921749noreply@blogger.com0tag:blogger.com,1999:blog-2587500056091829705.post-45727666490929728432009-06-13T16:56:00.000-07:002009-07-07T08:47:55.522-07:00Click 2.1.0-RC1 now availableThe Apache Click team is proud to announce the first release candidate of Click 2.1.0. This is our first release that requires Java 5.<br /><br />All bugs fixes from 1.5.2 are included as well as a slew of new features, examples and documentation. The documentation has been converted to the Docbook format and are made available in three different flavors: <a target="_blank" href="http://incubator.apache.org/click/docs/user-guide.html">PDF, HTML (single page) and HTML (multiple pages)</a>.<br /><ul><li><a href="http://incubator.apache.org/click/">Click Home</a></li><li><a href="http://incubator.apache.org/click/docs/roadmap-changes.html#2.1.0-RC1">Roadmap and Changes</a></li><li><a href="http://incubator.apache.org/click/docs/upgrade-path.html#2.1.0">Upgrade Path</a> - please see the upgrade path when upgrading from 2.0.1 or earlier.</li><li><a href="http://www.apache.org/dyn/closer.cgi/incubator/click/click/2.1.0-RC1/click-2.1.0-RC1-incubating.zip">Download Click 2.1.0-RC1<br /></a></li><li><a href="http://repo1.maven.org/maven2/org/apache/click/">Maven bundles</a><br /></li><li><a href="http://www.avoka.com/click-examples/">Live examples</a></li></ul><span style="font-weight: bold;">New features:</span><br /><ul><li class="change"> Added new Calendar popup to DateField. This Calendar popup uses <a target="_blank" class="external" href="http://code.google.com/p/calendardateselect/">Calendar Date Select</a> which is based on the Prototype JavaScript library. Please note if you don't want a dependency on the Prototype library you can use the third-party <a class="external" target="_blank" href="http://code.google.com/p/click-calendar/">Click Calendar</a> instead. </li><li class="change"> Added first class support for HEAD elements such as JavaScript and Css. The following classes were added: <a href="http://incubator.apache.org/click/docs/click-api/org/apache/click/element/Element.html">Element</a>, <a href="http://incubator.apache.org/click/docs/click-api/org/apache/click/element/ResourceElement.html">ResourceElement</a>, <a href="http://incubator.apache.org/click/docs/click-api/org/apache/click/element/JsImport.html">JsImport</a>, <a href="http://incubator.apache.org/click/docs/click-api/org/apache/click/element/JsScript.html">JsScript</a>, <a href="http://incubator.apache.org/click/docs/click-api/org/apache/click/element/CssImport.html">CssImport</a> and <a href="http://incubator.apache.org/click/docs/click-api/org/apache/click/element/CssStyle.html">CssStyle</a>. A new method was added to Page and Control: <a href="http://incubator.apache.org/click/docs/click-api/org/apache/click/Control.html#getHeadElements%28%29">Control.getHeadElements()</a> and <a href="http://incubator.apache.org/click/docs/click-api/org/apache/click/Page.html#getHeadElements%28%29">Page.getHeadElements()</a> [<a target="_blank" href="https://issues.apache.org/jira/browse/CLK-501">501</a>]. </li><li class="change"> Added <a href="http://incubator.apache.org/click/docs/extras-api/org/apache/click/extras/control/SubmitLink.html">SubmitLink</a> control that can submit a Form [<a target="_blank" href="https://issues.apache.org/jira/browse/CLK-519">519</a>]. </li><li> Added <a href="http://incubator.apache.org/click/docs/extras-api/org/apache/click/extras/control/HiddenList.html">HiddenList</a> control for rendering and submitting a list of hidden fields [<a target="_blank" href="https://issues.apache.org/jira/browse/CLK-491">491</a>]. </li><li class="change"> Added plug-able security access controller (<a href="http://incubator.apache.org/click/docs/extras-api/org/apache/click/extras/security/AccessController.html">AccessController</a>) to Menu class. This plubable interface enable use of security frameworks such as Spring Security (Acegi) or JSecurity to control user access to Menu items. This issue was raised by Demetrios Kyriakis [<a target="_blank" href="https://issues.apache.org/click/browse/CLK-406">406</a>]. </li><li class="change"> Added method, <a href="http://incubator.apache.org/click/docs/click-api/org/apache/click/util/ClickUtils.html#createTemplateModel%28org.apache.click.Page,%20org.apache.click.Context%29">ClickUtils.createTemplateModel</a>, that returns a template model containing objects such as the Context path, Page path, HTTP request, HTTP response, HTTP session etc. This method is useful when rendering custom templates.<br /></li><li class="change"> Added ability to specify a custom TreeNode icon through the new method TreeNode.<a href="http://incubator.apache.org/click/docs/extras-api/org/apache/click/extras/tree/TreeNode.html#setIcon%28java.lang.String%29">setIcon(String)</a>. This issue was raised and fixed by Tim Hooper [<a target="_blank" href="https://issues.apache.org/jira/browse/CLK-494">494</a>]. </li><li class="change"> Added method <a href="http://incubator.apache.org/click/docs/click-api/org/apache/click/util/Format.html#url%28java.lang.Object%29">Format.url</a> for encoding URL's in templates [<a target="_blank" href="https://issues.apache.org/jira/browse/CLK-399">399</a>]. </li><li class="change"> Added method <a href="http://incubator.apache.org/click/docs/extras-api/org/apache/click/extras/control/FieldColumn.html#setProperty%28java.lang.Object,%20java.lang.String,%20java.lang.Object%29">FieldColumn.setProperty</a> that can be overriden to provide custom binding for complex domain objects. This issue was raised and fixed by WarnerJan Veldhuis [<a target="_blank" href="https://issues.apache.org/jira/browse/CLK-528">528</a>]. </li><li class="change"> Added TypeConverter configuration option to ClickServlet. See <a href="http://incubator.apache.org/click/docs/click-api/org/apache/click/ClickServlet.html#getTypeConverter%28%29">getTypeConverter()</a> method for details. This issue was raised Joseph Schmidt and fixed by Adrian A. [<a target="_blank" href="https://issues.apache.org/jira/browse/CLK-539">539</a>]. </li><li class="change"> Added <a href="http://incubator.apache.org/click/docs/extras-api/org/apache/click/extras/service/Slf4jLogService.html">Slf4jLogService</a> for supporting multiple application servers. This issue was raised Oliver Burn [<a target="_blank" href="https://issues.apache.org/jira/browse/CLK-555">555</a>]. </li><li class="change"> Added <a href="http://incubator.apache.org/click/docs/click-api/org/apache/click/util/Bindable.html">@Bindable</a> annotation support for page field autobinding [<a target="_blank" href="https://issues.apache.org/jira/browse/CLK-556">556</a>]. </li><li class="change"> Improved Page redirect to support parameters. See the new Page methods <a href="http://incubator.apache.org/click/docs/click-api/org/apache/click/Page.html#setRedirect%28java.lang.String,%20java.util.Map%29">setRedirect(String, Map)</a> and <a href="http://incubator.apache.org/click/docs/click-api/org/apache/click/Page.html#setRedirect%28java.lang.Class,%20java.util.Map%29">setRedirect(Class, Map)</a> This issue was raised and fixed by Adrian [<a target="_blank" href="https://issues.apache.org/jira/browse/CLK-536">536</a>]. </li><li class="change"> Improved Link Controls to support multivalued parameters through the new AbstractLink methods <a href="http://incubator.apache.org/click/docs/click-api/org/apache/click/control/AbstractLink.html#getParameterValues%28java.lang.String%29">getParameterValues()</a> and <a href="http://incubator.apache.org/click/docs/click-api/org/apache/click/control/AbstractLink.html#setParameterValues%28java.lang.String,%20java.lang.String%5B%5D%29">setParameterValues()</a> [<a target="_blank" href="https://issues.apache.org/jira/browse/CLK-554">554</a>]. </li><li class="change"> Improved Table to support very large datasets by promoting the methods <a href="http://incubator.apache.org/click/docs/click-api/org/apache/click/control/Table.html#getFirstRow%28%29">getFirstRow()</a> and <a href="http://incubator.apache.org/click/docs/click-api/org/apache/click/control/Table.html#getLastRow%28%29">getLastRow()</a> as public. These methods provide the necessary information to only retrieve the displayed rows [<a target="_blank" href="https://issues.apache.org/jira/browse/CLK-504">504</a>]. </li><li class="change"> Improved LinkDecorator to support target identfier property parameter names. This issue was raised by Demetrios Kyriakis and fixed by fixed by Adrian A. [<a target="_blank" href="https://issues.apache.org/jira/browse/CLK-400">400</a>]. </li><li class="change"> Improved PickList methods <a href="http://incubator.apache.org/click/docs/extras-api/org/apache/click/extras/control/PickList.html#getValueObject%28%29">getValueObject()</a> and <a href="http://incubator.apache.org/click/docs/extras-api/org/apache/click/extras/control/PickList.html#setValueObject%28java.lang.Object%29">setValueObject(Object)</a> to delegate to <a href="http://incubator.apache.org/click/docs/extras-api/org/apache/click/extras/control/PickList.html#getSelectedValues%28%29">getSelectedValues()</a> and <a href="http://incubator.apache.org/click/docs/extras-api/org/apache/click/extras/control/PickList.html#addSelectedValue%28java.lang.String%29">addSelectedValue(String)</a> respectively [<a target="_blank" href="https://issues.apache.org/jira/browse/CLK-490">490</a>]. </li><li class="change"> Improved Spring integration with <a href="http://incubator.apache.org/click/docs/extras-api/org/apache/click/extras/spring/SpringClickServlet.html">SpringClickServlet</a> and <a href="http://incubator.apache.org/click/docs/extras-api/org/apache/click/extras/spring/PageScopeResolver.html">PageScopeResolver</a>, supporting Spring instantiated Pages with @Component configuration [<a target="_blank" href="https://issues.apache.org/jira/browse/CLK-534">534</a>]. </li><li class="change"> Improved CompressionServletResponseWrapper and CompressionResponseStream classes to have public visibility to enable use in custom servlet Filters [<a target="_blank" href="https://issues.apache.org/click/browse/CLK-547">547</a>]. </li><li class="change"> Improved Menu control to render attribute class="selected" when the menu item is selected. This issue was raised and fixed by Frederic Daoud [<a target="_blank" href="https://issues.apache.org/click/browse/CLK-551">551</a>]. </li><li class="change"> Improved PerformanceFilter to implement exclude-paths filtering [<a target="_blank" href="https://issues.apache.org/click/browse/CLK-498">498</a>]. </li><li class="change"> Improved XmlConfigService to scan for deployable resources inside folders on the classpath [<a target="_blank" href="https://issues.apache.org/click/browse/CLK-552">552</a>]. </li><li class="change"> Improved Cayenne DataContextFilter, including adding support for LifecycleListener registration [<a target="_blank" href="https://issues.apache.org/jira/browse/CLK-559">559</a>]. </li><li class="change"> Fixed PerformanceFilter and CompressionFilter to properly handle <tt><jsp:include></jsp:include></tt> requests [<a target="_blank" href="https://issues.apache.org/jira/browse/CLK-557">557</a>]. </li></ul><br /><span style="font-weight: bold;">Deprecated:</span><br /><ul><li class="change"> Deprecated methods: <a href="http://incubator.apache.org/click/docs/click-api/org/apache/click/Control.html#getHtmlImports%28%29">Control.getHtmlImports()</a> and <a href="http://incubator.apache.org/click/docs/click-api/org/apache/click/Page.html#getHtmlImports%28%29">Page.getHtmlImports()</a>. These methods have been deprecated in favor of <a href="http://incubator.apache.org/click/docs/click-api/org/apache/click/Control.html#getHeadElements%28%29">Control.getHeadElements()</a> and <a href="http://incubator.apache.org/click/docs/click-api/org/apache/click/Page.html#getHeadElements%28%29">Page.getHeadElements()</a>. </li></ul><br /><span style="font-weight: bold;">Updated third-party libraries:</span><br /><ul><li class="change"> Update Velocity library to version <a href="http://velocity.apache.org/engine/releases/velocity-1.6.2/">1.6.2</a>. </li><li class="change"> Update Cayenne library to version <a href="http://cayenne.apache.org/">3.0M6</a>. </li><li style="text-align: left;" class="change"> Update Prototype.js library to version <a href="http://www.prototypejs.org/2009/3/27/prototype-1-6-1-rc2-ie8-compatibility-element-storage-and-bug-fixes">1.6.1_RC2</a>. </li></ul><br /><span style="font-weight: bold;">New Documentation:</span><br /><ul><li>Documentation has been converted to Docbook and are made available in three different flavors: <a href="file:///C:/dev/os/apache/click/click-svn/documentation/docs/user-guide.html">PDF, HTML (single page) and HTML (multiple pages)</a>. Thanks to Gilberto C Andrade for doing the conversion [<a target="_blank" href="https://issues.apache.org/jira/browse/CLK-482">482</a>]. </li><li>Added documentation describing the new HEAD element support. Please see the new section on <a href="http://incubator.apache.org/click/docs/user-guide/html/ch02s12.html">Page HEAD elements</a> and the section on <a href="http://incubator.apache.org/click/docs/user-guide/html/ch03s05.html">Control HEAD elements</a>. </li></ul><br /><span style="font-weight: bold;">New examples: </span><br /><ul><li> <a target="_blank" class="external" href="http://www.avoka.com/click-examples/general/page-head-demo.htm"> Page HEAD elements</a> demonstrates how to add <a href="http://incubator.apache.org/click/docs/click-api/org/apache/click/element/JsImport.html">JsImport</a>, <a href="http://incubator.apache.org/click/docs/click-api/org/apache/click/element/JsScript.html">JsScript</a>, <a href="http://incubator.apache.org/click/docs/click-api/org/apache/click/element/CssImport.html">CssImport</a> and <a href="http://incubator.apache.org/click/docs/click-api/org/apache/click/element/CssStyle.html">CssStyle</a> HEAD elements to a Page. </li><li> <a target="_blank" class="external" href="http://www.avoka.com/click-examples/general/control-head-demo.htm"> Control HEAD elements</a> demonstrates how to add <a href="http://incubator.apache.org/click/docs/click-api/org/apache/click/element/JsImport.html">JsImport</a> and <a href="http://incubator.apache.org/click/docs/click-api/org/apache/click/element/CssImport.html">CssImport</a> HEAD elements to a custom Control. </li><li> <a target="_blank" class="external" href="http://www.avoka.com/click-examples/control/submit-link-demo.htm"> SubmitLink Demo</a> shows how to use the new <a href="http://incubator.apache.org/click/docs/extras-api/org/apache/click/extras/control/SubmitLink.html">SubmitLink</a> control. </li><li> <a target="_blank" class="external" href="http://www.avoka.com/click-examples/table/large-dataset-demo.htm"> Large Dataset</a> is an example of a Table with a large number of rows and how to lazily page through the rows using a custom data provider. </li><li> <a target="_blank" class="external" href="http://www.avoka.com/click-examples/panel/reusable-panel-demo.htm"> Reusable Panel</a> is an example of a reusable Panel which provides a Form for capturing Client details. </li><li> <a target="_blank" class="external" href="http://www.avoka.com/click-examples/quartz/quartz-job-scheduler.htm"> Quartz Job Scheduler</a> is an example demonstrating how to integrate the Quartz Job Scheduling framework into a Click application. </li></ul><br />Enjoy.<br /><br />- The Click team<br /><br />---<br /><br />Apache Click is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Apache Incubator PMC. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indicate that the project has yet to be fully endorsed by the ASF.Bob Schellinkhttp://www.blogger.com/profile/10996406110751921749noreply@blogger.com2tag:blogger.com,1999:blog-2587500056091829705.post-71794448685894105972009-05-18T14:22:00.000-07:002009-05-24T05:02:14.176-07:00Click 1.5.2 now availableClick 1.5.2 is another maintenance release in the 1.5 series. It also includes some new features such as a plug-able security access controller and improved Spring integration.<br /><br />Please note that this is a non-Apache release. For new projects use <a href="http://incubator.apache.org/click/">Apache Click</a> which is continuing the development of this framework.<br /><ul><li><a href="http://click.sourceforge.net/index.html">Click Home</a></li><li><a href="http://click.sourceforge.net/docs/roadmap-changes.html#1.5.2">Roadmap and Changes</a></li><li><a href="http://click.sourceforge.net/docs/roadmap-changes.html#1.5-upgrade-path">Upgrade Path</a> - please see the upgrade path when upgrading from a previous release.</li><li><a href="https://sourceforge.net/project/showfiles.php?group_id=82095&package_id=84113">Download Click 1.5.2</a></li><li><a href="http://repo1.maven.org/maven2/net/sf/click/">Maven bundles</a><br /></li><li><a href="http://www.avoka.com/click-examples/">Live examples</a></li></ul><span style="font-weight: bold;">Changes are:</span><br /><ul><li class="change"> Added plug-able security access controller (<a href="http://click.sourceforge.net/docs/extras-api/net/sf/click/extras/security/AccessController.html">AccessController</a>) to Menu class. This plug-able interface enable use of security frameworks such as ACEGI or JSecurity to control user access to Menu items. This issue was raised by Demetrios Kyriakis [<a target="_blank" href="https://issues.apache.org/click/browse/CLK-406">406</a>]. </li><li class="change"> Improved performance in situations where many controls are added to a page by decreasing the buffer size used for including HTML imports. </li><li class="change"> Improved Column decorator error handling [<a target="_blank" href="https://issues.apache.org/click/browse/CLK-495">495</a>]. </li><li class="change"> Improved PerformanceFilter to implement exclude-paths filtering [<a target="_blank" href="https://issues.apache.org/click/browse/CLK-498">498</a>]. </li><li class="change"> Improved Spring integration with <a href="http://click.sourceforge.net/docs/extras-api/net/sf/click/extras/spring/SpringClickServlet.html">SpringClickServlet</a> [<a target="_blank" href="https://issues.apache.org/jira/browse/CLK-534">534</a>]. </li><li class="change"> Improved CompressionServletResponseWrapper and CompressionResponseStream classes to have public visibility to enable use in custom servlet Filters [<a target="_blank" href="https://issues.apache.org/click/browse/CLK-547">547</a>]. </li><li class="change"> Fixed Column sorting to recognize numbers inside strings. This issue was raised by Venkatt Guhesan [<a target="_blank" href="https://issues.apache.org/click/browse/CLK-489">489</a>]. </li><li class="change"> Fixed a bug where FieldSet was not set as the parent of its child controls. This issue was raised by James P Brown [<a target="_blank" href="https://issues.apache.org/click/browse/CLK-497">497</a>]. </li><li class="change"> Fixed DateField setup to destroy the DHTML calendar instance when the popup is closed. This fixes a memory leak where calendar instances are not cleaned up [<a target="_blank" href="https://issues.apache.org/click/browse/CLK-499">499</a>]. </li><li class="change"> Fixed FormTable sorting bug. Added FormTable sort methods <a href="http://click.sourceforge.net/docs/extras-api/net/sf/click/extras/control/FormTable.html#setSortedColumn%28java.lang.String%29">setSortedColumn</a>, <a href="http://click.sourceforge.net/docs/extras-api/net/sf/click/extras/control/FormTable.html#setSortedAscending%28boolean%29">setSortedAscending</a>, <a href="http://click.sourceforge.net/docs/extras-api/net/sf/click/extras/control/FormTable.html#setPageNumber%28int%29">setPageNumber</a> for programmatic sorting. This issue was raised and fixed by Ben Warner [<a target="_blank" href="https://issues.apache.org/jira/browse/CLK-527">527</a>]. </li><li class="change"> Fixed a bug in AutoCompleteTextField where if the field was removed from a Form, its JavaScript resources would still be rendered. This issue was raised by Paul Zammit [<a target="_blank" href="https://issues.apache.org/jira/browse/CLK-546">546</a>]. </li><li class="change"> Fixed extras <tt>pom.xml</tt> dependencies [<a target="_blank" href="https://issues.apache.org/click/browse/CLK-492">492</a>]. </li><li class="change"> Updated Velocity library to version 1.6.2. </li></ul>Enjoy.<br /><br />The Click team.Bob Schellinkhttp://www.blogger.com/profile/10996406110751921749noreply@blogger.com0tag:blogger.com,1999:blog-2587500056091829705.post-14694638031656953252009-03-11T13:29:00.000-07:002009-03-11T14:12:39.571-07:00Documentation ported to Docbook<a href="http://www.jroller.com/gilbertoca/">Gilberto C. Andrade</a> recently ported Click's documentation to Docbook using Michael Fuchs<span style="text-decoration: underline;"> </span><a href="http://www.michael-a-fuchs.de/">HTML to Docbook</a> converter.<br /><br />This is really great news as we can now generate the documentation in both PDF and HTML formats.<br /><br />Below is a screenshot of how the PDF looks like:<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Ijl8pg_nh3E/SbghzahDpLI/AAAAAAAAADI/1TTT3sNZUs0/s1600-h/pdf.png"><img style="cursor: pointer; width: 400px; height: 238px;" src="http://3.bp.blogspot.com/_Ijl8pg_nh3E/SbghzahDpLI/AAAAAAAAADI/1TTT3sNZUs0/s400/pdf.png" alt="" id="BLOGGER_PHOTO_ID_5312032927658517682" border="0" /></a><br /><br />And here is how the HTML version looks like:<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Ijl8pg_nh3E/SbgmwtT6r1I/AAAAAAAAADY/7P7--UigSMk/s1600-h/html.png"><img style="cursor: pointer; width: 400px; height: 343px;" src="http://3.bp.blogspot.com/_Ijl8pg_nh3E/SbgmwtT6r1I/AAAAAAAAADY/7P7--UigSMk/s400/html.png" alt="" id="BLOGGER_PHOTO_ID_5312038378722209618" border="0" /></a><br /><br />To generate the docs we use a modified version of the <a href="http://velocity.apache.org/docbook/">Velocity Docbook Framework</a>. The modifications include upgrading to the latest versions of <a href="http://xmlgraphics.apache.org/fop/">Apache FOP</a> and <a href="http://sourceforge.net/projects/docbook/">Docbook XLS</a>.<br /><br />To achieve syntax highlighting for our source code we include the <a href="http://sourceforge.net/projects/xslthl">XSLTHL</a> library.<br /><br />The only issue I encountered was that XSLTHL doesn't work with the latest official Docbook XLS release. Luckily the latest <a href="http://docbook.sourceforge.net/snapshots/">snapshot</a> of Docbook XLS resolved the issue.<br /><br />We hope the new format will make it easier to read and learn Click.<br /><br />The Click team.Bob Schellinkhttp://www.blogger.com/profile/10996406110751921749noreply@blogger.com6tag:blogger.com,1999:blog-2587500056091829705.post-27427334989124855412009-02-15T14:34:00.000-08:002009-02-22T00:55:51.663-08:00Apache Click 2.0.1 now availableApache Click 2.0.1 is the first release from the Apache Software Foundation Incubator and is based on the 1.5.1 code base.<br /><br />Both 1.5.1 and 2.0.1 are considered stable and only bug fixes will be applied to these branches. New development will happen on 2.1.0, the next major version of Apache Click.<br /><ul><li><a href="http://incubator.apache.org/click/">Click Home</a></li><li><a href="http://incubator.apache.org/click/docs/roadmap-changes.html#2.0.1">Roadmap and Changes</a></li><li><a href="http://incubator.apache.org/click/docs/roadmap-changes.html#1.5-upgrade-path">Upgrade Path</a> - please see the upgrade path when upgrading from 1.4 or earlier.</li><li><a href="http://www.apache.org/dyn/closer.cgi/incubator/click/click/2.0.1/click-2.0.1-incubating.zip">Download Click 2.0.1<br /></a></li><li><a href="http://repo1.maven.org/maven2/org/apache/click/">Maven bundles</a><br /></li><li><a href="http://www.avoka.com/click-examples/">Live examples</a></li></ul><br />For this release we had to make some changes especially around incompatible licensed third-party software. Below is a short summary of these changes. More details and upgrade notes can be found in <a href="http://incubator.apache.org/click/docs/roadmap-changes.html#2.0.1">Roadmap and Changes</a>.<br /><br /><span style="font-weight: bold;">Changes are:</span><br /><ul><li>Packages were renamed to '<span style="font-weight: bold;">org.apache.click</span>'. When upgrading from older releases you will need to convert from 'net.sf.click' to 'org.apache.click'.</li><li>DateField used the incompatibly licensed JSCalendar which had to be dropped. Don't worry though, DateField still exists and has been converted to a TextField which understands how to parse and format Date objects. Further a new <a href="http://code.google.com/p/click-calendar/">Click Calendar</a> project was created which is a port of the old DateField functionality. The Click Calendar jar contains a single class called CalendarField which subclasses DateField and has the same API and functionality as the old DateField. When upgrading you can just rename your old DateField to CalendarField to get the popup calendar working.</li><li>The Chart controls was also using an incompatible licensed JavaScript library and these components was removed. A new project called <a href="http://code.google.com/p/click-charts/">Click Charts</a> was created for these components. They still use the 'net.sf.click' package so no code changes will be necessary.</li></ul>The next major release will be 2.1.0 and a new feature roadmap is being determined.<br /><br />Enjoy.<br /><br />The Click team.<br /><br />---<br /><br />Apache Click is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Apache Incubator PMC. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indicate that the project has yet to be fully endorsed by the ASF.Bob Schellinkhttp://www.blogger.com/profile/10996406110751921749noreply@blogger.com3tag:blogger.com,1999:blog-2587500056091829705.post-81854034063910902862009-01-23T03:57:00.000-08:002009-01-25T09:59:08.613-08:00Click 1.5.1 now availableClick 1.5.1 is a minor maintenance release which includes Turkish language support, improved exception handling and some minor bug fixes.<br /><ul><li><a href="http://incubator.apache.org/click/">Click Home</a></li><li><a href="http://incubator.apache.org/click/docs/roadmap-changes.html#1.5.1">Roadmap and Changes</a></li><li><a href="http://incubator.apache.org/click/docs/roadmap-changes.html#1.5-upgrade-path">Upgrade Path</a> - please see the upgrade path when upgrading from a previous release.</li><li><a href="https://sourceforge.net/project/showfiles.php?group_id=82095&package_id=84113&release_id=655844">Download Click 1.5.1</a></li><li><a href="http://repo1.maven.org/maven2/net/sf/click/">Maven bundles</a><br /></li><li><a href="http://www.avoka.com/click-examples/">Live examples</a></li></ul><span style="font-weight: bold;">Changes are:</span><br /><ul><li class="change"> Added Turkish language support. This issue was raised and fixed by Ali Ok. [<a target="_blank" href="https://issues.apache.org/click/browse/CLK-476">476</a>]. </li><li class="change"> Improved exception handling when a Control name is not defined [<a target="_blank" href="https://issues.apache.org/click/browse/CLK-473">473</a>]. </li><li class="change"> Added new constructors to extra controls which accepts the <tt>size</tt> attribute. This issue was raised by Christophe Foiret [<a target="_blank" href="https://issues.apache.org/click/browse/CLK-475">475</a>]. </li><li class="change"> Added MessageFormat support to Format through the methods <a href="http://incubator.apache.org/click/docs/click-api/net/sf/click/util/Format.html#message%28java.lang.String,%20java.lang.Object%29">message(String, Object)</a> and <a href="http://incubator.apache.org/click/docs/click-api/net/sf/click/util/Format.html#message%28java.lang.String,%20java.util.List%29">message(String, List)</a>. This issue was raised by Yu Kobayashi [<a target="_blank" href="https://issues.apache.org/click/browse/CLK-474">474</a>]. </li><li class="change"> Added new methods to CheckboxTree for improved customization. The new methods include <a href="http://incubator.apache.org/click/docs/extras-api/net/sf/click/extras/tree/CheckboxTree.html#renderCheckbox%28net.sf.click.util.HtmlStringBuffer,%20net.sf.click.extras.tree.TreeNode%29">renderCheckbox</a> and <a href="http://incubator.apache.org/click/docs/extras-api/net/sf/click/extras/tree/CheckboxTree.html#getInputType%28%29">getInputType</a>. </li><li class="change"> Added csv mime type. This issue was raised by Alvin Townsend. </li><li class="change"> Fixed URL rendering to encode ampersand characeters. [<a target="_blank" href="https://issues.apache.org/click/browse/CLK-483">483</a>]. </li><li class="change"> Fixed HiddenField to work with java.sql.Timestamp, java.sql.Time and java.sql.Date. [<a target="_blank" href="https://issues.apache.org/click/browse/CLK-484">484</a>]. </li><li class="change"> Fixed WebappLoader to reload Velocity global macro's [<a target="_blank" href="https://issues.apache.org/click/browse/CLK-467">467</a>]. </li><li class="change"> Fixed Page.setRedirect to check if redirect path starts with context path. This issue was raised by Christophe Foiret [<a target="_blank" href="https://issues.apache.org/click/browse/CLK-468">468</a>]. </li><li class="change"> Fixed a regression when manually setting the Page path to a JSP. [<a target="_blank" href="https://issues.apache.org/click/browse/CLK-141">141</a>]. </li><li class="change"> Fixed DateField's French translation. This issue was raised by Alvin Townsend. </li></ul>Enjoy.<br /><br />The Click team.Bob Schellinkhttp://www.blogger.com/profile/10996406110751921749noreply@blogger.com0tag:blogger.com,1999:blog-2587500056091829705.post-67843433392216620612008-11-09T22:58:00.000-08:002008-12-03T23:17:13.554-08:00ClickIDE 2.1.0 released: support Click 1.5A new version of ClickIDE is available. This release supports Click 1.5 and Eclipse 3.4/WTP 3.0.<br /><br /><span style="font-weight: bold;">Important links</span>:<br /><ul><li><a href="http://incubator.apache.org/click/docs/click-ide.html">ClickIDE Home</a></li><li><a href="https://sourceforge.net/project/showfiles.php?group_id=82095&package_id=84113"><span style="font-size:100%;">Download ClickIDE 2.1.0</span></a><br /></li></ul>Enjoy Click!Bob Schellinkhttp://www.blogger.com/profile/10996406110751921749noreply@blogger.comtag:blogger.com,1999:blog-2587500056091829705.post-79169421493643087942008-11-01T13:14:00.000-07:002009-01-21T12:42:32.988-08:00Click 1.5 final is released!<p>Click 1.5 is production ready and available for download.<br /></p><p>This is our biggest release yet with numerous new features, enhancements, documentation and examples.</p><p>We would like to thank everyone for their contributions to the 1.5 release.<br /></p><p>Important links:<br /></p><ul><li><a href="http://incubator.apache.org/click/">Click Home</a></li><li><a href="http://incubator.apache.org/click/docs/roadmap-changes.html#1.5">Roadmap and Changes</a></li><li><a href="http://incubator.apache.org/click/docs/roadmap-changes.html#1.5-upgrade-path">Upgrade Path</a> - please see the upgrade path when upgrading from a previous release.</li><li><a href="https://sourceforge.net/project/showfiles.php?group_id=82095&package_id=84113">Download Click 1.5</a></li><li><a href="http://repo1.maven.org/maven2/net/sf/click/">Maven bundles</a><br /></li><li><a href="http://www.avoka.com/click-examples/">Live examples</a></li></ul>Highlights for 1.5 include:<br /><ul><li class="item"><a href="http://incubator.apache.org/click/docs/click-api/net/sf/click/control/Container.html">Container</a> - new interface for building arbitrary complex, hierarchical Controls.</li><li class="item"><a href="http://incubator.apache.org/click/docs/click-api/net/sf/click/ActionListener.html">ActionListener</a> - new interface provides compile time safety and support for code refactoring tools.</li><li class="item">Performance have been enhanced by rendering markup from a single buffer. In previous releases each Control managed its own internal String buffer. Our tests indicate performance gains of up to 40%.<br /></li><li class="item"><a href="http://incubator.apache.org/click/docs/click-api/net/sf/click/service/package-summary.html#services">Services</a> - Click core has been refactored into pluggable services.</li><li class="item"> Added <a class="external" target="_blank" href="http://www.freemarker.org/">Freemarker</a> support as an alternative templating engine to Velocity. See <a href="http://incubator.apache.org/click/docs/extras-api/net/sf/click/extras/service/FreemarkerTemplateService.html">FreemarkerTemplateService</a> for configuration details.</li><li class="item">Provide three logging service implementations: <a href="http://incubator.apache.org/click/docs/click-api/net/sf/click/service/ConsoleLogService.html">ConsoleLogService</a>, <a href="http://incubator.apache.org/click/docs/extras-api/net/sf/click/extras/service/JdkLogService.html">JdkLogService</a> and <a href="http://incubator.apache.org/click/docs/extras-api/net/sf/click/extras/service/Log4JLogService.html">Log4JLogService</a><br /></li><li class="item"><a href="http://incubator.apache.org/click/docs/mock-api/overview-summary.html">Mock Test Support</a> - introduces an easy to use package to write Unit and Functional Tests.</li><li class="item"><a href="http://incubator.apache.org/click/docs/click-api/net/sf/click/ControlRegistry.html">ControlRegistry</a> - enables two phase listener dispatch, which allows Controls to bind request parameters before listeners are fired.</li><li class="item">A new deployment strategy allows deployment of resources directly from jars.</li><li class="item">New <a href="http://incubator.apache.org/click/docs/click-api/net/sf/click/control/Renderable.html">Renderable</a> interface allows alternative paginator implementations for <a href="http://incubator.apache.org/click/docs/click-api/net/sf/click/control/Table.html">Table</a>. Two implementations are available with Click 1.5: <a href="http://incubator.apache.org/click/docs/click-api/net/sf/click/control/TablePaginator.html">TablePaginator</a> and <a href="http://incubator.apache.org/click/docs/extras-api/net/sf/click/extras/control/TableInlinePaginator.html">TableInlinePaginator</a>. </li><li class="item">A new <a href="http://incubator.apache.org/click/docs/click-online.html#powered">Powered by Click</a> section was added. If you would like to add your own site to this list, please drop us a mail at one of our <a target="blank" class="external" href="http://incubator.apache.org/click/docs/click-online.html#mailing-lists">Mailing Lists</a>, or directly to "sabob1<at>gmail<dot>com".</dot></at></li></ul>New documentation:<br /><ul><li class="change"> <a href="http://incubator.apache.org/click/docs/controls.html#container">Container</a> explains the new Container concept<br /></li><li class="change"> <a href="http://incubator.apache.org/click/docs/controls.html#layout">Template vs Programmatic layout</a> explains different layout strategies<br /></li><li class="change"> <a href="http://incubator.apache.org/click/docs/mock-api/overview-summary.html">Mock Test Support</a> provides overview of the new testing support in 1.5<br /></li><li><a href="http://incubator.apache.org/click/docs/configuration.html#deploying-custom-resources">Deploying custom resources</a> describes how to deploy resources such as JavaScript, CSS and images<br /></li><li><a href="http://incubator.apache.org/click/docs/configuration.html#application-multi-packages">Multiple pages packages</a> allows you to host or integrate pages from separate packages<br /></li></ul><br />New examples:<br /><ul style="padding-top: 5px;"><li> <a target="_blank" class="external" href="http://www.avoka.com/click-examples/wizard/wizard.htm"> Wizard demo</a> shows how to leverage a <a href="http://incubator.apache.org/click/docs/pages.html#page-stateful">stateful</a> page and <a href="http://incubator.apache.org/click/docs/click-api/net/sf/click/control/Panel.html">Panels</a> to create a process flow. Each Step in the process is represented by a Panel which is managed by the stateful Page. </li><li> <a target="_blank" class="external" href="http://www.avoka.com/click-examples/control/populate-on-select.htm"> Populate on select</a> shows how items in one combo box is populated based on the selected item in another using JavaScript. </li><li> <a target="_blank" class="external" href="http://www.avoka.com/click-examples/table/edit-form-table.htm"> FormTable demo</a> shows how a FormTable can be used together with an existing Form. </li><li> <a target="_blank" class="external" href="http://www.avoka.com/click-examples/tree/page-link-tree-page.htm"> Page link tree</a> provides a demonstration of using the Tree component to link to different pages.</li><li><a href="http://www.avoka.com/click-examples/table/table-paginator.htm">Table paginators</a> shows the different paginators available<br /></li><li><a target="_blank" href="http://www.avoka.com/click-examples/form/extra-controls-form.htm">Country Select field</a> allows users to pick from a list of countries<br /></li><li> <a target="_blank" href="http://www.avoka.com/click-examples/form/contact-details.htm">Custom Form Layout using Containers</a> shows how to use a Container for laying out forms<br /></li><li><a target="_blank" href="http://www.avoka.com/click-examples/form/extra-controls-form.htm">Virtual Keyboard</a> provides a graphical Vitural Keyboard text field control</li></ul>Issues resolved since RC3:<br /><ul><li class="change"> Added Dutch language support, contributed by Christopher Highway. </li><li class="change"> Improved Form to process controls even if their names is not defined. [<a target="blank" href="https://issues.apache.org/click/browse/CLK-463">463</a>]. </li><li class="change"> Fixed ContainerUtils.copyTo where the wrong getter method could be used when a domain object contains multiple overloaded getter methods. This issue was raised by Alvin Townsend [<a target="blank" href="https://issues.apache.org/click/browse/CLK-461">461</a>]. </li><li class="change"> Fixed Column internal Comparator which does not take sort order into consideration for non Comparable instances [<a target="blank" href="https://issues.apache.org/click/browse/CLK-462">462</a>]. </li><li class="change"> Fixed Panel.getId() to return null if name is not defined [<a target="blank" href="https://issues.apache.org/click/browse/CLK-464">464</a>]. </li><li class="change"> Fixed VelocityTemplateService to cater for custom defined Velocity loggers. This issue was raised by Vikram Natarajan [<a target="blank" href="https://issues.apache.org/click/browse/CLK-465">465</a>]. </li></ul><br />Enjoy Click!<br /><br />The Click team.Bob Schellinkhttp://www.blogger.com/profile/10996406110751921749noreply@blogger.com0tag:blogger.com,1999:blog-2587500056091829705.post-1747446900153886162008-10-20T12:30:00.000-07:002009-01-21T12:43:02.022-08:00Click 1.5 RC 3 is here!This marks the third (and final) release candidate as Click is rapidly progressing towards a stable 1.5.<br /><br />We urge everyone to try out RC3 and provide feedback via our<a href="http://incubator.apache.org/click/docs/click-online.html#mailing-lists"> mailing lists</a> and <a href="https://issues.apache.org/click/">issue tracker</a>.<span style="font-weight: bold;"></span><br /><ul><li><a href="http://incubator.apache.org/click/">Click Home</a></li><li><a href="http://incubator.apache.org/click/docs/roadmap-changes.html#1.5-RC3">Roadmap and Changes</a></li><li><a href="http://incubator.apache.org/click/docs/roadmap-changes.html#1.5-upgrade-path">Upgrade Path</a> - please see the upgrade path when upgrading from 1.4 or earlier.</li><li><a href="https://sourceforge.net/project/showfiles.php?group_id=82095&package_id=84113">Download Click 1.5</a></li><li><a href="http://repo1.maven.org/maven2/net/sf/click/">Maven bundles</a><br /></li><li><a href="http://www.avoka.com/click-examples/">Live examples</a></li></ul><span style="font-weight: bold;">New examples for this release:</span><br /><ul><li> <a target="_blank" class="external" href="http://www.avoka.com/click-examples/wizard/wizard.htm"> Wizard demo</a> shows how to leverage a <a href="http://incubator.apache.org/click/docs/pages.html#page-stateful">stateful</a> page and <a href="http://incubator.apache.org/click/docs/click-api/net/sf/click/control/Panel.html">Panels</a> to create a process flow. Each Step in the process is represented by a Panel which is managed by the stateful Page. </li><li> <a target="_blank" class="external" href="http://www.avoka.com/click-examples/control/populate-on-select.htm"> Populate on select</a> shows how items in one combo box is populated based on the selected item in another using JavaScript. </li><li> <a target="_blank" class="external" href="http://www.avoka.com/click-examples/table/edit-form-table.htm"> FormTable demo</a> shows how a FormTable can be used together with an existing Form. </li><li> <a target="_blank" class="external" href="http://www.avoka.com/click-examples/tree/page-link-tree-page.htm"> Page link tree</a> provides a demonstration of using the Tree component to link to different pages.</li></ul><span style="font-weight: bold;">New documentation:</span><br /><ul><li>Added a full <a href="http://incubator.apache.org/click/docs/click-dtd-example.html">configuration example</a> containing all <tt>click.xml</tt> <a href="http://incubator.apache.org/click/docs/click-dtd.html">DTD</a> elements and attributes. </li></ul><span style="font-weight: bold;">Issues resolved for RC3:</span><br /><ul><li class="change"> Added FormTable.properties containing a new property <span style="color:navy;">formtable-error</span>. When adding FormTable to an external From, the <span style="color:navy;">formtable-error</span> will be displayed if one of the FormTable fields contains an error. </li><li class="change"> Renamed ContainerUtils method getFields to getInputFields which better reflect its behavior [<a target="blank" href="https://issues.apache.org/click/browse/CLK-457">457</a>]. </li><li class="change"> Fixed TabbedForm and TabbedCayenneForm to import JavaScript and CSS from their superclass. This issue was raised by Christophe Foiret [<a target="blank" href="https://issues.apache.org/click/browse/CLK-450">450</a>]. </li><li class="change"> Fixed CayenneForm performing multiple inserts [<a target="blank" href="https://issues.apache.org/click/browse/CLK-452">452</a>]. </li><li class="change"> Fixed FormTable duplicate HTML imports [<a target="blank" href="https://issues.apache.org/click/browse/CLK-453">453</a>]. </li><li class="change"> Fixed XmlConfigService not deploying JAR resources [<a target="blank" href="https://issues.apache.org/click/browse/CLK-454">454</a>]. </li><li class="change"> Fixed Page.setRedirect to guard against duplicate context paths. This issue was raised and fixed by Ricardo Lecheta [<a target="blank" href="https://issues.apache.org/click/browse/CLK-456">456</a>]. </li><li class="change"> Fixed CountrySelect to exclude duplicate countries. This issue was raised and fixed by Christopher Highway [<a target="blank" href="https://issues.apache.org/click/browse/CLK-458">458</a>].</li></ul>Enjoy Click.<br /><br />The Click team.Bob Schellinkhttp://www.blogger.com/profile/10996406110751921749noreply@blogger.com0tag:blogger.com,1999:blog-2587500056091829705.post-21475937141284553762008-09-29T06:23:00.000-07:002009-01-21T12:43:12.422-08:00Click 1.5 Release Candidate 2 is available!RC1 introduced a severe bug which hampered Click from deploying properly. To resolve this issue we are making RC2 immediately available. <br /><br />We apologize for the inconvenience.<br /><br />Please try out RC2 and provide feedback via our<a href="http://incubator.apache.org/click/docs/click-online.html#mailing-lists"> mailing lists</a> or <a href="https://issues.apache.org/click/">issue tracker</a>.<br /><ul><li><a href="http://incubator.apache.org/click/">Click Home</a></li><li><a href="http://incubator.apache.org/click/docs/roadmap-changes.html#1.5-RC2">Roadmap and Changes</a></li><li><a href="http://incubator.apache.org/click/docs/roadmap-changes.html#1.5-upgrade-path">Upgrade Path</a> - please see the upgrade path when upgrading from 1.4 or earlier.</li><li><a href="https://sourceforge.net/project/showfiles.php?group_id=82095&package_id=84113">Download Click 1.5 RC2</a></li><li><a href="http://repo1.maven.org/maven2/net/sf/click/">Maven bundles</a><br /></li><li><a href="http://www.avoka.com/click-examples/">Live examples</a></li></ul><span style="font-weight: bold;">Issues resolved for RC2:</span><br /><ul><li class="change"> <span style="font-weight: bold;color:navy;" >Emergency Fix</span>: Click throws FileNotFoundException when deploying click-extras.jar [<a target="blank" href="https://issues.apache.org/click/browse/CLK-448">448</a>]. </li><li class="change"> Added new method <a href="http://incubator.apache.org/click/docs/click-api/net/sf/click/Page.html#removeControl%28net.sf.click.Control%29">Page.removeControl</a> which enables Click to automatically remove a Control from its parent when adding it to another Container. This issue was raised and fixed by Ricardo Lecheta [<a target="blank" href="https://issues.apache.org/click/browse/CLK-449">449</a>]. </li><li class="change"> Added utility methods <a href="http://incubator.apache.org/click/docs/click-api/net/sf/click/util/ClickUtils.html#encodeURL%28java.lang.Object%29">ClickUtils.encodeURL</a> and <a href="http://incubator.apache.org/click/docs/click-api/net/sf/click/util/ClickUtils.html#decodeURL%28java.lang.Object%29">ClickUtils.decodeURL</a> for encoding and decoding URL's using the "UTF-8" encoding scheme. </li></ul>The Click team.Bob Schellinkhttp://www.blogger.com/profile/10996406110751921749noreply@blogger.com