<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2587500056091829705</id><updated>2012-01-04T22:04:30.512-08:00</updated><category term='release 1.5'/><category term='apache'/><category term='2.1.0'/><category term='1.5'/><category term='documentation'/><category term='1.4'/><category term='1.4.2'/><category term='2.2.0'/><category term='click 2.1.0'/><category term='features'/><category term='mock'/><category term='1.4.1'/><category term='user guide'/><category term='testing'/><category term='clickide'/><category term='release'/><category term='version'/><category term='2.3.0'/><category term='stubs'/><category term='Click 2.2.0'/><category term='book'/><title type='text'>Click Framework</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://click-framework.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2587500056091829705/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://click-framework.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Malcolm Edgar</name><uri>http://www.blogger.com/profile/15663016100232653779</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>35</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2587500056091829705.post-2482477879256721975</id><published>2011-03-27T04:10:00.000-07:00</published><updated>2011-03-27T11:53:51.655-07:00</updated><title type='text'>Apache Click v2.3.0 final now available</title><content type='html'>Apache Click 2.3.0 final is available for download. v2.3.0 contains important new features including &lt;a href="http://click.apache.org/docs/user-guide/html/ch04.html"&gt;Ajax&lt;/a&gt; support, &lt;a href="http://click.apache.org/docs/user-guide/html/ch02s07.html"&gt;Page Actions&lt;/a&gt; and light-weight &lt;a href="http://click.apache.org/docs/click-api/org/apache/click/Stateful.html"&gt;stateful controls&lt;/a&gt;. In addition there are new documentation, examples and a slew of other enhancements.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://click.apache.org/"&gt;Click Home&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://click.apache.org/docs/roadmap-changes.html#2.3.0"&gt;Roadmap  and Changes&lt;/a&gt; - full list of new features, improvements and bug fixes&lt;/li&gt;&lt;li&gt;&lt;a href="http://click.apache.org/docs/upgrade-path.html#2.3.0"&gt;Upgrade  Path&lt;/a&gt; - please see the upgrade path when upgrading from 2.2.0 or  earlier.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.apache.org/dyn/closer.cgi/click/click/2.3.0/click-2.3.0.zip"&gt;Download  Click 2.3.0&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://repo1.maven.org/maven2/org/apache/click/"&gt;Maven bundles&lt;/a&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://click.avoka.com/click-examples/"&gt;Live examples&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;New features and improvement:&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://click.apache.org/docs/user-guide/html/ch04.html"&gt;Ajax&lt;/a&gt; support.&lt;/li&gt;&lt;li&gt;&lt;a href="http://click.apache.org/docs/user-guide/html/ch02s07.html"&gt;Page Action&lt;/a&gt; support.         &lt;/li&gt;&lt;li&gt;&lt;a href="http://click.apache.org/docs/click-api/org/apache/click/Stateful.html"&gt;Stateful&lt;/a&gt; Controls.&lt;/li&gt;&lt;li&gt;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              [&lt;a href="https://issues.apache.org/jira/browse/CLK-722" target="_blank"&gt;CLK-722&lt;/a&gt;].           &lt;/li&gt;&lt;li&gt;             Added automapping support for GAE with a caveat that page templates             must be placed under the folders &lt;tt&gt;page&lt;/tt&gt; or &lt;tt&gt;pages&lt;/tt&gt;.             This issue was raised by Ke Sun             [&lt;a href="https://issues.apache.org/jira/browse/CLK-639" target="_blank"&gt;CLK-639&lt;/a&gt;].           &lt;/li&gt;&lt;li&gt;             Added &lt;a href="http://click.apache.org/docs/click-api/org/apache/click/service/MessagesMapService.html"&gt;MessagesMapService&lt;/a&gt;             interface to support pluggable messages map implementations             [&lt;a href="https://issues.apache.org/jira/browse/CLK-655" target="_blank"&gt;CLK-655&lt;/a&gt;].           &lt;/li&gt;&lt;li&gt;             Improved &lt;a href="http://click.apache.org/docs/click-api/org/apache/click/util/MessagesMap.html"&gt;MessagesMap&lt;/a&gt;             to be extendable and customizable             [&lt;a href="https://issues.apache.org/jira/browse/CLK-728" target="_blank"&gt;CLK-728&lt;/a&gt;].           &lt;/li&gt;&lt;li&gt;             Added support for loading &lt;a href="http://click.apache.org/docs/extras-api/org/apache/click/extras/control/DateField.html"&gt;DateField&lt;/a&gt;             translations for month and day names from the JDK.             [&lt;a href="https://issues.apache.org/jira/browse/CLK-650" target="_blank"&gt;CLK-650&lt;/a&gt;].           &lt;/li&gt;&lt;li&gt;               Added support for Menus that do not have &lt;tt&gt;roles&lt;/tt&gt; defined.               If no roles are defined,               &lt;a href="http://click.apache.org/docs/extras-api/org/apache/click/extras/control/Menu.html#isUserInRoles%28%29"&gt;IsUserInRoles&lt;/a&gt;               passes a &lt;tt&gt;null&lt;/tt&gt; argument to               &lt;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"&gt;hasAccess&lt;/a&gt;               to determine whether access is permitted to menus without roles               [&lt;a href="https://issues.apache.org/jira/browse/CLK-724" target="_blank"&gt;CLK-724&lt;/a&gt;].&amp;nbsp;&lt;/li&gt;&lt;li&gt;&amp;nbsp;               Added support for multiple TabbedPanels on a page. To programmatically               activate a specific TabbedPanel use the &lt;tt&gt;tabPanelIndex-&lt;panel-name&gt;&lt;/panel-name&gt;&lt;/tt&gt;               request parameter, for example &lt;tt&gt;tabPanelIndex-myTabbedPanel&lt;/tt&gt;               [&lt;a href="https://issues.apache.org/jira/browse/CLK-753" target="_blank"&gt;CLK-753&lt;/a&gt;].           &lt;/li&gt;&lt;/ul&gt;&lt;b&gt;New documentation:&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Added a section covering the new           &lt;a href="http://click.apache.org/docs/user-guide/html/ch03s08.html"&gt;Behavior&lt;/a&gt; support.&lt;/li&gt;&lt;li&gt;Added a chapter on &lt;a href="http://click.apache.org/docs/user-guide/html/ch04.html"&gt;Ajax&lt;/a&gt;,           covering &lt;a href="http://click.apache.org/docs/user-guide/html/ch04s02.html"&gt;AjaxBehaviors&lt;/a&gt;,           &lt;a href="http://click.apache.org/docs/user-guide/html/ch04s03.html"&gt;Ajax execution flow&lt;/a&gt;           and a full &lt;a href="http://click.apache.org/docs/user-guide/html/ch04s04.html"&gt;example&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Added a section covering the new           &lt;a href="http://click.apache.org/docs/user-guide/html/ch02s07.html"&gt;Page Action&lt;/a&gt; support.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;New examples:&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Added &lt;a class="external" href="http://click.avoka.com/click-examples/" target="_blank"&gt;examples&lt;/a&gt;           showcasing the new Ajax support. See the Ajax Menu for the full list           of examples.&lt;/li&gt;&lt;li&gt;Added an example showing how to integrate a &lt;a class="external" href="http://click.avoka.com/click-examples/panel/tabbed-panel-with-controls.htm" target="_blank"&gt;TabbedPanel, Form and Table&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Added an example showing a &lt;a class="external" href="http://click.avoka.com/click-examples/panel/stateful-tabbed-panel-demo.htm" target="_blank"&gt;Stateful TabbedPanel&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Added an example &lt;a href="http://click.avoka.com/click-examples/control/field-separator-demo.htm" target="_blank"&gt;FieldSeparator Control&lt;/a&gt; and example usage page           [&lt;a href="https://issues.apache.org/jira/browse/CLK-544" target="_blank"&gt;CLK-544&lt;/a&gt;].&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Removed:&lt;/b&gt; &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Removed the ability to automatically &lt;tt&gt;bypass validation&lt;/tt&gt;   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           &lt;a href="http://click.apache.org/docs/upgrade-path.html#removed-bypass-validation"&gt;Upgrade path&lt;/a&gt;           for a safe alternative to &lt;tt&gt;bypass validation&lt;/tt&gt;. We apologize for           the inconvenience. &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;Deprecated:&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Deprecated stateful page support: &lt;a href="http://click.apache.org/docs/click-api/org/apache/click/Page.html#setStateful%28boolean%29"&gt;Page.setStateful()&lt;/a&gt;.           &lt;/li&gt;&lt;li class="change"&gt;           Stateful pages had the following issues:           &lt;br /&gt;&lt;ul&gt;&lt;li&gt;             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.             &lt;/li&gt;&lt;li&gt;             In addition stateful page support has never been   implemented consistently             across the framework and some   components did not work correctly.             &lt;/li&gt;&lt;li&gt;             Stateful pages are very coarse grained, making it   difficult to control             which objects are stored in the   session.             &lt;/li&gt;&lt;li&gt;             Stateful pages have also introduced unnecessary   complexity in the framework             itself, which can now be phased   out.             &lt;/li&gt;&lt;/ul&gt;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.         &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;The Apache Click team&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2587500056091829705-2482477879256721975?l=click-framework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://click-framework.blogspot.com/feeds/2482477879256721975/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2587500056091829705&amp;postID=2482477879256721975' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2587500056091829705/posts/default/2482477879256721975'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2587500056091829705/posts/default/2482477879256721975'/><link rel='alternate' type='text/html' href='http://click-framework.blogspot.com/2011/03/apache-click-v230-final-now-available.html' title='Apache Click v2.3.0 final now available'/><author><name>Bob Schellink</name><uri>http://www.blogger.com/profile/10996406110751921749</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp1.blogger.com/_Ijl8pg_nh3E/SIMk9Q4_D4I/AAAAAAAAAAk/gNfr_SDEGL8/S220/sabob200-200.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2587500056091829705.post-2639605701122588533</id><published>2011-01-24T02:32:00.000-08:00</published><updated>2011-01-29T17:55:26.764-08:00</updated><title type='text'>Apache Click v2.3.0 Release Candidate 1 now available</title><content type='html'>Apache Click 2.3.0 Release Candidate 1&amp;nbsp; is available for download. v2.3.0 contains important new features including &lt;a href="http://click.apache.org/docs/user-guide/html/ch04.html"&gt;Ajax&lt;/a&gt; support, &lt;a href="http://click.apache.org/docs/user-guide/html/ch02s07.html"&gt;Page Actions&lt;/a&gt; and light-weight &lt;a href="http://click.apache.org/docs/click-api/org/apache/click/Stateful.html"&gt;stateful controls&lt;/a&gt;. In addition there are new documentation, examples and a slew other enhancements.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://click.apache.org/"&gt;Click Home&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://click.apache.org/docs/roadmap-changes.html#2.3.0"&gt;Roadmap  and Changes&lt;/a&gt; - full list of new features, improvements and bug fixes&lt;/li&gt;&lt;li&gt;&lt;a href="http://click.apache.org/docs/upgrade-path.html#2.3.0"&gt;Upgrade  Path&lt;/a&gt; - please see the upgrade path when upgrading from 2.2.0 or  earlier.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.apache.org/dyn/closer.cgi/click/click/2.3.0-RC1/click-2.3.0-RC1.zip"&gt;Download  Click 2.3.0-RC1&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://repo1.maven.org/maven2/org/apache/click/"&gt;Maven bundles&lt;/a&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://click.avoka.com/click-examples/"&gt;Live examples&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;New features and improvement:&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://click.apache.org/docs/user-guide/html/ch04.html"&gt;Ajax&lt;/a&gt; support.&lt;/li&gt;&lt;li&gt;&lt;a href="http://click.apache.org/docs/user-guide/html/ch02s07.html"&gt;Page Action&lt;/a&gt; support.         &lt;/li&gt;&lt;li&gt;&lt;a href="http://click.apache.org/docs/click-api/org/apache/click/Stateful.html"&gt;Stateful&lt;/a&gt; Controls.&lt;/li&gt;&lt;li&gt;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              [&lt;a href="https://issues.apache.org/jira/browse/CLK-722" target="_blank"&gt;CLK-722&lt;/a&gt;].           &lt;/li&gt;&lt;li&gt;             Added automapping support for GAE with a caveat that page templates             must be placed under the folders &lt;tt&gt;page&lt;/tt&gt; or &lt;tt&gt;pages&lt;/tt&gt;.             This issue was raised by Ke Sun             [&lt;a href="https://issues.apache.org/jira/browse/CLK-639" target="_blank"&gt;CLK-639&lt;/a&gt;].           &lt;/li&gt;&lt;li&gt;             Added &lt;a href="http://click.apache.org/docs/click-api/org/apache/click/service/MessagesMapService.html"&gt;MessagesMapService&lt;/a&gt;             interface to support pluggable messages map implementations             [&lt;a href="https://issues.apache.org/jira/browse/CLK-655" target="_blank"&gt;CLK-655&lt;/a&gt;].           &lt;/li&gt;&lt;li&gt;             Improved &lt;a href="http://click.apache.org/docs/click-api/org/apache/click/util/MessagesMap.html"&gt;MessagesMap&lt;/a&gt;             to be extendable and customizable             [&lt;a href="https://issues.apache.org/jira/browse/CLK-728" target="_blank"&gt;CLK-728&lt;/a&gt;].           &lt;/li&gt;&lt;li&gt;             Added support for loading &lt;a href="http://click.apache.org/docs/extras-api/org/apache/click/extras/control/DateField.html"&gt;DateField&lt;/a&gt;             translations for month and day names from the JDK.             [&lt;a href="https://issues.apache.org/jira/browse/CLK-650" target="_blank"&gt;CLK-650&lt;/a&gt;].           &lt;/li&gt;&lt;li&gt;               Added support for Menus that do not have &lt;tt&gt;roles&lt;/tt&gt; defined.               If no roles are defined,               &lt;a href="http://click.apache.org/docs/extras-api/org/apache/click/extras/control/Menu.html#isUserInRoles%28%29"&gt;IsUserInRoles&lt;/a&gt;               passes a &lt;tt&gt;null&lt;/tt&gt; argument to               &lt;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"&gt;hasAccess&lt;/a&gt;               to determine whether access is permitted to menus without roles               [&lt;a href="https://issues.apache.org/jira/browse/CLK-724" target="_blank"&gt;CLK-724&lt;/a&gt;].           &lt;/li&gt;&lt;li&gt;&amp;nbsp;Added support for absolute page classnames when configuring pages               in &lt;tt&gt;click.xml&lt;/tt&gt;. Absolute classnames aids with IDE hot-linking               and is less confusing to use.               [&lt;a href="https://issues.apache.org/jira/browse/CLK-704" target="_blank"&gt;CLK-704&lt;/a&gt;].&amp;nbsp;&lt;/li&gt;&lt;li&gt;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: &amp;lt;, &amp;gt;, ", ', &amp;amp;               [&lt;a href="https://issues.apache.org/jira/browse/CLK-674" target="_blank"&gt;CLK-674&lt;/a&gt;].&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;New documentation:&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Added a section covering the new           &lt;a href="http://click.apache.org/docs/user-guide/html/ch03s08.html"&gt;Behavior&lt;/a&gt; support.&lt;/li&gt;&lt;li&gt;Added a chapter on &lt;a href="http://click.apache.org/docs/user-guide/html/ch04.html"&gt;Ajax&lt;/a&gt;,           covering &lt;a href="http://click.apache.org/docs/user-guide/html/ch04s02.html"&gt;AjaxBehaviors&lt;/a&gt;,           &lt;a href="http://click.apache.org/docs/user-guide/html/ch04s03.html"&gt;Ajax execution flow&lt;/a&gt;           and a full &lt;a href="http://click.apache.org/docs/user-guide/html/ch04s04.html"&gt;example&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Added a section covering the new           &lt;a href="http://click.apache.org/docs/user-guide/html/ch02s07.html"&gt;Page Action&lt;/a&gt; support.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;New examples:&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Added &lt;a class="external" href="http://click.avoka.com/click-examples/" target="_blank"&gt;examples&lt;/a&gt;           showcasing the new Ajax support. See the Ajax Menu for the full list           of examples.&lt;/li&gt;&lt;li&gt;Added an example showing how to integrate a &lt;a class="external" href="http://click.avoka.com/click-examples/panel/tabbed-panel-with-controls.htm" target="_blank"&gt;TabbedPanel, Form and Table&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Added an example showing a &lt;a class="external" href="http://click.avoka.com/click-examples/panel/stateful-tabbed-panel-demo.htm" target="_blank"&gt;Stateful TabbedPanel&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Added an example &lt;a href="http://click.avoka.com/click-examples/control/field-separator-demo.htm" target="_blank"&gt;FieldSeparator Control&lt;/a&gt; and example usage page           [&lt;a href="https://issues.apache.org/jira/browse/CLK-544" target="_blank"&gt;CLK-544&lt;/a&gt;].&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Removed:&lt;/b&gt; &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Removed the ability to automatically &lt;tt&gt;bypass validation&lt;/tt&gt;  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           &lt;a href="http://click.apache.org/docs/upgrade-path.html#removed-bypass-validation"&gt;Upgrade path&lt;/a&gt;           for a safe alternative to &lt;tt&gt;bypass validation&lt;/tt&gt;. We apologize for           the inconvenience. &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;Deprecated:&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Deprecated stateful page support: &lt;a href="http://click.apache.org/docs/click-api/org/apache/click/Page.html#setStateful%28boolean%29"&gt;Page.setStateful()&lt;/a&gt;.           &lt;/li&gt;&lt;li class="change"&gt;           Stateful pages had the following issues:           &lt;br /&gt;&lt;ul&gt;&lt;li&gt;             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.             &lt;/li&gt;&lt;li&gt;             In addition stateful page support has never been  implemented consistently             across the framework and some  components did not work correctly.             &lt;/li&gt;&lt;li&gt;             Stateful pages are very coarse grained, making it  difficult to control             which objects are stored in the  session.             &lt;/li&gt;&lt;li&gt;             Stateful pages have also introduced unnecessary  complexity in the framework             itself, which can now be phased  out.             &lt;/li&gt;&lt;/ul&gt;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.         &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;The Apache Click team&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2587500056091829705-2639605701122588533?l=click-framework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://click-framework.blogspot.com/feeds/2639605701122588533/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2587500056091829705&amp;postID=2639605701122588533' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2587500056091829705/posts/default/2639605701122588533'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2587500056091829705/posts/default/2639605701122588533'/><link rel='alternate' type='text/html' href='http://click-framework.blogspot.com/2011/01/apache-click-v230-release-candidate-1.html' title='Apache Click v2.3.0 Release Candidate 1 now available'/><author><name>Bob Schellink</name><uri>http://www.blogger.com/profile/10996406110751921749</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp1.blogger.com/_Ijl8pg_nh3E/SIMk9Q4_D4I/AAAAAAAAAAk/gNfr_SDEGL8/S220/sabob200-200.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2587500056091829705.post-4633785392561997043</id><published>2010-11-28T16:49:00.000-08:00</published><updated>2010-11-28T17:13:29.600-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='release'/><category scheme='http://www.blogger.com/atom/ns#' term='2.3.0'/><title type='text'>Apache Click v2.3.0 Milestone 1 now available</title><content type='html'>Click 2.3.0 Milestone 1&amp;nbsp; is available for download.  This milestone contains important new features including &lt;a href="http://click.apache.org/docs/user-guide/html/ch04.html"&gt;Ajax&lt;/a&gt; support, &lt;a href="http://click.apache.org/docs/user-guide/html/ch02s07.html"&gt;Page Actions&lt;/a&gt; and light-weight &lt;a href="http://click.apache.org/docs/click-api/org/apache/click/Stateful.html"&gt;stateful controls&lt;/a&gt;. In addition there are new documentation, examples and other minor enhancements.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://click.apache.org/"&gt;Click Home&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://click.apache.org/docs/roadmap-changes.html#2.3.0"&gt;Roadmap  and Changes&lt;/a&gt; - full list of new features, improvements and bug fixes&lt;/li&gt;&lt;li&gt;&lt;a href="http://click.apache.org/docs/upgrade-path.html#2.3.0"&gt;Upgrade  Path&lt;/a&gt; - please see the upgrade path when upgrading from 2.2.0 or  earlier.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.apache.org/dyn/closer.cgi/click/click/2.3.0-M1/click-2.3.0-M1.zip"&gt;Download  Click 2.3.0-M1&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://repo1.maven.org/maven2/org/apache/click/"&gt;Maven bundles&lt;/a&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://click.avoka.com/click-examples/"&gt;Live examples&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;New features and improvement:&lt;/b&gt;&lt;br /&gt;&lt;div style="margin-bottom: 1em; margin-left: -2em; margin-top: 1.5em;"&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://click.apache.org/docs/user-guide/html/ch04.html"&gt;Ajax&lt;/a&gt; support.&lt;/li&gt;&lt;li&gt;&lt;a href="http://click.apache.org/docs/user-guide/html/ch02s07.html"&gt;Page Action&lt;/a&gt; support.         &lt;/li&gt;&lt;li&gt;&lt;a href="http://click.apache.org/docs/click-api/org/apache/click/Stateful.html"&gt;Stateful&lt;/a&gt; Controls.&lt;/li&gt;&lt;li&gt;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             [&lt;a href="https://issues.apache.org/jira/browse/CLK-722" target="_blank"&gt;CLK-722&lt;/a&gt;].           &lt;/li&gt;&lt;li&gt;             Added automapping support for GAE with a caveat that page templates             must be placed under the folders &lt;tt&gt;page&lt;/tt&gt; or &lt;tt&gt;pages&lt;/tt&gt;.             This issue was raised by Ke Sun             [&lt;a href="https://issues.apache.org/jira/browse/CLK-639" target="_blank"&gt;CLK-639&lt;/a&gt;].           &lt;/li&gt;&lt;li&gt;             Added &lt;a href="http://click.apache.org/docs/click-api/org/apache/click/service/MessagesMapService.html"&gt;MessagesMapService&lt;/a&gt;             interface to support pluggable messages map implementations             [&lt;a href="https://issues.apache.org/jira/browse/CLK-655" target="_blank"&gt;CLK-655&lt;/a&gt;].           &lt;/li&gt;&lt;li&gt;             Improved &lt;a href="http://click.apache.org/docs/click-api/org/apache/click/util/MessagesMap.html"&gt;MessagesMap&lt;/a&gt;             to be extendable and customizable             [&lt;a href="https://issues.apache.org/jira/browse/CLK-728" target="_blank"&gt;CLK-728&lt;/a&gt;].           &lt;/li&gt;&lt;li&gt;             Added support for loading &lt;a href="http://click.apache.org/docs/extras-api/org/apache/click/extras/control/DateField.html"&gt;DateField&lt;/a&gt;             translations for month and day names from the JDK.             [&lt;a href="https://issues.apache.org/jira/browse/CLK-650" target="_blank"&gt;CLK-650&lt;/a&gt;].           &lt;/li&gt;&lt;li&gt;               Added support for Menus that do not have &lt;tt&gt;roles&lt;/tt&gt; defined.               If no roles are defined,               &lt;a href="http://click.apache.org/docs/extras-api/org/apache/click/extras/control/Menu.html#isUserInRoles%28%29"&gt;IsUserInRoles&lt;/a&gt;               passes a &lt;tt&gt;null&lt;/tt&gt; argument to               &lt;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"&gt;hasAccess&lt;/a&gt;               to determine whether access is permitted to menus without roles               [&lt;a href="https://issues.apache.org/jira/browse/CLK-724" target="_blank"&gt;CLK-724&lt;/a&gt;].           &lt;/li&gt;&lt;li&gt;&amp;nbsp;Added support for absolute page classnames when configuring pages               in &lt;tt&gt;click.xml&lt;/tt&gt;. Absolute classnames aids with IDE hot-linking               and is less confusing to use.               [&lt;a href="https://issues.apache.org/jira/browse/CLK-704" target="_blank"&gt;CLK-704&lt;/a&gt;].&amp;nbsp;&lt;/li&gt;&lt;li&gt;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: &amp;lt;, &amp;gt;, ", ', &amp;amp;               [&lt;a href="https://issues.apache.org/jira/browse/CLK-674" target="_blank"&gt;CLK-674&lt;/a&gt;].&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;New documentation:&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Added a section covering the new           &lt;a href="http://click.apache.org/docs/user-guide/html/ch03s08.html"&gt;Behavior&lt;/a&gt; support.&lt;/li&gt;&lt;li&gt;Added a chapter on &lt;a href="http://click.apache.org/docs/user-guide/html/ch04.html"&gt;Ajax&lt;/a&gt;,           covering &lt;a href="http://click.apache.org/docs/user-guide/html/ch04s02.html"&gt;AjaxBehaviors&lt;/a&gt;,           &lt;a href="http://click.apache.org/docs/user-guide/html/ch04s03.html"&gt;Ajax execution flow&lt;/a&gt;           and a full &lt;a href="http://click.apache.org/docs/user-guide/html/ch04s04.html"&gt;example&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Added a section covering the new           &lt;a href="http://click.apache.org/docs/user-guide/html/ch02s07.html"&gt;Page Action&lt;/a&gt; support.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;New examples:&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Added &lt;a class="external" href="http://click.avoka.com/click-examples/" target="_blank"&gt;examples&lt;/a&gt;           showcasing the new Ajax support. See the Ajax Menu for the full list           of examples.&lt;/li&gt;&lt;li&gt;Added an example showing how to integrate a &lt;a class="external" href="http://click.avoka.com/click-examples/panel/tabbed-panel-with-controls.htm" target="_blank"&gt;TabbedPanel, Form and Table&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Added an example showing a &lt;a class="external" href="http://click.avoka.com/click-examples/panel/stateful-tabbed-panel-demo.htm" target="_blank"&gt;Stateful TabbedPanel&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Added an example &lt;a href="http://click.avoka.com/click-examples/control/field-separator-demo.htm" target="_blank"&gt;FieldSeparator Control&lt;/a&gt; and example usage page           [&lt;a href="https://issues.apache.org/jira/browse/CLK-544" target="_blank"&gt;CLK-544&lt;/a&gt;].&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;Removed:&lt;/b&gt; &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Removed the ability to automatically &lt;tt&gt;bypass validation&lt;/tt&gt; 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           &lt;a href="http://click.apache.org/docs/upgrade-path.html#removed-bypass-validation"&gt;Upgrade path&lt;/a&gt;           for a safe alternative to &lt;tt&gt;bypass validation&lt;/tt&gt;. We apologize for           the inconvenience. &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;Deprecated:&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Deprecated stateful page support: &lt;a href="http://click.apache.org/docs/click-api/org/apache/click/Page.html#setStateful%28boolean%29"&gt;Page.setStateful()&lt;/a&gt;.           &lt;/li&gt;&lt;li class="change"&gt;           Stateful pages had the following issues:           &lt;br /&gt;&lt;ul&gt;&lt;li&gt;             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.             &lt;/li&gt;&lt;li&gt;             In addition stateful page support has never been implemented consistently             across the framework and some components did not work correctly.             &lt;/li&gt;&lt;li&gt;             Stateful pages are very coarse grained, making it difficult to control             which objects are stored in the session.             &lt;/li&gt;&lt;li&gt;             Stateful pages have also introduced unnecessary complexity in the framework             itself, which can now be phased out.             &lt;/li&gt;&lt;/ul&gt;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.         &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;The Apache Click team                  &lt;br /&gt;&lt;ul&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2587500056091829705-4633785392561997043?l=click-framework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://click-framework.blogspot.com/feeds/4633785392561997043/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2587500056091829705&amp;postID=4633785392561997043' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2587500056091829705/posts/default/4633785392561997043'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2587500056091829705/posts/default/4633785392561997043'/><link rel='alternate' type='text/html' href='http://click-framework.blogspot.com/2010/11/apache-click-v230-milestone-1-now.html' title='Apache Click v2.3.0 Milestone 1 now available'/><author><name>Bob Schellink</name><uri>http://www.blogger.com/profile/10996406110751921749</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp1.blogger.com/_Ijl8pg_nh3E/SIMk9Q4_D4I/AAAAAAAAAAk/gNfr_SDEGL8/S220/sabob200-200.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2587500056091829705.post-8080553213698603118</id><published>2010-09-14T04:02:00.000-07:00</published><updated>2010-11-23T01:21:17.692-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Click 2.2.0'/><category scheme='http://www.blogger.com/atom/ns#' term='features'/><title type='text'>Apache Click 2.2.0: Dynamic Form Validation</title><content type='html'>In this three part series I'll blog about some of the new features added in 2.2.0, namely:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://click-framework.blogspot.com/2010/07/apache-click-220-dataprovider.html"&gt;DataProviders&lt;/a&gt; (&lt;a href="http://d.hatena.ne.jp/takezoe/20100917#p1"&gt;Japanese version&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;a href="http://click-framework.blogspot.com/2010/09/apache-click-220-explicit-binding.html"&gt;Explicit binding&lt;/a&gt; (&lt;a href="http://d.hatena.ne.jp/takezoe/20100918#p1"&gt;Japanese version&lt;/a&gt;)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://click-framework.blogspot.com/2010/09/apache-click-220-dynamic-form.html"&gt;Dynamic Form Validation&lt;/a&gt; ( &lt;a href="http://d.hatena.ne.jp/takezoe/20100921#p1"&gt;Japanese version&lt;/a&gt;)&lt;/li&gt;&lt;/ol&gt;&lt;ul&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;Ideally form validation should &lt;tt&gt;not&lt;/tt&gt; 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.&lt;br /&gt;&lt;br /&gt;Let's look at a simple example. Below we have a page with a required &lt;i&gt;name&lt;/i&gt; field and a checkbox that indicates whether the user is &lt;i&gt;married&lt;/i&gt; or not. If the married checkbox is checked, a field is displayed for capturing the &lt;i&gt;spouse's&lt;/i&gt; name. The spouse's name field is also required.&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: java; highlight: [19]" title="ValidationDemo.java"&gt;public class ValidationDemo extends BorderPage {&lt;br /&gt;&lt;br /&gt;    Form form = new Form("form");&lt;br /&gt;&lt;br /&gt;    // The submit button is used to submit the completed form. Note, do not&lt;br /&gt;    // name the Submit button "submit". That will cause a JavaScript error when&lt;br /&gt;// the button is clicked.&lt;br /&gt;    Submit ok = new Submit("ok");&lt;br /&gt;&lt;br /&gt;    @Override&lt;br /&gt;    public void onInit() {&lt;br /&gt;        super.onInit();&lt;br /&gt;        form.add(new TextField("fullName", true));&lt;br /&gt;        addControl(form);&lt;br /&gt;        Checkbox married = new Checkbox("married", "Married?");&lt;br /&gt;&lt;br /&gt;        // We use JavaScrcipt to submit the "incomplete" form when the user&lt;br /&gt;        // clicks the checkbox.&lt;br /&gt;        married.setAttribute("onclick", "form.submit();");&lt;br /&gt;        form.add(married);&lt;br /&gt;&lt;br /&gt;        form.add(ok);&lt;br /&gt;&lt;br /&gt;        // Explicitly bind the checkbox&lt;br /&gt;        ClickUtils.bind(married);&lt;br /&gt;        if (married.isChecked()) {&lt;br /&gt;            form.add(new TextField("spouseName", true));&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;Note the highlighted line above. We are using JavaScript to submit the form when the &lt;i&gt;married &lt;/i&gt;checkbox is checked. &lt;br /&gt;&lt;br /&gt;Here is a screenshot of the page:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;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;"&gt;&lt;img border="0" height="125" src="http://3.bp.blogspot.com/_Ijl8pg_nh3E/TIrhZdSVl_I/AAAAAAAAAE8/izC3vU1Y8zg/s200/validation-demo.png" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;When the checkbox is checked, the form is submitted and the spouse field is added. Next the form is validated and the &lt;i&gt;required name&lt;/i&gt; and &lt;i&gt;spouse&lt;/i&gt; error messages is displayed, as seen in the screenshot below:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;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;"&gt;&lt;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" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;We don't want to show the validation messages yet. Particularly problematic is the error message for the &lt;i&gt;Spouse Name&lt;/i&gt; field since the user has not seen this field until now.&lt;br /&gt;&lt;br /&gt;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:&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: java; highlight: [6,7,8]" title="ValidationDemo.java"&gt;...&lt;br /&gt;&lt;br /&gt;@Override&lt;br /&gt;public void onPost() {&lt;br /&gt;    // Clear form errors if the "ok" submit button was not clicked&lt;br /&gt;    if (!ok.isClicked()) {&lt;br /&gt;        form.clearErrors();&lt;br /&gt;    }&lt;br /&gt;} &lt;/pre&gt;&lt;br /&gt;This produces the screenshot below:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;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;"&gt;&lt;img border="0" height="134" src="http://2.bp.blogspot.com/_Ijl8pg_nh3E/TIrfPC3pQgI/AAAAAAAAAEs/F62mi44PPf8/s200/validation-showing-clear-errors.png" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;This looks better. The &lt;i&gt;Spouse Name&lt;/i&gt; has been added and no error messages are shown.&lt;br /&gt;&lt;br /&gt;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?&lt;br /&gt;&lt;br /&gt;Indeed there is. By leveraging &lt;a href="http://click-framework.blogspot.com/2010/09/apache-click-220-explicit-binding.html"&gt;Explicit binding&lt;/a&gt;, one can conditionally switch off form and field validation as follows: &lt;br /&gt;&lt;br /&gt;&lt;pre class="prettyprint"&gt;&lt;span class="com"&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="prettyprint"&gt;&lt;span class="com"&gt;&lt;/span&gt;&lt;span class="kwd"&gt;if&lt;/span&gt;&lt;span class="pun"&gt;(&lt;/span&gt;&lt;span class="pun"&gt;!&lt;/span&gt;&lt;span class="pln"&gt;submit&lt;/span&gt;&lt;span class="pun"&gt;.&lt;/span&gt;&lt;span class="pln"&gt;isClicked&lt;/span&gt;&lt;span class="pun"&gt;())&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="pun"&gt;{&lt;/span&gt;&lt;span class="pln"&gt;&amp;nbsp;&lt;br /&gt;    form&lt;/span&gt;&lt;span class="pun"&gt;.&lt;/span&gt;&lt;span class="pln"&gt;setValidate&lt;/span&gt;&lt;span class="pun"&gt;(&lt;/span&gt;&lt;span class="kwd"&gt;false&lt;/span&gt;&lt;span class="pun"&gt;);&lt;/span&gt;&lt;span class="pln"&gt;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span class="pun"&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;Let's revisit our earlier example and update it to use conditional validation:&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: java; highlight: [26,29,30,31]" title="ValidationDemo.java"&gt;public class ValidationDemo extends BorderPage {&lt;br /&gt;&lt;br /&gt;    Form form = new Form("form");&lt;br /&gt;&lt;br /&gt;    // The submit button is used to submit the completed form. Note, do not&lt;br /&gt;    // name the Submit button "submit". That will cause a JavaScript error when&lt;br /&gt;// the button is clicked.&lt;br /&gt;    Submit ok = new Submit("ok");&lt;br /&gt;&lt;br /&gt;    @Override&lt;br /&gt;    public void onInit() {&lt;br /&gt;        super.onInit();&lt;br /&gt;        form.add(new TextField("fullName", true));&lt;br /&gt;        addControl(form);&lt;br /&gt;        Checkbox married = new Checkbox("married", "Married?");&lt;br /&gt;&lt;br /&gt;        // We use JavaScript to submit the "incomplete" form when the user&lt;br /&gt;        // clicks the checkbox.&lt;br /&gt;        married.setAttribute("onclick", "form.submit();");&lt;br /&gt;        form.add(married);&lt;br /&gt;&lt;br /&gt;        form.add(ok);&lt;br /&gt;&lt;br /&gt;        // Bind the submit button. If it wasn't clicked it means the Form was&lt;br /&gt;        // submitted using JavaScript and we don't want to validate yet&lt;br /&gt;        ClickUtils.bind(submit);&lt;br /&gt;&lt;br /&gt;        // If the Form was submitted but the submit was not clicked, don't validate&lt;br /&gt;        if(form.isFormSubmission() &amp;amp;&amp;amp; !submit.isClicked()) {&lt;br /&gt;            form.setValidate(false);&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        if (married.isChecked()) {&lt;br /&gt;            form.add(new TextField("spouseName", true));&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;The screenshot below shows the form after checking the checkbox:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;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;"&gt;&lt;img border="0" height="134" src="http://1.bp.blogspot.com/_Ijl8pg_nh3E/TIrfdyXBpfI/AAAAAAAAAE0/Zoohxz30wg8/s200/validation-bypassed.png" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;As you can see, no errors are displayed since the form was not validated.&lt;br /&gt;&lt;br /&gt;Conditional form validation together with explicit binding provides a good combination for adding dynamic behavior to your Click pages and forms.&lt;br /&gt;&lt;br /&gt;This concludes the three part series covering the new features of Click 2.2.0.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2587500056091829705-8080553213698603118?l=click-framework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://click-framework.blogspot.com/feeds/8080553213698603118/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2587500056091829705&amp;postID=8080553213698603118' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2587500056091829705/posts/default/8080553213698603118'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2587500056091829705/posts/default/8080553213698603118'/><link rel='alternate' type='text/html' href='http://click-framework.blogspot.com/2010/09/apache-click-220-dynamic-form.html' title='Apache Click 2.2.0: Dynamic Form Validation'/><author><name>Bob Schellink</name><uri>http://www.blogger.com/profile/10996406110751921749</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp1.blogger.com/_Ijl8pg_nh3E/SIMk9Q4_D4I/AAAAAAAAAAk/gNfr_SDEGL8/S220/sabob200-200.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_Ijl8pg_nh3E/TIrhZdSVl_I/AAAAAAAAAE8/izC3vU1Y8zg/s72-c/validation-demo.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2587500056091829705.post-9203801636604458882</id><published>2010-09-14T03:42:00.000-07:00</published><updated>2010-09-22T21:10:37.475-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Click 2.2.0'/><category scheme='http://www.blogger.com/atom/ns#' term='features'/><title type='text'>Apache Click 2.2.0: Explicit Binding</title><content type='html'>In this three part series I'll blog about some of the new features added in 2.2.0, namely:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://click-framework.blogspot.com/2010/07/apache-click-220-dataprovider.html"&gt;DataProviders&lt;/a&gt; (&lt;a href="http://d.hatena.ne.jp/takezoe/20100917#p1"&gt;Japanese version&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;a href="http://click-framework.blogspot.com/2010/09/apache-click-220-explicit-binding.html"&gt;Explicit binding&lt;/a&gt; (&lt;a href="http://d.hatena.ne.jp/takezoe/20100918#p1"&gt;Japanese version&lt;/a&gt;)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://click-framework.blogspot.com/2010/09/apache-click-220-dynamic-form.html"&gt;Dynamic Form Validation&lt;/a&gt; ( &lt;a href="http://d.hatena.ne.jp/takezoe/20100921#p1"&gt;Japanese version&lt;/a&gt;)&lt;/li&gt;&lt;/ol&gt;&lt;ul&gt;&lt;/ul&gt;&lt;br /&gt;In this second installment I'll cover &lt;tt&gt;explicit binding&lt;/tt&gt; 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 &lt;tt&gt;Field&lt;/tt&gt;, &lt;tt&gt;Form&lt;/tt&gt; and &lt;tt&gt;Abstractlink&lt;/tt&gt;. 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.&lt;br /&gt;&lt;br /&gt;When talking about &lt;tt&gt;explicit binding&lt;/tt&gt; it is also worth mentioning &lt;tt&gt;implicit binding&lt;/tt&gt;.&lt;br /&gt;Implicit binding occurs &lt;tt&gt;automatically&lt;/tt&gt; every request as part of the &lt;tt&gt;onProcess&lt;/tt&gt; 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 &lt;tt&gt;bindRequestValue()&lt;/tt&gt;.&lt;br /&gt;&lt;br /&gt;A typical bindRequestValue() implementation looks like this:&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: java; highlight: [3,4,5,6,7]" title="BindRequestValue.java"&gt;public void bindRequestValue() {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Context context = getContext();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;String controlName = getName();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;String value = context.getRequestParameter(controlName);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if(value != null) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;setValue(value);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// For completeness sake we show the onProcess implementation as well.&lt;br /&gt;// onProcess delegates the binding logic to bindRequestValue&lt;br /&gt;public void onProcess() {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;bindRequestValue();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;...&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Generally the control name is used to lookup the incoming request parameter, but&lt;br /&gt;other conventions can be used as well.&lt;br /&gt;&lt;br /&gt;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()&lt;br /&gt;event, you might want to check which drop-down value a user selected in order to&lt;br /&gt;add another Field to the Form. Remember, only Controls that are created and&lt;br /&gt;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 &lt;b&gt;prior&lt;/b&gt; to the onProcess event.&lt;br /&gt;&lt;br /&gt;As you probably know already, the onInit event occurs before onProcess, and because implicit binding only occurs during onProcess, the Control value is &lt;tt&gt;not&lt;/tt&gt; available for querying from onInit.&lt;br /&gt;&lt;br /&gt;So how can you find out the value of a Control during the onInit event? This is&lt;br /&gt;where explicit binding comes into play. Explicit binding allows developers to&lt;br /&gt;dictate when the Control value is bound. So how can one explicitly bind the Control value?&lt;br /&gt;By invoking the Control method, &lt;tt&gt;bindRequestValue()&lt;/tt&gt;. (Recall that not all Controls&lt;br /&gt;support binding and might not provide a bindRequestValue() method.)&lt;br /&gt;&lt;br /&gt;There are a couple of caveats to be aware of when invoking bindRequestValue&lt;br /&gt;directly.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;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.&lt;/li&gt;&lt;li&gt;Forwarded requests have already been processed and should not be used for binding purposes.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;To make things easier, Click provides a couple of helper methods that takes care&lt;br /&gt;of the caveats mentioned above. These helper methods are available from the&lt;br /&gt;&lt;tt&gt;ClickUtils&lt;/tt&gt; class which sports a variety of &lt;tt&gt;bind()&lt;/tt&gt; and &lt;tt&gt;bindAndValidate()&lt;/tt&gt; methods.&lt;br /&gt;You can even pass in Containers such as Form to these methods and all child&lt;br /&gt;controls will be bound.&lt;br /&gt;&lt;br /&gt;The bindAndValidate() method will both bind and validate a Field or Form.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;It's worth mentioning that it's also possible to lookup request parameters directly through the &lt;tt&gt;Context&lt;/tt&gt; object instead of having to bind the control value.&lt;br /&gt;&lt;br /&gt;Let's look at some examples next.&lt;br /&gt;&lt;br /&gt;In this first example we will look at a dynamic Form where a Checkbox determines&lt;br /&gt;whether a TextField should be added to the Form or not.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: java; highlight: [4,16,17,18,19]" title="DynamicFormDemo.java"&gt;public class DynamicFormDemo extends Page {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;@Override&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;public void onInit() {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;super.onInit();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Form form = new Form("form");&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;addControl(form);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Checkbox chk = new Checkbox("chk");&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;form.add(chk);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Submit ok = new Submit("ok");&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;form.add(ok);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// Explicitly bind the checkbox in the onInit event which allows us to query&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// whether the Checkbox was checked or not.&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ClickUtils.bind(chk);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(chk.isChecked()) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;form.add(new TextField("name"));&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;We use the ClickUtils.bind() method to explicitly bind the Checkbox value so we&lt;br /&gt;can query whether it is checked or not.&lt;br /&gt;&lt;br /&gt;In this second example we expand the first by adding a Select field as well.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: java; highlight: [4,20,21,22,23]" title="DynamicFormDemo.java"&gt;public class DynamicFormDemo extends Page {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;@Override&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;public void onInit() {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;super.onInit();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Form form = new Form("form");&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;addControl(form);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Checkbox chk = new Checkbox("chk");&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;form.add(chk);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select countries = new CountrySelect("countries");&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;countries.getOptionList().add(Option.EMPTY_OPTION);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;form.add(countries);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Submit ok = new Submit("ok");&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;form.add(ok);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// Explicitly bind the Form (and all it's child controls) in the onInit&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// event, allowing us to query whether he user checked the Checkbox and&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// which country was selected.&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ClickUtils.bind(form);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (chk.isChecked()) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;form.add(new TextField("name"));&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (StringUtils.isNotBlank(countries.getValue())) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;form.add(new TextField("location"));&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Note, instead of binding the Checkbox and Select separately we pass the Form to&lt;br /&gt;the ClickUtils.bind() method. When passing a container such as a Form to the&lt;br /&gt;ClickUtils.bind() methods, all bindable controls in the container will have their&lt;br /&gt;values bound. This provides an easy shortcut to quickly bind multiple controls.&lt;br /&gt;&lt;br /&gt;In this third and final example we show how to both bind &lt;tt&gt;and&lt;/tt&gt; validate a form.&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: java; highlight: [4,21,22,23,24,25,26,27,28,29]" title="DynamicFormDemo.java"&gt;public class DynamicFormDemo extends BorderPage {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;@Override&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;public void onInit() {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;super.onInit();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Form form = new Form("form");&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;addControl(form);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Checkbox chk = new Checkbox("chk");&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;form.add(chk);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Select countries = new CountrySelect("countries", true);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;countries.getOptionList().add(Option.EMPTY_OPTION);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;form.add(countries);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Submit ok = new Submit("ok");&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;form.add(ok);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// Explicitly bind and check that the Form (and all it's child&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// controls) is valid in the onInit event, allowing us to safely&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// query whether he user checked the Checkbox and&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// which country was selected.&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (ClickUtils.bindAndValidate(form)) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (chk.isChecked()) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;form.add(new TextField("name"));&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// The form validation passed and since the countries field is required&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// we can safely assume that a valid country has been selected&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;form.add(new TextField("location"));&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;The &lt;tt&gt;ClickUtils.bindAndValidate()&lt;/tt&gt; methods will bind and validate the field/s and return&lt;tt&gt; true&lt;/tt&gt; if the field/s are valid, &lt;tt&gt;false&lt;/tt&gt; otherwise.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2587500056091829705-9203801636604458882?l=click-framework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://click-framework.blogspot.com/feeds/9203801636604458882/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2587500056091829705&amp;postID=9203801636604458882' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2587500056091829705/posts/default/9203801636604458882'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2587500056091829705/posts/default/9203801636604458882'/><link rel='alternate' type='text/html' href='http://click-framework.blogspot.com/2010/09/apache-click-220-explicit-binding.html' title='Apache Click 2.2.0: Explicit Binding'/><author><name>Bob Schellink</name><uri>http://www.blogger.com/profile/10996406110751921749</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp1.blogger.com/_Ijl8pg_nh3E/SIMk9Q4_D4I/AAAAAAAAAAk/gNfr_SDEGL8/S220/sabob200-200.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2587500056091829705.post-5322013989848702709</id><published>2010-09-10T02:17:00.000-07:00</published><updated>2010-09-10T02:19:45.532-07:00</updated><title type='text'>ClickIDE 2.2.0.0 has been released!</title><content type='html'>ClickIDE 2.2.0.0 is now available! ClickIDE is an Eclipse plug-in for the developing Click web applications.&lt;br /&gt;&lt;br /&gt;This version supports Apache Click 2.2.0 and fixes some minor issues.&lt;br /&gt;&lt;br /&gt;For details about ClickIDE see:&lt;br /&gt;&lt;a href="http://click.apache.org/docs/click-ide.html"&gt;http://click.apache.org/docs/click-ide.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Download is available here:&lt;br /&gt;&lt;a href="http://click.apache.org/docs/click-ide-downloads.html"&gt;     http://click.apache.org/docs/click-ide-downloads.html&lt;/a&gt;&lt;br /&gt;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;Enjoy Click&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2587500056091829705-5322013989848702709?l=click-framework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://click-framework.blogspot.com/feeds/5322013989848702709/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2587500056091829705&amp;postID=5322013989848702709' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2587500056091829705/posts/default/5322013989848702709'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2587500056091829705/posts/default/5322013989848702709'/><link rel='alternate' type='text/html' href='http://click-framework.blogspot.com/2010/09/clickide-2200-has-been-released.html' title='ClickIDE 2.2.0.0 has been released!'/><author><name>Bob Schellink</name><uri>http://www.blogger.com/profile/10996406110751921749</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp1.blogger.com/_Ijl8pg_nh3E/SIMk9Q4_D4I/AAAAAAAAAAk/gNfr_SDEGL8/S220/sabob200-200.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2587500056091829705.post-1927092640787935881</id><published>2010-07-24T07:47:00.000-07:00</published><updated>2010-07-24T07:47:47.471-07:00</updated><title type='text'>SD Times interview with Apache Click vice president</title><content type='html'>Malcolm Edgar, Apache Click Vice President, recently had a chat with &lt;a href="http://www.sdtimes.com/"&gt;SD Times&lt;/a&gt; editor in chief, David Rubinstein. Great to see Click getting some much deserved exposure.&lt;br /&gt;&lt;br /&gt;Full interview can be viewed &lt;a href="http://www.sdtimes.com/blog/post/2010/07/21/Java-app-framework-just-a-Click-away.aspx"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2587500056091829705-1927092640787935881?l=click-framework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://click-framework.blogspot.com/feeds/1927092640787935881/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2587500056091829705&amp;postID=1927092640787935881' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2587500056091829705/posts/default/1927092640787935881'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2587500056091829705/posts/default/1927092640787935881'/><link rel='alternate' type='text/html' href='http://click-framework.blogspot.com/2010/07/sd-times-interview-with-apache-click.html' title='SD Times interview with Apache Click vice president'/><author><name>Bob Schellink</name><uri>http://www.blogger.com/profile/10996406110751921749</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp1.blogger.com/_Ijl8pg_nh3E/SIMk9Q4_D4I/AAAAAAAAAAk/gNfr_SDEGL8/S220/sabob200-200.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2587500056091829705.post-9029517985108991856</id><published>2010-07-14T19:05:00.000-07:00</published><updated>2010-09-22T21:10:07.413-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Click 2.2.0'/><category scheme='http://www.blogger.com/atom/ns#' term='features'/><title type='text'>Apache Click 2.2.0: DataProvider</title><content type='html'>In this three part series I'll blog about some of the new features added in 2.2.0, namely:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://click-framework.blogspot.com/2010/07/apache-click-220-dataprovider.html"&gt;DataProviders&lt;/a&gt; (&lt;a href="http://d.hatena.ne.jp/takezoe/20100917#p1"&gt;Japanese version&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;a href="http://click-framework.blogspot.com/2010/09/apache-click-220-explicit-binding.html"&gt;Explicit binding&lt;/a&gt; (&lt;a href="http://d.hatena.ne.jp/takezoe/20100918#p1"&gt;Japanese version&lt;/a&gt;)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://click-framework.blogspot.com/2010/09/apache-click-220-dynamic-form.html"&gt;Dynamic Form Validation&lt;/a&gt; ( &lt;a href="http://d.hatena.ne.jp/takezoe/20100921#p1"&gt;Japanese version&lt;/a&gt;)&lt;br /&gt;&lt;span id="goog_635793847"&gt;&lt;/span&gt;&lt;span id="goog_635793848"&gt;&lt;/span&gt;&lt;a href="http://www.blogger.com/"&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;ul&gt;&lt;/ul&gt;In this first installment I'll cover DataProviders and how they simplify Click Page implementations.&lt;br /&gt;&lt;br /&gt;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: &lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;tt&gt;&amp;lt;&amp;lt;init&amp;gt;&amp;gt;&lt;/tt&gt;: page is created&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;tt&gt;onInit&lt;/tt&gt;: page controls are created and added to the page&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;tt&gt;onProcess&lt;/tt&gt;: control values are bound to request parameters, control values are validated and &lt;tt&gt;action listeners&lt;/tt&gt; are fired&lt;/li&gt;&lt;li&gt;&lt;tt&gt;onRender&lt;/tt&gt;: database intensive operations are performed here&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Click allows certain events to be skipped depending on the outcome of a previous event. &lt;tt&gt;onRender&lt;/tt&gt; 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.&lt;br /&gt;&lt;br /&gt;For example:&lt;br /&gt;&lt;pre class="brush: java; highlight: [26,27,28,29,30]" title="CustomerPage.java"&gt;public class CustomerPage extends BorderPage {&lt;br /&gt;&lt;br /&gt;    private Table table = new Table("table");&lt;br /&gt;    private ActionLink editLink = new EditLink("edit");&lt;br /&gt;&lt;br /&gt;    @Override&lt;br /&gt;    public void onInit() {&lt;br /&gt;        super.onInit();&lt;br /&gt;&lt;br /&gt;        table.add(new Column("firstname"));&lt;br /&gt;&lt;br /&gt;        ...&lt;br /&gt;&lt;br /&gt;        editLink.setActionListener(new ActionListener() {&lt;br /&gt;            public boolean onAction(Control source) {&lt;br /&gt;                Map params = Collections.singletonMap("id", editLink.getValue());&lt;br /&gt;&lt;br /&gt;               // Redirect to edit customer page and pass the selected customer ID&lt;br /&gt;               setRedirect(EditCustomerPage.class, params);&lt;br /&gt;               return false;&lt;br /&gt;            }&lt;br /&gt;        });&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    @Override&lt;br /&gt;    public void onRender() {&lt;br /&gt;        // Database intensive operation: retrieving all customers from the database&lt;br /&gt;        List&amp;lt;Customer&amp;gt; customers = getCustomerService.getCustomers();&lt;br /&gt;        table.setRows(customers);&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;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.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Inconsistent&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Unfortunately this pattern cannot be applied to all &lt;tt&gt;controls&lt;/tt&gt;. Some controls need their values populated &lt;tt&gt;before&lt;/tt&gt; the &lt;tt&gt;onProcess&lt;/tt&gt; 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&amp;nbsp; in order to update its entity values against incoming request parameters.&lt;br /&gt;&lt;br /&gt;Having some of the controls populated in &lt;tt&gt;onInit&lt;/tt&gt; and others in &lt;tt&gt;onRender&lt;/tt&gt; is inconsistent and a common pitfall for new users as they have to figure out which controls should be populated in which event.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;DataProvider&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The solution used in Click was to add a &lt;a href="http://click.apache.org/docs/click-api/org/apache/click/dataprovider/DataProvider.html"&gt;DataProvider&lt;/a&gt; interface to enable on demand data loading. A DataProvider has a single method, &lt;tt&gt;"public List getData()"&lt;/tt&gt;, 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.&lt;br /&gt;&lt;br /&gt;DataProviders leads to a more consistent Page implementation where all control creation logic can be encapsulated in the &lt;tt&gt;onInit&lt;/tt&gt; event or even the page constructor. For example:&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: java; highlight: [14,15,16,17,18]" title="CustomerPage.java"&gt;public class CustomerPage extends BorderPage {&lt;br /&gt;&lt;br /&gt;    private Table table = new Table("table");&lt;br /&gt;    private Select select = new Select("markets");&lt;br /&gt;&lt;br /&gt;    @Override&lt;br /&gt;    public void onInit() {&lt;br /&gt;        super.onInit();&lt;br /&gt;&lt;br /&gt;        table.add(new Column("firstname"));&lt;br /&gt;&lt;br /&gt;        ...&lt;br /&gt;&lt;br /&gt;        table.setDataProvider(new DataProvider() {&lt;br /&gt;            public List&amp;lt;Customer&amp;gt; getData() {&lt;br /&gt;                return getCustomerService().getCustomers();&lt;br /&gt;            }&lt;br /&gt;        });&lt;br /&gt;&lt;br /&gt;        select.setDataProvider(new DataProvider() {&lt;br /&gt;            public List&amp;lt;Option&amp;gt; getData() {&lt;br /&gt;                List options = new ArrayList();&lt;br /&gt;                for (Market market : getMarketService().getMarkets()) {&lt;br /&gt;                    options.add(new Option(market.getId(), market.getName());&lt;br /&gt;                }&lt;br /&gt;                return options;&lt;br /&gt;            }&lt;br /&gt;        });&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;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.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Is onRender still necessary?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Absolutely. While DataProviders allow &lt;tt&gt;control creation logic&lt;/tt&gt; 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. &lt;tt&gt;onRender&lt;/tt&gt; could still be used to retrieve the customers and make it available to the template. For example:&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: java; highlight: [3,4,5]" title="CustomerPage.java"&gt;public class CustomerPage extends BorderPage {&lt;br /&gt;&lt;br /&gt;    public void onRender() {&lt;br /&gt;        addModel("customers", getCustomerService().getCustomers());&lt;br /&gt;    }&lt;br /&gt;} &lt;/pre&gt;&lt;br /&gt;&lt;pre class="brush: xml; highlight: [4]" title="customer.htm"&gt;&amp;lt;table&amp;gt;&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;#foreach($customer in $customers)&lt;br /&gt;  &amp;lt;tr&amp;gt;&lt;br /&gt;    &amp;lt;td&amp;gt;&lt;br /&gt;      $customer.name&lt;br /&gt;    &amp;lt;td&amp;gt;&lt;br /&gt;    &amp;lt;td&amp;gt;&lt;br /&gt;      $customer.holdings&lt;br /&gt;    &amp;lt;td&amp;gt;&lt;br /&gt;  &amp;lt;/tr&amp;gt;&lt;br /&gt;#end&lt;br /&gt;&amp;lt;/table&amp;gt; &lt;/pre&gt;&lt;br /&gt;If an action listener returns false, onRender is skipped and the database operation won't be performed, which is exactly the behavior we want. &lt;br /&gt;&lt;br /&gt;Hope this overview was helpful. In the next installment I'll cover Explicit binding and Dynamic Form Validation, which both simplifies dynamic form creation.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2587500056091829705-9029517985108991856?l=click-framework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://click-framework.blogspot.com/feeds/9029517985108991856/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2587500056091829705&amp;postID=9029517985108991856' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2587500056091829705/posts/default/9029517985108991856'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2587500056091829705/posts/default/9029517985108991856'/><link rel='alternate' type='text/html' href='http://click-framework.blogspot.com/2010/07/apache-click-220-dataprovider.html' title='Apache Click 2.2.0: DataProvider'/><author><name>Bob Schellink</name><uri>http://www.blogger.com/profile/10996406110751921749</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp1.blogger.com/_Ijl8pg_nh3E/SIMk9Q4_D4I/AAAAAAAAAAk/gNfr_SDEGL8/S220/sabob200-200.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2587500056091829705.post-8529239009380326954</id><published>2010-05-15T06:06:00.001-07:00</published><updated>2010-07-15T23:10:07.425-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='release'/><category scheme='http://www.blogger.com/atom/ns#' term='2.2.0'/><title type='text'>Apache Click v2.2.0 has been released</title><content type='html'>Click 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.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://click.apache.org/"&gt;Click Home&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://click.apache.org/docs/roadmap-changes.html#2.2.0"&gt;Roadmap  and Changes&lt;/a&gt; - full list of new features, improvements and bug fixes&lt;/li&gt;&lt;li&gt;&lt;a href="http://click.apache.org/docs/upgrade-path.html#2.2.0"&gt;Upgrade  Path&lt;/a&gt; - please see the upgrade path when upgrading from 2.1.0 or  earlier.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.apache.org/dyn/closer.cgi/click/click/2.2.0/click-2.2.0.zip"&gt;Download  Click 2.2.0&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://repo1.maven.org/maven2/org/apache/click/"&gt;Maven bundles&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.avoka.com/click-examples/"&gt;Live examples&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;New features and improvements:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li class="change"&gt;         Added &lt;a href="http://click.apache.org/docs/click-api/org/apache/click/dataprovider/DataProvider.html"&gt;DataProvider&lt;/a&gt;         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         [&lt;a href="https://issues.apache.org/jira/browse/CLK-640" target="_blank"&gt;CLK-640&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;         Added &lt;a href="http://click.apache.org/docs/click-api/org/apache/click/dataprovider/PagingDataProvider.html"&gt;PagingDataProvider&lt;/a&gt;         interface to support large paginated result sets for Tables         [&lt;a href="https://issues.apache.org/jira/browse/CLK-640" target="_blank"&gt;CLK-640&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;         Added a &lt;a href="http://click.apache.org/docs/extras-api/org/apache/click/extras/control/MenuFactory.html"&gt;MenuFactory&lt;/a&gt;         for creating and loading Menus from &lt;tt&gt;configuration&lt;/tt&gt;  files. All the         static Menu methods have been deprecated and will be removed in a  future release.       &lt;/li&gt;&lt;li class="change"&gt;         Added an &lt;a href="http://click.apache.org/docs/extras-api/org/apache/click/extras/control/MenuFactory.html#getRootMenu%28boolean%29"&gt;option&lt;/a&gt;         for MenuFactory to not statically cache menus. This allows         developers to cache menus in different scopes such as  HttpSession.         [&lt;a href="https://issues.apache.org/jira/browse/CLK-405" target="_blank"&gt;CLK-405&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;         Added i18n support for Menus loaded from &lt;tt&gt;menu.xml&lt;/tt&gt;. The  menu         DTD now includes a new &lt;tt&gt;name&lt;/tt&gt; attribute. By specifying         a &lt;tt&gt;name&lt;/tt&gt; attribute in &lt;tt&gt;menu.xml&lt;/tt&gt;, the Menu will  attempt to         load its &lt;tt&gt;label&lt;/tt&gt; and &lt;tt&gt;title&lt;/tt&gt; from resource bundles         [&lt;a href="https://issues.apache.org/jira/browse/CLK-591" target="_blank"&gt;CLK-591&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;         Added a &lt;a href="http://click.apache.org/docs/click-api/org/apache/click/PageInterceptor.html"&gt;Page  Interceptor&lt;/a&gt;         facility that provides an extension point for code which can  listen to         key page events and also interrupt normal page processing flow.         [&lt;a href="https://issues.apache.org/jira/browse/CLK-598" target="_blank"&gt;CLK-598&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;         Added improved dynamic Form support. Forms can now optionally  bypass         validation for JavaScript based submissions using the new  JavaScript         function &lt;tt&gt;"Click.submit(formName, validate)"&lt;/tt&gt;         [&lt;a href="https://issues.apache.org/jira/browse/CLK-638" target="_blank"&gt;CLK-638&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;         Added improved dynamic Page and Form behaviour through new  helper methods         that can bind and validate Forms and Fields &lt;tt&gt;before&lt;/tt&gt; the  onProcess         page event e.g. in the Page constructor or &lt;tt&gt;"onInit"&lt;/tt&gt;  event.         The new methods are:&lt;br /&gt;&lt;ul style="margin-top: 10px;"&gt;&lt;li&gt;                 &lt;a href="http://click.apache.org/docs/click-api/org/apache/click/util/ClickUtils.html#bind%28org.apache.click.control.Field%29"&gt;ClickUtils.bind(Field)&lt;/a&gt;             &lt;/li&gt;&lt;li&gt;                 &lt;a href="http://click.apache.org/docs/click-api/org/apache/click/util/ClickUtils.html#bind%28org.apache.click.control.Form%29"&gt;ClickUtils.bind(Form)&lt;/a&gt;             &lt;/li&gt;&lt;li&gt;                 &lt;a href="http://click.apache.org/docs/click-api/org/apache/click/util/ClickUtils.html#bind%28org.apache.click.control.AbstractLink%29"&gt;ClickUtils.bind(AbstractLink)&lt;/a&gt;             &lt;/li&gt;&lt;li&gt;                 &lt;a href="http://click.apache.org/docs/click-api/org/apache/click/util/ClickUtils.html#bindAndValidate%28org.apache.click.control.Field%29"&gt;ClickUtils.bindAndValidate(Field)&lt;/a&gt;             &lt;/li&gt;&lt;li&gt;                 &lt;a href="http://click.apache.org/docs/click-api/org/apache/click/util/ClickUtils.html#bindAndValidate%28org.apache.click.control.Form%29"&gt;ClickUtils.bindAndValidate(Form)&lt;/a&gt;                 [&lt;a href="https://issues.apache.org/jira/browse/CLK-638" target="_blank"&gt;CLK-638&lt;/a&gt;]             &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li class="change"&gt;         Added improved disabled behavior through the following changes:&lt;br /&gt;&lt;ul style="margin-top: 10px;"&gt;&lt;li&gt;                 Disabled fields are not processed or validated             &lt;/li&gt;&lt;li&gt;                 Disabled field values are not copied to domain objects             &lt;/li&gt;&lt;li&gt;                 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                 &lt;a href="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#setDisabled%28boolean%29"&gt;setDisabled()&lt;/a&gt;                 javadoc for details [&lt;a href="https://issues.apache.org/jira/browse/CLK-646" target="_blank"&gt;CLK-646&lt;/a&gt;].             &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li class="change"&gt;         Added new method &lt;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"&gt;Container.replace&lt;/a&gt;         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 &lt;tt&gt;stateful&lt;/tt&gt; pages since &lt;tt&gt;stateless&lt;/tt&gt;         pages are recreated each request         [&lt;a href="https://issues.apache.org/jira/browse/CLK-666" target="_blank"&gt;CLK-666&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;         Added methods to Fields for styling their labels. See new  methods         &lt;a href="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#setLabelStyle%28java.lang.String%29"&gt;Field.setLabelStyle(String)&lt;/a&gt;         and &lt;a href="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#setLabelStyleClass%28java.lang.String%29"&gt;Field.setLabelStyleClass(String)&lt;/a&gt;.         This issue was raised by Stefax         [&lt;a href="https://issues.apache.org/jira/browse/CLK-595" target="_blank"&gt;CLK-595&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;         Added methods to Fields for providing styling hints to their         containing elements. See new methods         &lt;a href="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#setParentStyleHint%28java.lang.String%29"&gt;Field.setParentStyleHint(String)&lt;/a&gt;         and &lt;a href="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#setParentStyleClassHint%28java.lang.String%29"&gt;Field.setParentStyleClassHint(String)&lt;/a&gt;.         This issue was raised by Stefax         [&lt;a href="https://issues.apache.org/jira/browse/CLK-595" target="_blank"&gt;CLK-595&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;         Added trim property to Field for controlling if the Field  request         parameter is trimmed or not. See new method         &lt;a href="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#setTrim%28boolean%29"&gt;Field.setTrim(boolean)&lt;/a&gt;.         This issue was raised by Andrey Rybin         [&lt;a href="https://issues.apache.org/jira/browse/CLK-627" target="_blank"&gt;CLK-627&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;         Added new Context methods         &lt;a href="http://click.apache.org/docs/click-api/org/apache/click/Context.html#hasRequestParameter%28java.lang.String%29"&gt;Context.hasRequestParameter(String)&lt;/a&gt;         and &lt;a href="http://click.apache.org/docs/click-api/org/apache/click/Context.html#hasRequestAttribute%28java.lang.String%29"&gt;Context.hasRequestAttribute(String)&lt;/a&gt;.       &lt;/li&gt;&lt;li class="change"&gt;         Added support to Select for a &lt;a href="http://click.apache.org/docs/click-api/org/apache/click/control/Select.html#setDefaultOption%28org.apache.click.control.Option%29"&gt;default  option&lt;/a&gt;         that can be used to validate non selection against and allows  the Select         to only populate its optionList at rendering time, instead of  during         &lt;tt&gt;onProcess&lt;/tt&gt; event.         [&lt;a href="https://issues.apache.org/jira/browse/CLK-641" target="_blank"&gt;CLK-641&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;         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         [&lt;a href="https://issues.apache.org/jira/browse/CLK-648" target="_blank"&gt;CLK-648&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;         Added mock support for user &lt;a href="http://click.apache.org/docs/mock-api/org/apache/click/servlet/MockPrincipal.html"&gt;principals&lt;/a&gt;         and roles. This issue was raised and fixed by Sven Pfeiffer         [&lt;a href="https://issues.apache.org/jira/browse/CLK-585" target="_blank"&gt;CLK-585&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;         Added localized Date format pattern support. This issue was  raised by         Andrey Rybin         [&lt;a href="https://issues.apache.org/jira/browse/CLK-610" target="_blank"&gt;CLK-610&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;         Added Polish resource bundle for DateField. This issue was  raised and         fixed by Rafal Rusin         [&lt;a href="https://issues.apache.org/jira/browse/CLK-624" target="_blank"&gt;CLK-624&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;         Migrated controls to import resources through Elements and the         &lt;tt&gt;getHeadElements&lt;/tt&gt; method         [&lt;a href="https://issues.apache.org/jira/browse/CLK-647" target="_blank"&gt;CLK-647&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;         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         [&lt;a href="https://issues.apache.org/jira/browse/CLK-667" target="_blank"&gt;CLK-667&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;         Replaced Page and Control getMessage methods with varargs  equivalents         [&lt;a href="https://issues.apache.org/jira/browse/CLK-604" target="_blank"&gt;CLK-604&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;         Removed Click core's dependency on Velocity. This issue was  raised by by Andrey Rybin         [&lt;a href="https://issues.apache.org/jira/browse/CLK-606" target="_blank"&gt;CLK-606&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;         Replaced multiple ClickUtils close methods with a single method  accepting         a &lt;a href="http://click.apache.org/docs/click-api/org/apache/click/util/ClickUtils.html#close%28java.io.Closeable%29"&gt;Closeable&lt;/a&gt;.         This issue was raised by Andrey Rybin         [&lt;a href="https://issues.apache.org/jira/browse/CLK-620" target="_blank"&gt;CLK-620&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;         Improved ClickServlet to use the response's OutputStream if the  Writer         cannot be retrieved         [&lt;a href="https://issues.apache.org/jira/browse/CLK-644" target="_blank"&gt;CLK-644&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;         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         [&lt;a href="https://issues.apache.org/jira/browse/CLK-577" target="_blank"&gt;CLK-577&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;         Fixed DateField to set seconds back to zero. This issue was  raised by Andrey Rybin         [&lt;a href="https://issues.apache.org/jira/browse/CLK-664" target="_blank"&gt;CLK-664&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;           The menu.dtd has been published to           &lt;a href="http://click.apache.org/dtds/menu-2.2.dtd"&gt;http://click.apache.org/dtds/menu-2.2.dtd&lt;/a&gt;.           If you want your configuration to conform to the menu.dtd,  include           the following declaration in your menu.xml:&lt;br /&gt;&lt;pre class="brush: xml"&gt;&amp;lt;!DOCTYPE menu PUBLIC&lt;br /&gt;"-//Apache Software Foundation//DTD Click Menu 2.2//EN"&lt;br /&gt;"http://click.apache.org/dtds/menu-2.2.dtd"&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li class="change"&gt;           The new click-2.2.dtd has been published to           &lt;a href="http://click.apache.org/dtds/click-2.2.dtd"&gt;http://click.apache.org/dtds/click-2.2.dtd&lt;/a&gt;.           If you want your configuration to conform to the click.dtd,  include           the following declaration in your click.xml:&lt;br /&gt;&lt;pre class="brush: xml"&gt;&amp;lt;!DOCTYPE click-app PUBLIC&lt;br /&gt;"-//Apache Software Foundation//DTD Click Configuration 2.2//EN"&lt;br /&gt;"http://click.apache.org/dtds/click-2.2.dtd"&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;span style="font-weight: bold;"&gt;New  examples:     &lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;         &lt;a class="external" href="http://www.avoka.com/click-examples/form/dynamic/dynamic-form.htm" target="_blank"&gt;         Dynamic Form&lt;/a&gt; demonstrates how to dynamically add new Fields  at runtime.       &lt;/li&gt;&lt;li&gt;         &lt;a class="external" href="http://www.avoka.com/click-examples/form/dynamic/dynamic-field-set.htm" target="_blank"&gt;         Dynamic FieldSet&lt;/a&gt; demonstrates how to dynamically add a  FieldSet at runtime.       &lt;/li&gt;&lt;li&gt;         &lt;a class="external" href="http://www.avoka.com/click-examples/form/dynamic/dynamic-select.htm" target="_blank"&gt;         Dynamic Select&lt;/a&gt; demonstrates how to dynamically add fields  based on a Select field value.       &lt;/li&gt;&lt;li&gt;         &lt;a class="external" href="http://www.avoka.com/click-examples/control/disabled-demo.htm" target="_blank"&gt;         Disabled Demo&lt;/a&gt; demonstrates the behavior of disabled fields.       &lt;/li&gt;&lt;/ul&gt;Enjoy.&lt;br /&gt;&lt;br /&gt;-  The Click team&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2587500056091829705-8529239009380326954?l=click-framework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://click-framework.blogspot.com/feeds/8529239009380326954/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2587500056091829705&amp;postID=8529239009380326954' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2587500056091829705/posts/default/8529239009380326954'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2587500056091829705/posts/default/8529239009380326954'/><link rel='alternate' type='text/html' href='http://click-framework.blogspot.com/2010/05/apache-click-v220-has-been-released.html' title='Apache Click v2.2.0 has been released'/><author><name>Bob Schellink</name><uri>http://www.blogger.com/profile/10996406110751921749</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp1.blogger.com/_Ijl8pg_nh3E/SIMk9Q4_D4I/AAAAAAAAAAk/gNfr_SDEGL8/S220/sabob200-200.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2587500056091829705.post-4525863497895537713</id><published>2010-05-01T22:36:00.000-07:00</published><updated>2010-07-15T23:10:31.962-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='release'/><category scheme='http://www.blogger.com/atom/ns#' term='2.2.0'/><title type='text'>Apache Click v2.2.0-RC1 now available</title><content type='html'>Click 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.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://click.apache.org/"&gt;Click Home&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://click.apache.org/docs/roadmap-changes.html#2.2.0"&gt;Roadmap  and Changes&lt;/a&gt; - full list of new features, improvements and bug fixes&lt;/li&gt;&lt;li&gt;&lt;a href="http://click.apache.org/docs/upgrade-path.html#2.2.0"&gt;Upgrade  Path&lt;/a&gt; - please see the upgrade path when upgrading from 2.1.0 or  earlier.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.apache.org/dyn/closer.cgi/click/click/2.2.0-RC1/click-2.2.0-RC1.zip"&gt;Download  Click 2.2.0 RC1&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://repo1.maven.org/maven2/org/apache/click/"&gt;Maven bundles&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.avoka.com/click-examples/"&gt;Live examples&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;New features and improvements:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li class="change"&gt;         Added &lt;a href="http://click.apache.org/docs/click-api/org/apache/click/dataprovider/DataProvider.html"&gt;DataProvider&lt;/a&gt;         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         [&lt;a href="https://issues.apache.org/jira/browse/CLK-640" target="_blank"&gt;CLK-640&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;         Added &lt;a href="http://click.apache.org/docs/click-api/org/apache/click/dataprovider/PagingDataProvider.html"&gt;PagingDataProvider&lt;/a&gt;         interface to support large paginated result sets for Tables         [&lt;a href="https://issues.apache.org/jira/browse/CLK-640" target="_blank"&gt;CLK-640&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;         Added a &lt;a href="http://click.apache.org/docs/extras-api/org/apache/click/extras/control/MenuFactory.html"&gt;MenuFactory&lt;/a&gt;         for creating and loading Menus from &lt;tt&gt;configuration&lt;/tt&gt;  files. All the         static Menu methods have been deprecated and will be removed in a  future release.       &lt;/li&gt;&lt;li class="change"&gt;         Added an &lt;a href="http://click.apache.org/docs/extras-api/org/apache/click/extras/control/MenuFactory.html#getRootMenu%28boolean%29"&gt;option&lt;/a&gt;         for MenuFactory to not statically cache menus. This allows         developers to cache menus in different scopes such as  HttpSession.         [&lt;a href="https://issues.apache.org/jira/browse/CLK-405" target="_blank"&gt;CLK-405&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;         Added i18n support for Menus loaded from &lt;tt&gt;menu.xml&lt;/tt&gt;. The  menu         DTD now includes a new &lt;tt&gt;name&lt;/tt&gt; attribute. By specifying         a &lt;tt&gt;name&lt;/tt&gt; attribute in &lt;tt&gt;menu.xml&lt;/tt&gt;, the Menu will  attempt to         load its &lt;tt&gt;label&lt;/tt&gt; and &lt;tt&gt;title&lt;/tt&gt; from resource bundles         [&lt;a href="https://issues.apache.org/jira/browse/CLK-591" target="_blank"&gt;CLK-591&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;         Added a &lt;a href="http://click.apache.org/docs/click-api/org/apache/click/PageInterceptor.html"&gt;Page  Interceptor&lt;/a&gt;         facility that provides an extension point for code which can  listen to         key page events and also interrupt normal page processing flow.         [&lt;a href="https://issues.apache.org/jira/browse/CLK-598" target="_blank"&gt;CLK-598&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;         Added improved dynamic Form support. Forms can now optionally  bypass         validation for JavaScript based submissions using the new  JavaScript         function &lt;tt&gt;"Click.submit(formName, validate)"&lt;/tt&gt;         [&lt;a href="https://issues.apache.org/jira/browse/CLK-638" target="_blank"&gt;CLK-638&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;         Added improved dynamic Page and Form behaviour through new  helper methods         that can bind and validate Forms and Fields &lt;tt&gt;before&lt;/tt&gt; the  onProcess         page event e.g. in the Page constructor or &lt;tt&gt;"onInit"&lt;/tt&gt;  event.         The new methods are:   &lt;br /&gt;&lt;ul style="margin-top: 10px;"&gt;&lt;li&gt;                 &lt;a href="http://click.apache.org/docs/click-api/org/apache/click/util/ClickUtils.html#bind%28org.apache.click.control.Field%29"&gt;ClickUtils.bind(Field)&lt;/a&gt;             &lt;/li&gt;&lt;li&gt;                 &lt;a href="http://click.apache.org/docs/click-api/org/apache/click/util/ClickUtils.html#bind%28org.apache.click.control.Form%29"&gt;ClickUtils.bind(Form)&lt;/a&gt;             &lt;/li&gt;&lt;li&gt;                 &lt;a href="http://click.apache.org/docs/click-api/org/apache/click/util/ClickUtils.html#bind%28org.apache.click.control.AbstractLink%29"&gt;ClickUtils.bind(AbstractLink)&lt;/a&gt;             &lt;/li&gt;&lt;li&gt;                 &lt;a href="http://click.apache.org/docs/click-api/org/apache/click/util/ClickUtils.html#bindAndValidate%28org.apache.click.control.Field%29"&gt;ClickUtils.bindAndValidate(Field)&lt;/a&gt;             &lt;/li&gt;&lt;li&gt;                 &lt;a href="http://click.apache.org/docs/click-api/org/apache/click/util/ClickUtils.html#bindAndValidate%28org.apache.click.control.Form%29"&gt;ClickUtils.bindAndValidate(Form)&lt;/a&gt;                 [&lt;a href="https://issues.apache.org/jira/browse/CLK-638" target="_blank"&gt;CLK-638&lt;/a&gt;]             &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li class="change"&gt;         Added improved disabled behavior through the following changes:   &lt;br /&gt;&lt;ul style="margin-top: 10px;"&gt;&lt;li&gt;                 Disabled fields are not processed or validated             &lt;/li&gt;&lt;li&gt;                 Disabled field values are not copied to domain objects             &lt;/li&gt;&lt;li&gt;                 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                 &lt;a href="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#setDisabled%28boolean%29"&gt;setDisabled()&lt;/a&gt;                 javadoc for details [&lt;a href="https://issues.apache.org/jira/browse/CLK-646" target="_blank"&gt;CLK-646&lt;/a&gt;].             &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li class="change"&gt;         Added new method &lt;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"&gt;Container.replace&lt;/a&gt;         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 &lt;tt&gt;stateful&lt;/tt&gt; pages since &lt;tt&gt;stateless&lt;/tt&gt;         pages are recreated each request         [&lt;a href="https://issues.apache.org/jira/browse/CLK-666" target="_blank"&gt;CLK-666&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;         Added methods to Fields for styling their labels. See new  methods         &lt;a href="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#setLabelStyle%28java.lang.String%29"&gt;Field.setLabelStyle(String)&lt;/a&gt;         and &lt;a href="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#setLabelStyleClass%28java.lang.String%29"&gt;Field.setLabelStyleClass(String)&lt;/a&gt;.         This issue was raised by Stefax         [&lt;a href="https://issues.apache.org/jira/browse/CLK-595" target="_blank"&gt;CLK-595&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;         Added methods to Fields for providing styling hints to their         containing elements. See new methods         &lt;a href="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#setParentStyleHint%28java.lang.String%29"&gt;Field.setParentStyleHint(String)&lt;/a&gt;         and &lt;a href="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#setParentStyleClassHint%28java.lang.String%29"&gt;Field.setParentStyleClassHint(String)&lt;/a&gt;.         This issue was raised by Stefax         [&lt;a href="https://issues.apache.org/jira/browse/CLK-595" target="_blank"&gt;CLK-595&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;         Added trim property to Field for controlling if the Field  request         parameter is trimmed or not. See new method         &lt;a href="http://click.apache.org/docs/click-api/org/apache/click/control/Field.html#setTrim%28boolean%29"&gt;Field.setTrim(boolean)&lt;/a&gt;.         This issue was raised by Andrey Rybin         [&lt;a href="https://issues.apache.org/jira/browse/CLK-627" target="_blank"&gt;CLK-627&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;         Added new Context methods         &lt;a href="http://click.apache.org/docs/click-api/org/apache/click/Context.html#hasRequestParameter%28java.lang.String%29"&gt;Context.hasRequestParameter(String)&lt;/a&gt;         and &lt;a href="http://click.apache.org/docs/click-api/org/apache/click/Context.html#hasRequestAttribute%28java.lang.String%29"&gt;Context.hasRequestAttribute(String)&lt;/a&gt;.       &lt;/li&gt;&lt;li class="change"&gt;         Added support to Select for a &lt;a href="http://click.apache.org/docs/click-api/org/apache/click/control/Select.html#setDefaultOption%28org.apache.click.control.Option%29"&gt;default  option&lt;/a&gt;         that can be used to validate non selection against and allows  the Select         to only populate its optionList at rendering time, instead of  during         &lt;tt&gt;onProcess&lt;/tt&gt; event.         [&lt;a href="https://issues.apache.org/jira/browse/CLK-641" target="_blank"&gt;CLK-641&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;         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         [&lt;a href="https://issues.apache.org/jira/browse/CLK-648" target="_blank"&gt;CLK-648&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;         Added mock support for user &lt;a href="http://click.apache.org/docs/mock-api/org/apache/click/servlet/MockPrincipal.html"&gt;principals&lt;/a&gt;         and roles. This issue was raised and fixed by Sven Pfeiffer         [&lt;a href="https://issues.apache.org/jira/browse/CLK-585" target="_blank"&gt;CLK-585&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;         Added localized Date format pattern support. This issue was  raised by         Andrey Rybin         [&lt;a href="https://issues.apache.org/jira/browse/CLK-610" target="_blank"&gt;CLK-610&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;         Added Polish resource bundle for DateField. This issue was  raised and         fixed by Rafal Rusin         [&lt;a href="https://issues.apache.org/jira/browse/CLK-624" target="_blank"&gt;CLK-624&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;         Migrated controls to import resources through Elements and the         &lt;tt&gt;getHeadElements&lt;/tt&gt; method         [&lt;a href="https://issues.apache.org/jira/browse/CLK-647" target="_blank"&gt;CLK-647&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;         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         [&lt;a href="https://issues.apache.org/jira/browse/CLK-667" target="_blank"&gt;CLK-667&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;         Replaced Page and Control getMessage methods with varargs  equivalents         [&lt;a href="https://issues.apache.org/jira/browse/CLK-604" target="_blank"&gt;CLK-604&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;         Removed Click core's dependency on Velocity. This issue was  raised by by Andrey Rybin         [&lt;a href="https://issues.apache.org/jira/browse/CLK-606" target="_blank"&gt;CLK-606&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;         Replaced multiple ClickUtils close methods with a single method  accepting         a &lt;a href="http://click.apache.org/docs/click-api/org/apache/click/util/ClickUtils.html#close%28java.io.Closeable%29"&gt;Closeable&lt;/a&gt;.         This issue was raised by Andrey Rybin         [&lt;a href="https://issues.apache.org/jira/browse/CLK-620" target="_blank"&gt;CLK-620&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;         Improved ClickServlet to use the response's OutputStream if the  Writer         cannot be retrieved         [&lt;a href="https://issues.apache.org/jira/browse/CLK-644" target="_blank"&gt;CLK-644&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;         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         [&lt;a href="https://issues.apache.org/jira/browse/CLK-577" target="_blank"&gt;CLK-577&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;         Fixed DateField to set seconds back to zero. This issue was  raised by Andrey Rybin         [&lt;a href="https://issues.apache.org/jira/browse/CLK-664" target="_blank"&gt;CLK-664&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;           The menu.dtd has been published to           &lt;a href="http://click.apache.org/dtds/menu-2.2.dtd"&gt;http://click.apache.org/dtds/menu-2.2.dtd&lt;/a&gt;.           If you want your configuration to conform to the menu.dtd,  include           the following declaration in your menu.xml:&lt;br /&gt;&lt;pre class="brush: xml"&gt;&amp;lt;!DOCTYPE menu PUBLIC&lt;br /&gt;"-//Apache Software Foundation//DTD Click Menu 2.2//EN"&lt;br /&gt;"http://click.apache.org/dtds/menu-2.2.dtd"&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li class="change"&gt;           The new click-2.2.dtd has been published to           &lt;a href="http://click.apache.org/dtds/click-2.2.dtd"&gt;http://click.apache.org/dtds/click-2.2.dtd&lt;/a&gt;.           If you want your configuration to conform to the click.dtd,  include           the following declaration in your click.xml:&lt;br /&gt;&lt;pre class="brush: xml"&gt;&amp;lt;!DOCTYPE click-app PUBLIC&lt;br /&gt;"-//Apache Software Foundation//DTD Click Configuration 2.2//EN"&lt;br /&gt;"http://click.apache.org/dtds/click-2.2.dtd"&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;span style="font-weight: bold;"&gt;New  examples:     &lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;         &lt;a class="external" href="http://www.avoka.com/click-examples/form/dynamic/dynamic-form.htm" target="_blank"&gt;         Dynamic Form&lt;/a&gt; demonstrates how to dynamically add new Fields  at runtime.       &lt;/li&gt;&lt;li&gt;         &lt;a class="external" href="http://www.avoka.com/click-examples/form/dynamic/dynamic-field-set.htm" target="_blank"&gt;         Dynamic FieldSet&lt;/a&gt; demonstrates how to dynamically add a  FieldSet at runtime.       &lt;/li&gt;&lt;li&gt;         &lt;a class="external" href="http://www.avoka.com/click-examples/form/dynamic/dynamic-select.htm" target="_blank"&gt;         Dynamic Select&lt;/a&gt; demonstrates how to dynamically add fields  based on a Select field value.       &lt;/li&gt;&lt;li&gt;         &lt;a class="external" href="http://www.avoka.com/click-examples/control/disabled-demo.htm" target="_blank"&gt;         Disabled Demo&lt;/a&gt; demonstrates the behavior of disabled fields.       &lt;/li&gt;&lt;/ul&gt;Enjoy.&lt;br /&gt;&lt;br /&gt;-  The Click team&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2587500056091829705-4525863497895537713?l=click-framework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://click-framework.blogspot.com/feeds/4525863497895537713/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2587500056091829705&amp;postID=4525863497895537713' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2587500056091829705/posts/default/4525863497895537713'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2587500056091829705/posts/default/4525863497895537713'/><link rel='alternate' type='text/html' href='http://click-framework.blogspot.com/2010/05/apache-click-v220-rc1-now-available.html' title='Apache Click v2.2.0-RC1 now available'/><author><name>Bob Schellink</name><uri>http://www.blogger.com/profile/10996406110751921749</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp1.blogger.com/_Ijl8pg_nh3E/SIMk9Q4_D4I/AAAAAAAAAAk/gNfr_SDEGL8/S220/sabob200-200.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2587500056091829705.post-8717301013013523128</id><published>2010-02-19T22:02:00.001-08:00</published><updated>2010-02-19T22:03:14.334-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='click 2.1.0'/><category scheme='http://www.blogger.com/atom/ns#' term='clickide'/><title type='text'>ClickIDE 2.1.0.0 released: support Apache Click 2.1.0 and Eclipse 3.5</title><content type='html'>&lt;p&gt;The latest version of ClickIDE is available. This release supports  Click 2.1.0 and Eclipse 3.5.&lt;/p&gt;&lt;p&gt; ClickIDE is based on Eclipse and the  Eclipse Web Tools Project (WTP), and provides extended features for developing web applications using Click.&lt;br /&gt;&lt;/p&gt;&lt;p&gt; &lt;span style="font-weight: bold;"&gt;Important  links&lt;/span&gt;:&lt;br /&gt;&lt;/p&gt; &lt;ul&gt;&lt;li&gt;&lt;a href="http://click.apache.org/docs/click-ide.html"&gt;ClickIDE  Home&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.apache.org/dyn/closer.cgi/click/clickide/2.1.0.0/clickide-2.1.0.0.zip"&gt;&lt;span style="font-size:100%;"&gt;Download ClickIDE 2.1.0.0&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;b&gt;Main  features:&lt;/b&gt;&lt;br /&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Fast switching between Page classes and  templates (Ctrl+Alt+S)&lt;/li&gt;&lt;li&gt;Project creation wizard&lt;/li&gt;&lt;li&gt;Click  page creation wizard&lt;/li&gt;&lt;li&gt;Visual editor for the Click configuration  file&lt;/li&gt;&lt;li&gt;Velocity template editor&lt;/li&gt;&lt;li&gt;Spring Framework and  Apache Cayenne Integration&lt;/li&gt;&lt;li&gt;Integrated Click documentation&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;New  features and enhancements in 2.1.0.0:&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li class="change"&gt;         Upgraded to Cayenne to 3.0 M6.&lt;/li&gt;&lt;li class="change"&gt;         Added "Use PerformanceFilter" option in the project creation  wizard.       &lt;/li&gt;&lt;li class="change"&gt;         Added switching comment action in the Velocity editor ([CTRL] +  [/]).       &lt;/li&gt;&lt;li class="change"&gt;         Added (*) to required attributes in the click.xml editor.       &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Enjoy  Click!  &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2587500056091829705-8717301013013523128?l=click-framework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://click-framework.blogspot.com/feeds/8717301013013523128/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2587500056091829705&amp;postID=8717301013013523128' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2587500056091829705/posts/default/8717301013013523128'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2587500056091829705/posts/default/8717301013013523128'/><link rel='alternate' type='text/html' href='http://click-framework.blogspot.com/2010/02/clickide-2100-released-support-apache.html' title='ClickIDE 2.1.0.0 released: support Apache Click 2.1.0 and Eclipse 3.5'/><author><name>Bob Schellink</name><uri>http://www.blogger.com/profile/10996406110751921749</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp1.blogger.com/_Ijl8pg_nh3E/SIMk9Q4_D4I/AAAAAAAAAAk/gNfr_SDEGL8/S220/sabob200-200.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2587500056091829705.post-3709482601989101219</id><published>2010-02-05T21:20:00.000-08:00</published><updated>2010-02-12T07:02:38.704-08:00</updated><title type='text'>Apache Click becomes a Top-Level Project and v2.1.0 now available</title><content type='html'>Apache Click has become a new Apache  Top Level Project (TLP), signifying that Click is a well-governed project under the Apache Software Foundation &lt;a href="http://www.apache.org/foundation/how-it-works.html"&gt;principles&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Furthermore Click 2.1.0 has been released sporting many new features,  including support for &lt;a class="external" target="_blank" href="http://code.google.com/appengine/docs/java/overview.html"&gt;Google  App Engine&lt;/a&gt;,           a free Java hosting environment from Google.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://click.apache.org/"&gt;Click Home&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://click.apache.org/docs/roadmap-changes.html#2.1.0"&gt;Roadmap and Changes&lt;/a&gt; - full list of new features, improvements and bug fixes&lt;/li&gt;&lt;li&gt;&lt;a href="http://click.apache.org/docs/upgrade-path.html#2.1.0"&gt;Upgrade Path&lt;/a&gt; - please see the upgrade path when upgrading from 2.0.1 or earlier.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.apache.org/dyn/closer.cgi/click/click/2.1.0/click-2.1.0.zip"&gt;Download Click 2.1.0&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://repo1.maven.org/maven2/org/apache/click/"&gt;Maven bundles&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.avoka.com/click-examples/"&gt;Live examples&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;New features and improvements:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li class="change"&gt;           Added support for &lt;a class="external" target="_blank" href="http://code.google.com/appengine/docs/java/overview.html"&gt;Google  App Engine&lt;/a&gt;,           a free Java hosting environment from Google. This provides an  ideal           environment for students and startups to easily host their  Click           applications online. See &lt;a href="http://click.apache.org/docs/extras-api/org/apache/click/extras/gae/GoogleAppEngineListener.html"&gt;GoogleAppEngineListener&lt;/a&gt;           for details           [&lt;a target="_blank" href="https://issues.apache.org/jira/browse/CLK-560"&gt;560&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;           Added support for an in-memory &lt;a href="http://click.apache.org/docs/extras-api/org/apache/click/extras/gae/MemoryFileUploadService.html"&gt;File  Upload Service&lt;/a&gt;           that can be used for uploading files in a &lt;a class="external" target="_blank" href="http://code.google.com/appengine/docs/java/overview.html"&gt;Google  App Engine&lt;/a&gt;           environment.       &lt;/li&gt;&lt;li class="change"&gt;           Added support for templates with custom extensions through the  new           ConfigService.&lt;a href="http://click.apache.org/docs/click-api/org/apache/click/service/ConfigService.html#isTemplate%28java.lang.String%29"&gt;isTemplate&lt;/a&gt;           method. The default ConfigService implementation,  XmlConfigService, provides           support for the extensions &lt;tt&gt;.htm&lt;/tt&gt; and &lt;tt&gt;.jsp&lt;/tt&gt;,  but new extensions           can be provided in a subclass. See the &lt;a href="http://click.apache.org/docs/click-api/org/apache/click/service/XmlConfigService.html#isTemplate%28java.lang.String%29"&gt;JavaDoc&lt;/a&gt;           for details           [&lt;a target="_blank" href="https://issues.apache.org/jira/browse/CLK-568"&gt;568&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;           Added support to the Page class for conditionally including  Control           &lt;a href="http://click.apache.org/docs/click-api/org/apache/click/Page.html#getHeadElements%28%29"&gt;head  elements&lt;/a&gt;           through the new method &lt;a href="http://click.apache.org/docs/click-api/org/apache/click/Page.html#setIncludeControlHeadElements%28boolean%29"&gt;includeControlHeadElements&lt;/a&gt;           [&lt;a target="_blank" href="https://issues.apache.org/jira/browse/CLK-571"&gt;571&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;           Added support to deploy resources inside JARs from the Servlet  3.0 compliant           location, &lt;tt&gt;META-INF/resources&lt;/tt&gt;. Click's own  pre-packaged resources           are now also located in the JAR under &lt;tt&gt;META-INF/resources&lt;/tt&gt;           [&lt;a target="_blank" href="https://issues.apache.org/jira/browse/CLK-570"&gt;570&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;           Added new Calendar popup to DateField. This Calendar popup  uses           &lt;a target="_blank" class="external" href="http://code.google.com/p/calendardateselect/"&gt;Calendar Date Select&lt;/a&gt;           which is based on the Prototype JavaScript library.           &lt;p&gt;           Please note if you don't want a dependency on the Prototype  library           you can use the third-party           &lt;a class="external" target="_blank" href="http://code.google.com/p/click-calendar/"&gt;Click Calendar&lt;/a&gt;           instead.              &lt;/p&gt;&lt;/li&gt;&lt;li class="change"&gt;           Added first class support for HEAD elements such as JavaScript  and Css.           The following classes were added:           &lt;a href="http://click.apache.org/docs/click-api/org/apache/click/element/Element.html"&gt;Element&lt;/a&gt;,           &lt;a href="http://click.apache.org/docs/click-api/org/apache/click/element/ResourceElement.html"&gt;ResourceElement&lt;/a&gt;,           &lt;a href="http://click.apache.org/docs/click-api/org/apache/click/element/JsImport.html"&gt;JsImport&lt;/a&gt;,           &lt;a href="http://click.apache.org/docs/click-api/org/apache/click/element/JsScript.html"&gt;JsScript&lt;/a&gt;,           &lt;a href="http://click.apache.org/docs/click-api/org/apache/click/element/CssImport.html"&gt;CssImport&lt;/a&gt;           and &lt;a href="http://click.apache.org/docs/click-api/org/apache/click/element/CssStyle.html"&gt;CssStyle&lt;/a&gt;.           A new method was added to Page and Control: &lt;a href="http://click.apache.org/docs/click-api/org/apache/click/Control.html#getHeadElements%28%29"&gt;Control.getHeadElements()&lt;/a&gt;           and &lt;a href="http://click.apache.org/docs/click-api/org/apache/click/Page.html#getHeadElements%28%29"&gt;Page.getHeadElements()&lt;/a&gt;           [&lt;a target="_blank" href="https://issues.apache.org/jira/browse/CLK-501"&gt;501&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;           Added &lt;a href="http://click.apache.org/docs/extras-api/org/apache/click/extras/control/SubmitLink.html"&gt;SubmitLink&lt;/a&gt;  control           that can submit a Form [&lt;a target="_blank" href="https://issues.apache.org/jira/browse/CLK-519"&gt;519&lt;/a&gt;].       &lt;/li&gt;&lt;li&gt;           Added &lt;a href="http://click.apache.org/docs/extras-api/org/apache/click/extras/control/HiddenList.html"&gt;HiddenList&lt;/a&gt;  control           for rendering and submitting a list of hidden fields [&lt;a target="_blank" href="https://issues.apache.org/jira/browse/CLK-491"&gt;491&lt;/a&gt;].        &lt;/li&gt;&lt;li class="change"&gt;           Added pluggable security access controller (&lt;a href="http://click.apache.org/docs/extras-api/org/apache/click/extras/security/AccessController.html"&gt;AccessController&lt;/a&gt;)  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           [&lt;a target="_blank" href="https://issues.apache.org/click/browse/CLK-406"&gt;406&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;           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:           &lt;a href="http://click.apache.org/docs/user-guide/html/ch04s03.html#deploying-restricted-env"&gt;deploying  resources in a restricted environment&lt;/a&gt;.       &lt;/li&gt;&lt;li class="change"&gt;           Added a &lt;a href="http://click.apache.org/docs/click-api/org/apache/click/service/ResourceService.html"&gt;ResourceService&lt;/a&gt;,           for serving static resources at runtime. This service is  useful when           deploying Click applications in restricted environments. For  more details           see the section:           &lt;a href="http://click.apache.org/docs/user-guide/html/ch04s03.html#deploying-restricted-env"&gt;deploying  resources in a restricted environment&lt;/a&gt;           [&lt;a target="_blank" href="https://issues.apache.org/click/browse/CLK-564"&gt;564&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;           Added method,           &lt;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"&gt;ClickUtils.createTemplateModel&lt;/a&gt;,           which returns a template model containing objects such as the  Context           path, Page path, HTTP request, HTTP response, HTTP session  etc.       &lt;/li&gt;&lt;li class="change"&gt;           Added ability to specify a custom TreeNode icon through the  new method           TreeNode.&lt;a href="http://click.apache.org/docs/extras-api/org/apache/click/extras/tree/TreeNode.html#setIcon%28java.lang.String%29"&gt;setIcon(String)&lt;/a&gt;.           This issue was raised and fixed by Tim Hooper           [&lt;a target="_blank" href="https://issues.apache.org/jira/browse/CLK-494"&gt;494&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;           Added method &lt;a href="http://click.apache.org/docs/click-api/org/apache/click/util/Format.html#url%28java.lang.Object%29"&gt;Format.url&lt;/a&gt;           for encoding URL's in templates           [&lt;a target="_blank" href="https://issues.apache.org/jira/browse/CLK-399"&gt;399&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;           Added method           &lt;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"&gt;FieldColumn.setProperty&lt;/a&gt;           that can be overriden to provide custom binding for complex           domain objects. This issue was raised and fixed by WarnerJan  Veldhuis           [&lt;a target="_blank" href="https://issues.apache.org/jira/browse/CLK-528"&gt;528&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;           Added TypeConverter configuration option to ClickServlet.            See &lt;a href="http://click.apache.org/docs/click-api/org/apache/click/ClickServlet.html#getTypeConverter%28%29"&gt;getTypeConverter()&lt;/a&gt;           method for details. This issue was raised Joseph Schmidt and  fixed by Adrian A.           [&lt;a target="_blank" href="https://issues.apache.org/jira/browse/CLK-539"&gt;539&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;           Added &lt;a href="http://click.apache.org/docs/extras-api/org/apache/click/extras/service/Slf4jLogService.html"&gt;Slf4jLogService&lt;/a&gt;           for supporting multiple application servers.            This issue was raised Oliver Burn           [&lt;a target="_blank" href="https://issues.apache.org/jira/browse/CLK-555"&gt;555&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;           Added &lt;a href="http://click.apache.org/docs/click-api/org/apache/click/util/Bindable.html"&gt;@Bindable&lt;/a&gt;             annotation support for page field autobinding. @Bindable  supports public,           protected and private Page variables           [&lt;a target="_blank" href="https://issues.apache.org/jira/browse/CLK-556"&gt;556&lt;/a&gt;,             &lt;a target="_blank" href="https://issues.apache.org/jira/browse/CLK-599"&gt;599&lt;/a&gt;            ].       &lt;/li&gt;&lt;li class="change"&gt;         Added property files with translation for the Russian language.         This issue was raised and fixed by Andrey Rybin         [&lt;a target="_blank" href="https://issues.apache.org/jira/browse/CLK-607"&gt;607&lt;/a&gt;],         [&lt;a target="_blank" href="https://issues.apache.org/jira/browse/CLK-611"&gt;611&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;         Added new Tree methods         &lt;a href="http://click.apache.org/docs/extras-api/org/apache/click/extras/tree/Tree.html#setWidth%28java.lang.String%29"&gt;setWidth&lt;/a&gt;  /         &lt;a href="http://click.apache.org/docs/extras-api/org/apache/click/extras/tree/Tree.html#getWidth%28%29"&gt;getWidth&lt;/a&gt;         and &lt;a href="http://click.apache.org/docs/extras-api/org/apache/click/extras/tree/Tree.html#setHeight%28java.lang.String%29"&gt;setHeight&lt;/a&gt;  /         &lt;a href="http://click.apache.org/docs/extras-api/org/apache/click/extras/tree/Tree.html#getHeight%28%29"&gt;getHeight&lt;/a&gt;.         Also fixed rendering issues in IE6/7 for long node labels that  overflow         the tree width [&lt;a target="_blank" href="https://issues.apache.org/jira/browse/CLK-616"&gt;616&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;           The click.dtd has been published to           &lt;a href="http://click.apache.org/dtds/click-2.1.dtd"&gt;http://click.apache.org/dtds/click-2.1.dtd&lt;/a&gt;.&lt;/li&gt;&lt;li class="change"&gt;          If you want your configuration to conform to the click.dtd,  include           the following declaration in your click.xml:&lt;br /&gt;&lt;pre&gt;&amp;lt;!DOCTYPE click-app PUBLIC&lt;br /&gt;"-//Apache Software Foundation//DTD Click Configuration 2.1//EN"&lt;br /&gt;"http://click.apache.org/dtds/click_2_1.dtd"&amp;gt;&lt;/pre&gt;&lt;/li&gt;&lt;li class="change"&gt;           Improved Form validation to allow Form subclasses to override  the           &lt;a href="http://click.apache.org/docs/click-api/org/apache/click/control/Form.html#validate%28%29"&gt;validate&lt;/a&gt;           method and implement cross-field validation. The following           changes were made: the previous &lt;tt&gt;validate&lt;/tt&gt; method was  renamed           to &lt;a href="http://click.apache.org/docs/click-api/org/apache/click/control/Form.html#validateFileUpload%28%29"&gt;validateFileUpload&lt;/a&gt;           and a new empty &lt;a href="http://click.apache.org/docs/click-api/org/apache/click/control/Form.html#validate%28%29"&gt;validate&lt;/a&gt;           method was introduced, that can safely be overridden in  subclasses           [&lt;a target="_blank" href="https://issues.apache.org/jira/browse/CLK-572"&gt;572&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;           Improved Page redirect to support parameters. See the new Page  methods           &lt;a href="http://click.apache.org/docs/click-api/org/apache/click/Page.html#setRedirect%28java.lang.String,%20java.util.Map%29"&gt;setRedirect(String,  Map)&lt;/a&gt;           and &lt;a href="http://click.apache.org/docs/click-api/org/apache/click/Page.html#setRedirect%28java.lang.Class,%20java.util.Map%29"&gt;setRedirect(Class,  Map)&lt;/a&gt;           This issue was raised and fixed by Adrian           [&lt;a target="_blank" href="https://issues.apache.org/jira/browse/CLK-536"&gt;536&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;           Improved Link Controls to support multivalued parameters  through the           new AbstractLink methods &lt;a href="http://click.apache.org/docs/click-api/org/apache/click/control/AbstractLink.html#getParameterValues%28java.lang.String%29"&gt;getParameterValues()&lt;/a&gt;           and &lt;a href="http://click.apache.org/docs/click-api/org/apache/click/control/AbstractLink.html#setParameterValues%28java.lang.String,%20java.lang.String[]%29"&gt;setParameterValues()&lt;/a&gt;           [&lt;a target="_blank" href="https://issues.apache.org/jira/browse/CLK-554"&gt;554&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;           Improved Table to support very large datasets by promoting the  methods           &lt;a href="http://click.apache.org/docs/click-api/org/apache/click/control/Table.html#getFirstRow%28%29"&gt;getFirstRow()&lt;/a&gt;           and &lt;a href="http://click.apache.org/docs/click-api/org/apache/click/control/Table.html#getLastRow%28%29"&gt;getLastRow()&lt;/a&gt;           as public. These methods provide the necessary information to  only           retrieve the displayed rows           [&lt;a target="_blank" href="https://issues.apache.org/jira/browse/CLK-504"&gt;504&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;           Improved LinkDecorator to support target identfier property  parameter names.           This issue was raised by Demetrios Kyriakis and fixed by fixed  by Adrian A.           [&lt;a target="_blank" href="https://issues.apache.org/jira/browse/CLK-400"&gt;400&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;           Improved PickList methods &lt;a href="http://click.apache.org/docs/extras-api/org/apache/click/extras/control/PickList.html#getValueObject%28%29"&gt;getValueObject()&lt;/a&gt;           and &lt;a href="http://click.apache.org/docs/extras-api/org/apache/click/extras/control/PickList.html#setValueObject%28java.lang.Object%29"&gt;setValueObject(Object)&lt;/a&gt;           to delegate to &lt;a href="http://click.apache.org/docs/extras-api/org/apache/click/extras/control/PickList.html#getSelectedValues%28%29"&gt;getSelectedValues()&lt;/a&gt;           and &lt;a href="http://click.apache.org/docs/extras-api/org/apache/click/extras/control/PickList.html#addSelectedValue%28java.lang.String%29"&gt;addSelectedValue(String)&lt;/a&gt;           respectively [&lt;a target="_blank" href="https://issues.apache.org/jira/browse/CLK-490"&gt;490&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;           Improved Spring integration with           &lt;a href="http://click.apache.org/docs/extras-api/org/apache/click/extras/spring/SpringClickServlet.html"&gt;SpringClickServlet&lt;/a&gt;  and           &lt;a href="http://click.apache.org/docs/extras-api/org/apache/click/extras/spring/PageScopeResolver.html"&gt;PageScopeResolver&lt;/a&gt;,           supporting Spring instantiated Pages with @Component  configuration           [&lt;a target="_blank" href="https://issues.apache.org/jira/browse/CLK-534"&gt;534&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;           Improved CompressionServletResponseWrapper and  CompressionResponseStream classes to have           public visibility to enable use in custom servlet Filters           [&lt;a target="_blank" href="https://issues.apache.org/click/browse/CLK-547"&gt;547&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;           Improved Menu control to render attribute class="selected"  when the menu item           is selected. This issue was raised and fixed by Frederic Daoud           [&lt;a target="_blank" href="https://issues.apache.org/click/browse/CLK-551"&gt;551&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;           Improved PerformanceFilter to implement exclude-paths  filtering           [&lt;a target="_blank" href="https://issues.apache.org/click/browse/CLK-498"&gt;498&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;           Improved XmlConfigService to scan for deployable resources  inside folders           on the classpath           [&lt;a target="_blank" href="https://issues.apache.org/click/browse/CLK-552"&gt;552&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;           Improved Cayenne DataContextFilter, including adding support  for LifecycleListener            registration           [&lt;a target="_blank" href="https://issues.apache.org/jira/browse/CLK-559"&gt;559&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;           Improved &lt;a href="http://click.apache.org/docs/click-api/org/apache/click/control/AbstractLink.html"&gt;AbstractLink&lt;/a&gt;           to allow rendering of both icon and label in Link controls  (default           behavior renders either a label or an icon)           [&lt;a target="_blank" href="https://issues.apache.org/jira/browse/CLK-535"&gt;535&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;           Improved Page and Control message handling with null args.           This issue was raised by WarnerJan Veldhuis           [&lt;a target="_blank" href="https://issues.apache.org/jira/browse/CLK-600"&gt;600&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;           Fixed resource deployment on JBoss 5 and up. The solution is  based on           the work done by the &lt;a class="external" target="_blank" href="http://www.stripesframework.org/"&gt;Stripes Framework&lt;/a&gt;           developers           [&lt;a target="_blank" href="https://issues.apache.org/jira/browse/CLK-589"&gt;589&lt;/a&gt;].&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Deprecated:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li class="change"&gt;           Deprecated methods: &lt;a href="http://click.apache.org/docs/click-api/org/apache/click/Control.html#getHtmlImports%28%29"&gt;Control.getHtmlImports()&lt;/a&gt; and           &lt;a href="http://click.apache.org/docs/click-api/org/apache/click/Page.html#getHtmlImports%28%29"&gt;Page.getHtmlImports()&lt;/a&gt;.           These methods have been deprecated in favor of           &lt;a href="http://click.apache.org/docs/click-api/org/apache/click/Control.html#getHeadElements%28%29"&gt;Control.getHeadElements()&lt;/a&gt;           and &lt;a href="http://click.apache.org/docs/click-api/org/apache/click/Page.html#getHeadElements%28%29"&gt;Page.getHeadElements()&lt;/a&gt;.       &lt;/li&gt;&lt;li class="change"&gt;Deprecated methods: &lt;a href="http://click.apache.org/docs/click-api/org/apache/click/Page.html#getPageImports%28%29"&gt;Page.getPageImports()&lt;/a&gt;           and &lt;a href="http://click.apache.org/docs/click-api/org/apache/click/Page.html#setPageImports%28org.apache.click.util.PageImports%29"&gt;Page.setPageImports()&lt;/a&gt;.           These methods have been deprecated in favor of           &lt;a href="http://click.apache.org/docs/click-api/org/apache/click/Page.html#getHeadElements%28%29"&gt;Page.getHeadElements()&lt;/a&gt;.       &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Updated third-party libraries:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li class="change"&gt;           Update Velocity library to version &lt;a href="http://velocity.apache.org/engine/releases/velocity-1.6.2/"&gt;1.6.3&lt;/a&gt;.       &lt;/li&gt;&lt;li class="change"&gt;           Update Cayenne library to version &lt;a href="http://cayenne.apache.org/"&gt;3.0M6&lt;/a&gt;.       &lt;/li&gt;&lt;li style="text-align: left;" class="change"&gt;           Update Prototype.js library to version &lt;a href="http://www.prototypejs.org/2009/9/1/prototype-1-6-1-released"&gt;1.6.1&lt;/a&gt;.       &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;New Documentation:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Documentation has been converted to Docbook and are made available in         three different flavors: &lt;a href="file:///C:/dev/os/apache/click/click-svn/documentation/docs/user-guide.html"&gt;PDF, HTML (single page) and HTML (multiple pages)&lt;/a&gt;.         Thanks to Gilberto C Andrade for doing the conversion         [&lt;a target="_blank" href="https://issues.apache.org/jira/browse/CLK-482"&gt;482&lt;/a&gt;].       &lt;/li&gt;&lt;li&gt;Added a new section, &lt;a href="http://click.apache.org/docs/user-guide/html/ch04s03.html#deploying-restricted-env"&gt;Deploying  resources in a restricted environment&lt;/a&gt;,         describing how to deploy static resources in environments where         WAR/EAR are not unpacked or where file system permissions are         restricted, such as         &lt;a class="external" target="_blank" href="http://code.google.com/appengine/docs/java/overview.html"&gt;Google  App Engine&lt;/a&gt;.       &lt;/li&gt;&lt;li&gt;Added documentation describing the new HEAD element support.         Please see the new section on &lt;a href="http://click.apache.org/docs/user-guide/html/ch02s12.html"&gt;Page HEAD elements&lt;/a&gt; and         the section on &lt;a href="http://click.apache.org/docs/user-guide/html/ch03s05.html"&gt;Control HEAD elements&lt;/a&gt;.       &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;New examples:     &lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;         &lt;a target="_blank" class="external" href="http://www.avoka.com/click-examples/general/page-head-demo.htm"&gt;         Page HEAD elements&lt;/a&gt; demonstrates how to add         &lt;a href="http://click.apache.org/docs/click-api/org/apache/click/element/JsImport.html"&gt;JsImport&lt;/a&gt;,         &lt;a href="http://click.apache.org/docs/click-api/org/apache/click/element/JsScript.html"&gt;JsScript&lt;/a&gt;,         &lt;a href="http://click.apache.org/docs/click-api/org/apache/click/element/CssImport.html"&gt;CssImport&lt;/a&gt;         and &lt;a href="http://click.apache.org/docs/click-api/org/apache/click/element/CssStyle.html"&gt;CssStyle&lt;/a&gt;         HEAD elements to a Page.       &lt;/li&gt;&lt;li&gt;         &lt;a target="_blank" class="external" href="http://www.avoka.com/click-examples/general/control-head-demo.htm"&gt;         Control HEAD elements&lt;/a&gt; demonstrates how to add         &lt;a href="http://click.apache.org/docs/click-api/org/apache/click/element/JsImport.html"&gt;JsImport&lt;/a&gt; and         &lt;a href="http://click.apache.org/docs/click-api/org/apache/click/element/CssImport.html"&gt;CssImport&lt;/a&gt;         HEAD elements to a custom Control.       &lt;/li&gt;&lt;li&gt;         &lt;a target="_blank" class="external" href="http://www.avoka.com/click-examples/control/submit-link-demo.htm"&gt;           SubmitLink Demo&lt;/a&gt; shows how to use the new &lt;a href="http://click.apache.org/docs/extras-api/org/apache/click/extras/control/SubmitLink.html"&gt;SubmitLink&lt;/a&gt; control.       &lt;/li&gt;&lt;li&gt;         &lt;a target="_blank" class="external" href="http://www.avoka.com/click-examples/table/large-dataset-demo.htm"&gt;         Large Dataset&lt;/a&gt; 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.       &lt;/li&gt;&lt;li&gt;         &lt;a target="_blank" class="external" href="http://www.avoka.com/click-examples/panel/reusable-panel-demo.htm"&gt;           Reusable Panel&lt;/a&gt; is an example of a reusable Panel           which provides a Form for capturing Client details.       &lt;/li&gt;&lt;li&gt;         &lt;a target="_blank" class="external" href="http://www.avoka.com/click-examples/quartz/quartz-job-scheduler.htm"&gt;           Quartz Job Scheduler&lt;/a&gt; is an example demonstrating how to integrate the Quartz Job Scheduling framework           into a Click application.       &lt;/li&gt;&lt;li&gt;&lt;a target="_blank" class="external" href="http://www.avoka.com/click-examples/general/excel-export.htm"&gt;Excel  Table Exporter&lt;/a&gt; example demonstrates how to export a Click Table           to an Excel spreadsheet using           &lt;a class="external" target="_blank" href="http://poi.apache.org/"&gt;Apache POI&lt;/a&gt;.       &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Enjoy.&lt;br /&gt;&lt;br /&gt;- The Click team&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2587500056091829705-3709482601989101219?l=click-framework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://click-framework.blogspot.com/feeds/3709482601989101219/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2587500056091829705&amp;postID=3709482601989101219' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2587500056091829705/posts/default/3709482601989101219'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2587500056091829705/posts/default/3709482601989101219'/><link rel='alternate' type='text/html' href='http://click-framework.blogspot.com/2010/02/click-210-now-available.html' title='Apache Click becomes a Top-Level Project and v2.1.0 now available'/><author><name>Bob Schellink</name><uri>http://www.blogger.com/profile/10996406110751921749</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp1.blogger.com/_Ijl8pg_nh3E/SIMk9Q4_D4I/AAAAAAAAAAk/gNfr_SDEGL8/S220/sabob200-200.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2587500056091829705.post-3637712388786607675</id><published>2010-01-05T13:25:00.000-08:00</published><updated>2010-01-06T03:43:39.898-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='book'/><title type='text'>New book: Getting Started With Apache Click</title><content type='html'>We start 2010 with some great news. &lt;a href="http://www.stripesbook.com/blog/"&gt;Freddy Daoud&lt;/a&gt; just announced his new book: &lt;a href="http://www.fdaoud.com/clickbook/"&gt;Getting started with Apache Click&lt;/a&gt;. Finally, a book is available on the Click framework that provides a great way for getting started quickly.&lt;br /&gt;&lt;br /&gt;From the website: &lt;blockquote&gt;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.     &lt;/blockquote&gt;There is also a chapter on authentication and authorization which integrates Click and &lt;a href="http://incubator.apache.org/shiro/"&gt;Apache Shiro&lt;/a&gt;, an open source security framework also hosted at Apache.&lt;br /&gt;&lt;br /&gt;You can view the book table of contents &lt;a href="http://www.fdaoud.com/clickbook/toc.html"&gt;here&lt;/a&gt;, and download the example source code &lt;a href="http://www.fdaoud.com/clickbook/examples.zip"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Enjoy.&lt;br /&gt;&lt;br /&gt;The Click team.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2587500056091829705-3637712388786607675?l=click-framework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://click-framework.blogspot.com/feeds/3637712388786607675/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2587500056091829705&amp;postID=3637712388786607675' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2587500056091829705/posts/default/3637712388786607675'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2587500056091829705/posts/default/3637712388786607675'/><link rel='alternate' type='text/html' href='http://click-framework.blogspot.com/2010/01/new-book-getting-started-with-apache.html' title='New book: Getting Started With Apache Click'/><author><name>Bob Schellink</name><uri>http://www.blogger.com/profile/10996406110751921749</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp1.blogger.com/_Ijl8pg_nh3E/SIMk9Q4_D4I/AAAAAAAAAAk/gNfr_SDEGL8/S220/sabob200-200.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2587500056091829705.post-1769259514910463210</id><published>2009-10-24T01:23:00.000-07:00</published><updated>2009-10-24T01:33:13.946-07:00</updated><title type='text'>Netbeans plugin released for Apache Click</title><content type='html'>&lt;p&gt;&lt;a href="http://hantsy.blogspot.com/"&gt;Hantsy Bai&lt;/a&gt; has announced the release of a &lt;a href="http://hantsy.blogspot.com/2009/10/click-for-netbeans-plugin-10-is-avai.html"&gt;Netbeans plugin&lt;/a&gt; for Apache Click. Netbeans users can now enjoy the same features provided by &lt;a href="http://incubator.apache.org/click/docs/click-ide.html"&gt;ClickIDE&lt;/a&gt;, the Eclipse based plugin.&lt;/p&gt;&lt;p&gt;Please note the plugin targets Netbeans 6.7.1 and might not work with earlier versions.&lt;/p&gt;&lt;p&gt;Features of the plugin includes:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Wizard for creating a new Click project&lt;/li&gt;&lt;li&gt;Wizard for creating new pages and templates&lt;/li&gt;&lt;li&gt;Quickly switch between a Page class, template and property (you can also define keyboard shortcuts for these functions)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Provides basic code completion, error checking, hyperlinking and refactoring for click.xml and menu.xml&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;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.&lt;/p&gt;&lt;p&gt;Here are some screenshots of the plugin in action.&lt;/p&gt;&lt;br /&gt;• Create a new Click project:&lt;p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Ijl8pg_nh3E/SuK7Gq57whI/AAAAAAAAADg/stOpKEb8310/s1600-h/create-click-project.png"&gt;&lt;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" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;• Create a new Click page and template:&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Ijl8pg_nh3E/SuK7R64gXfI/AAAAAAAAADo/MosPiL9y7OQ/s1600-h/create-click-page.png"&gt;&lt;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" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;• Switch to the Page template:&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;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"&gt;&lt;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" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;• Switch to the Page class:&lt;/p&gt;&lt;p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Ijl8pg_nh3E/SuK7k6Ax0qI/AAAAAAAAAD4/-ZLrKoSrIcc/s1600-h/goto-page.png"&gt;&lt;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" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;• Define keyboard shortcuts for the "Go to Page Class", "Go to Page Template" and "Go to Page Properties" functions:&lt;/p&gt;&lt;p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Ijl8pg_nh3E/SuK7u5iN1GI/AAAAAAAAAEA/F-EKu_1DYKc/s1600-h/shortcuts.png"&gt;&lt;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" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2587500056091829705-1769259514910463210?l=click-framework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://click-framework.blogspot.com/feeds/1769259514910463210/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2587500056091829705&amp;postID=1769259514910463210' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2587500056091829705/posts/default/1769259514910463210'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2587500056091829705/posts/default/1769259514910463210'/><link rel='alternate' type='text/html' href='http://click-framework.blogspot.com/2009/10/netbeans-plugin-released-for-apache.html' title='Netbeans plugin released for Apache Click'/><author><name>Bob Schellink</name><uri>http://www.blogger.com/profile/10996406110751921749</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp1.blogger.com/_Ijl8pg_nh3E/SIMk9Q4_D4I/AAAAAAAAAAk/gNfr_SDEGL8/S220/sabob200-200.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_Ijl8pg_nh3E/SuK7Gq57whI/AAAAAAAAADg/stOpKEb8310/s72-c/create-click-project.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2587500056091829705.post-6767493481340133070</id><published>2009-07-19T03:04:00.000-07:00</published><updated>2009-07-19T03:07:13.072-07:00</updated><title type='text'>Click Calendar 1.0.2 now available</title><content type='html'>&lt;p&gt;Click Calendar 1.0.2 has been released fixing a bug in DateField that can disable Fields when the popup is closed.&lt;br /&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a title="Click Calendar" href="http://code.google.com/p/click-calendar/"&gt;Click Calendar Home&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a title="Click Calendar Jar" href="http://click-calendar.googlecode.com/files/click-calendar-1.0.2.jar"&gt;Download Click Calendar 1.0.2&lt;br /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a title="Maven Bundles" href="http://repo2.maven.org/maven2/net/sf/click/click-calendar/"&gt;Maven bundle&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Changes are:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li class="change"&gt; Fixed DateField calendar popup which blocked keyboard input events after popup was destroyed. This issue was raised by Christophe FOIRET [&lt;a target="_blank" href="https://issues.apache.org/click/browse/CLK-567"&gt;567&lt;/a&gt;].       &lt;/li&gt;&lt;/ul&gt;The Click team.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2587500056091829705-6767493481340133070?l=click-framework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://click-framework.blogspot.com/feeds/6767493481340133070/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2587500056091829705&amp;postID=6767493481340133070' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2587500056091829705/posts/default/6767493481340133070'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2587500056091829705/posts/default/6767493481340133070'/><link rel='alternate' type='text/html' href='http://click-framework.blogspot.com/2009/07/click-calendar-102-now-available.html' title='Click Calendar 1.0.2 now available'/><author><name>Bob Schellink</name><uri>http://www.blogger.com/profile/10996406110751921749</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp1.blogger.com/_Ijl8pg_nh3E/SIMk9Q4_D4I/AAAAAAAAAAk/gNfr_SDEGL8/S220/sabob200-200.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2587500056091829705.post-3784993787360145377</id><published>2009-07-18T01:37:00.000-07:00</published><updated>2009-07-18T10:12:20.838-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='1.5'/><category scheme='http://www.blogger.com/atom/ns#' term='release'/><title type='text'>Click 1.5.3 now available</title><content type='html'>Click 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.    &lt;br /&gt;&lt;br /&gt;Please note that this is a non-Apache release. For new projects use &lt;a href="http://incubator.apache.org/click/"&gt;Apache Click&lt;/a&gt; which is continuing the development of this framework.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://click.sourceforge.net/index.html"&gt;Click Home&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://click.sourceforge.net/docs/roadmap-changes.html#1.5.3"&gt;Roadmap and Changes&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://click.sourceforge.net/docs/roadmap-changes.html#1.5-upgrade-path"&gt;Upgrade Path&lt;/a&gt; - please see the upgrade path when upgrading from a previous release.&lt;/li&gt;&lt;li&gt;&lt;a href="https://sourceforge.net/projects/click/files/"&gt;Download Click 1.5.3&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://repo1.maven.org/maven2/net/sf/click/"&gt;Maven bundles&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.avoka.com/click-examples/"&gt;Live examples&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Changes are:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li class="change"&gt;           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           [&lt;a target="_blank" href="https://issues.apache.org/click/browse/CLK-567"&gt;567&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;           Fixed maven pom to refer to the correct Velocity &lt;tt&gt;groupId&lt;/tt&gt;.       &lt;/li&gt;&lt;li class="change"&gt;Updated Velocity documentation to version 1.6.2.       &lt;/li&gt;&lt;/ul&gt;The Click team.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2587500056091829705-3784993787360145377?l=click-framework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://click-framework.blogspot.com/feeds/3784993787360145377/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2587500056091829705&amp;postID=3784993787360145377' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2587500056091829705/posts/default/3784993787360145377'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2587500056091829705/posts/default/3784993787360145377'/><link rel='alternate' type='text/html' href='http://click-framework.blogspot.com/2009/07/click-153-now-available.html' title='Click 1.5.3 now available'/><author><name>Bob Schellink</name><uri>http://www.blogger.com/profile/10996406110751921749</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp1.blogger.com/_Ijl8pg_nh3E/SIMk9Q4_D4I/AAAAAAAAAAk/gNfr_SDEGL8/S220/sabob200-200.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2587500056091829705.post-4572766649092972843</id><published>2009-06-13T16:56:00.000-07:00</published><updated>2009-07-07T08:47:55.522-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='2.1.0'/><category scheme='http://www.blogger.com/atom/ns#' term='release'/><title type='text'>Click 2.1.0-RC1 now available</title><content type='html'>The 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.&lt;br /&gt;&lt;br /&gt;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: &lt;a target="_blank" href="http://incubator.apache.org/click/docs/user-guide.html"&gt;PDF, HTML (single page) and HTML (multiple pages)&lt;/a&gt;.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://incubator.apache.org/click/"&gt;Click Home&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://incubator.apache.org/click/docs/roadmap-changes.html#2.1.0-RC1"&gt;Roadmap and Changes&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://incubator.apache.org/click/docs/upgrade-path.html#2.1.0"&gt;Upgrade Path&lt;/a&gt; - please see the upgrade path when upgrading from 2.0.1 or earlier.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.apache.org/dyn/closer.cgi/incubator/click/click/2.1.0-RC1/click-2.1.0-RC1-incubating.zip"&gt;Download Click 2.1.0-RC1&lt;br /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://repo1.maven.org/maven2/org/apache/click/"&gt;Maven bundles&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.avoka.com/click-examples/"&gt;Live examples&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;New features:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li class="change"&gt;           Added new Calendar popup to DateField. This Calendar popup uses           &lt;a target="_blank" class="external" href="http://code.google.com/p/calendardateselect/"&gt;Calendar Date Select&lt;/a&gt;           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           &lt;a class="external" target="_blank" href="http://code.google.com/p/click-calendar/"&gt;Click Calendar&lt;/a&gt;           instead.              &lt;/li&gt;&lt;li class="change"&gt;           Added first class support for HEAD elements such as JavaScript and Css.           The following classes were added:           &lt;a href="http://incubator.apache.org/click/docs/click-api/org/apache/click/element/Element.html"&gt;Element&lt;/a&gt;,           &lt;a href="http://incubator.apache.org/click/docs/click-api/org/apache/click/element/ResourceElement.html"&gt;ResourceElement&lt;/a&gt;,           &lt;a href="http://incubator.apache.org/click/docs/click-api/org/apache/click/element/JsImport.html"&gt;JsImport&lt;/a&gt;,           &lt;a href="http://incubator.apache.org/click/docs/click-api/org/apache/click/element/JsScript.html"&gt;JsScript&lt;/a&gt;,           &lt;a href="http://incubator.apache.org/click/docs/click-api/org/apache/click/element/CssImport.html"&gt;CssImport&lt;/a&gt;           and &lt;a href="http://incubator.apache.org/click/docs/click-api/org/apache/click/element/CssStyle.html"&gt;CssStyle&lt;/a&gt;.           A new method was added to Page and Control: &lt;a href="http://incubator.apache.org/click/docs/click-api/org/apache/click/Control.html#getHeadElements%28%29"&gt;Control.getHeadElements()&lt;/a&gt;           and &lt;a href="http://incubator.apache.org/click/docs/click-api/org/apache/click/Page.html#getHeadElements%28%29"&gt;Page.getHeadElements()&lt;/a&gt;           [&lt;a target="_blank" href="https://issues.apache.org/jira/browse/CLK-501"&gt;501&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;           Added &lt;a href="http://incubator.apache.org/click/docs/extras-api/org/apache/click/extras/control/SubmitLink.html"&gt;SubmitLink&lt;/a&gt; control           that can submit a Form [&lt;a target="_blank" href="https://issues.apache.org/jira/browse/CLK-519"&gt;519&lt;/a&gt;].       &lt;/li&gt;&lt;li&gt;           Added &lt;a href="http://incubator.apache.org/click/docs/extras-api/org/apache/click/extras/control/HiddenList.html"&gt;HiddenList&lt;/a&gt; control           for rendering and submitting a list of hidden fields [&lt;a target="_blank" href="https://issues.apache.org/jira/browse/CLK-491"&gt;491&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;           Added plug-able security access controller (&lt;a href="http://incubator.apache.org/click/docs/extras-api/org/apache/click/extras/security/AccessController.html"&gt;AccessController&lt;/a&gt;) 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 [&lt;a target="_blank" href="https://issues.apache.org/click/browse/CLK-406"&gt;406&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;           Added method,           &lt;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"&gt;ClickUtils.createTemplateModel&lt;/a&gt;, 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.&lt;br /&gt;&lt;/li&gt;&lt;li class="change"&gt;           Added ability to specify a custom TreeNode icon through the new method           TreeNode.&lt;a href="http://incubator.apache.org/click/docs/extras-api/org/apache/click/extras/tree/TreeNode.html#setIcon%28java.lang.String%29"&gt;setIcon(String)&lt;/a&gt;.           This issue was raised and fixed by Tim Hooper           [&lt;a target="_blank" href="https://issues.apache.org/jira/browse/CLK-494"&gt;494&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;           Added method &lt;a href="http://incubator.apache.org/click/docs/click-api/org/apache/click/util/Format.html#url%28java.lang.Object%29"&gt;Format.url&lt;/a&gt;           for encoding URL's in templates           [&lt;a target="_blank" href="https://issues.apache.org/jira/browse/CLK-399"&gt;399&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;           Added method           &lt;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"&gt;FieldColumn.setProperty&lt;/a&gt;           that can be overriden to provide custom binding for complex           domain objects. This issue was raised and fixed by WarnerJan Veldhuis           [&lt;a target="_blank" href="https://issues.apache.org/jira/browse/CLK-528"&gt;528&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;           Added TypeConverter configuration option to ClickServlet.            See &lt;a href="http://incubator.apache.org/click/docs/click-api/org/apache/click/ClickServlet.html#getTypeConverter%28%29"&gt;getTypeConverter()&lt;/a&gt;           method for details. This issue was raised Joseph Schmidt and fixed by Adrian A.           [&lt;a target="_blank" href="https://issues.apache.org/jira/browse/CLK-539"&gt;539&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;           Added &lt;a href="http://incubator.apache.org/click/docs/extras-api/org/apache/click/extras/service/Slf4jLogService.html"&gt;Slf4jLogService&lt;/a&gt;           for supporting multiple application servers.            This issue was raised Oliver Burn           [&lt;a target="_blank" href="https://issues.apache.org/jira/browse/CLK-555"&gt;555&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;           Added &lt;a href="http://incubator.apache.org/click/docs/click-api/org/apache/click/util/Bindable.html"&gt;@Bindable&lt;/a&gt;            annotation support for page field autobinding           [&lt;a target="_blank" href="https://issues.apache.org/jira/browse/CLK-556"&gt;556&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;           Improved Page redirect to support parameters. See the new Page methods           &lt;a href="http://incubator.apache.org/click/docs/click-api/org/apache/click/Page.html#setRedirect%28java.lang.String,%20java.util.Map%29"&gt;setRedirect(String, Map)&lt;/a&gt;           and &lt;a href="http://incubator.apache.org/click/docs/click-api/org/apache/click/Page.html#setRedirect%28java.lang.Class,%20java.util.Map%29"&gt;setRedirect(Class, Map)&lt;/a&gt;           This issue was raised and fixed by Adrian           [&lt;a target="_blank" href="https://issues.apache.org/jira/browse/CLK-536"&gt;536&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;           Improved Link Controls to support multivalued parameters through the           new AbstractLink methods &lt;a href="http://incubator.apache.org/click/docs/click-api/org/apache/click/control/AbstractLink.html#getParameterValues%28java.lang.String%29"&gt;getParameterValues()&lt;/a&gt;           and &lt;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"&gt;setParameterValues()&lt;/a&gt;           [&lt;a target="_blank" href="https://issues.apache.org/jira/browse/CLK-554"&gt;554&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;           Improved Table to support very large datasets by promoting the methods           &lt;a href="http://incubator.apache.org/click/docs/click-api/org/apache/click/control/Table.html#getFirstRow%28%29"&gt;getFirstRow()&lt;/a&gt;           and &lt;a href="http://incubator.apache.org/click/docs/click-api/org/apache/click/control/Table.html#getLastRow%28%29"&gt;getLastRow()&lt;/a&gt;           as public. These methods provide the necessary information to only           retrieve the displayed rows           [&lt;a target="_blank" href="https://issues.apache.org/jira/browse/CLK-504"&gt;504&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;           Improved LinkDecorator to support target identfier property parameter names.           This issue was raised by Demetrios Kyriakis and fixed by fixed by Adrian A.           [&lt;a target="_blank" href="https://issues.apache.org/jira/browse/CLK-400"&gt;400&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;           Improved PickList methods &lt;a href="http://incubator.apache.org/click/docs/extras-api/org/apache/click/extras/control/PickList.html#getValueObject%28%29"&gt;getValueObject()&lt;/a&gt;           and &lt;a href="http://incubator.apache.org/click/docs/extras-api/org/apache/click/extras/control/PickList.html#setValueObject%28java.lang.Object%29"&gt;setValueObject(Object)&lt;/a&gt;           to delegate to &lt;a href="http://incubator.apache.org/click/docs/extras-api/org/apache/click/extras/control/PickList.html#getSelectedValues%28%29"&gt;getSelectedValues()&lt;/a&gt;           and &lt;a href="http://incubator.apache.org/click/docs/extras-api/org/apache/click/extras/control/PickList.html#addSelectedValue%28java.lang.String%29"&gt;addSelectedValue(String)&lt;/a&gt;           respectively [&lt;a target="_blank" href="https://issues.apache.org/jira/browse/CLK-490"&gt;490&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;           Improved Spring integration with           &lt;a href="http://incubator.apache.org/click/docs/extras-api/org/apache/click/extras/spring/SpringClickServlet.html"&gt;SpringClickServlet&lt;/a&gt; and           &lt;a href="http://incubator.apache.org/click/docs/extras-api/org/apache/click/extras/spring/PageScopeResolver.html"&gt;PageScopeResolver&lt;/a&gt;,           supporting Spring instantiated Pages with @Component configuration           [&lt;a target="_blank" href="https://issues.apache.org/jira/browse/CLK-534"&gt;534&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;           Improved CompressionServletResponseWrapper and CompressionResponseStream classes to have           public visibility to enable use in custom servlet Filters           [&lt;a target="_blank" href="https://issues.apache.org/click/browse/CLK-547"&gt;547&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;           Improved Menu control to render attribute class="selected" when the menu item           is selected. This issue was raised and fixed by Frederic Daoud           [&lt;a target="_blank" href="https://issues.apache.org/click/browse/CLK-551"&gt;551&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;           Improved PerformanceFilter to implement exclude-paths filtering           [&lt;a target="_blank" href="https://issues.apache.org/click/browse/CLK-498"&gt;498&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;           Improved XmlConfigService to scan for deployable resources inside folders           on the classpath           [&lt;a target="_blank" href="https://issues.apache.org/click/browse/CLK-552"&gt;552&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;           Improved Cayenne DataContextFilter, including adding support for LifecycleListener            registration           [&lt;a target="_blank" href="https://issues.apache.org/jira/browse/CLK-559"&gt;559&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;           Fixed PerformanceFilter and CompressionFilter to properly handle           &lt;tt&gt;&lt;jsp:include&gt;&lt;/jsp:include&gt;&lt;/tt&gt; requests           [&lt;a target="_blank" href="https://issues.apache.org/jira/browse/CLK-557"&gt;557&lt;/a&gt;].       &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Deprecated:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li class="change"&gt;           Deprecated methods: &lt;a href="http://incubator.apache.org/click/docs/click-api/org/apache/click/Control.html#getHtmlImports%28%29"&gt;Control.getHtmlImports()&lt;/a&gt; and           &lt;a href="http://incubator.apache.org/click/docs/click-api/org/apache/click/Page.html#getHtmlImports%28%29"&gt;Page.getHtmlImports()&lt;/a&gt;.           These methods have been deprecated in favor of           &lt;a href="http://incubator.apache.org/click/docs/click-api/org/apache/click/Control.html#getHeadElements%28%29"&gt;Control.getHeadElements()&lt;/a&gt;           and &lt;a href="http://incubator.apache.org/click/docs/click-api/org/apache/click/Page.html#getHeadElements%28%29"&gt;Page.getHeadElements()&lt;/a&gt;.       &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Updated third-party libraries:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li class="change"&gt;           Update Velocity library to version &lt;a href="http://velocity.apache.org/engine/releases/velocity-1.6.2/"&gt;1.6.2&lt;/a&gt;.       &lt;/li&gt;&lt;li class="change"&gt;           Update Cayenne library to version &lt;a href="http://cayenne.apache.org/"&gt;3.0M6&lt;/a&gt;.       &lt;/li&gt;&lt;li style="text-align: left;" class="change"&gt;           Update Prototype.js library to version &lt;a href="http://www.prototypejs.org/2009/3/27/prototype-1-6-1-rc2-ie8-compatibility-element-storage-and-bug-fixes"&gt;1.6.1_RC2&lt;/a&gt;.       &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;New Documentation:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Documentation has been converted to Docbook and are made available in         three different flavors: &lt;a href="file:///C:/dev/os/apache/click/click-svn/documentation/docs/user-guide.html"&gt;PDF, HTML (single page) and HTML (multiple pages)&lt;/a&gt;.         Thanks to Gilberto C Andrade for doing the conversion         [&lt;a target="_blank" href="https://issues.apache.org/jira/browse/CLK-482"&gt;482&lt;/a&gt;].       &lt;/li&gt;&lt;li&gt;Added documentation describing the new HEAD element support.         Please see the new section on &lt;a href="http://incubator.apache.org/click/docs/user-guide/html/ch02s12.html"&gt;Page HEAD elements&lt;/a&gt; and         the section on &lt;a href="http://incubator.apache.org/click/docs/user-guide/html/ch03s05.html"&gt;Control HEAD elements&lt;/a&gt;.       &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;New examples:     &lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;         &lt;a target="_blank" class="external" href="http://www.avoka.com/click-examples/general/page-head-demo.htm"&gt;         Page HEAD elements&lt;/a&gt; demonstrates how to add         &lt;a href="http://incubator.apache.org/click/docs/click-api/org/apache/click/element/JsImport.html"&gt;JsImport&lt;/a&gt;,         &lt;a href="http://incubator.apache.org/click/docs/click-api/org/apache/click/element/JsScript.html"&gt;JsScript&lt;/a&gt;,         &lt;a href="http://incubator.apache.org/click/docs/click-api/org/apache/click/element/CssImport.html"&gt;CssImport&lt;/a&gt;         and &lt;a href="http://incubator.apache.org/click/docs/click-api/org/apache/click/element/CssStyle.html"&gt;CssStyle&lt;/a&gt;         HEAD elements to a Page.       &lt;/li&gt;&lt;li&gt;         &lt;a target="_blank" class="external" href="http://www.avoka.com/click-examples/general/control-head-demo.htm"&gt;         Control HEAD elements&lt;/a&gt; demonstrates how to add         &lt;a href="http://incubator.apache.org/click/docs/click-api/org/apache/click/element/JsImport.html"&gt;JsImport&lt;/a&gt; and         &lt;a href="http://incubator.apache.org/click/docs/click-api/org/apache/click/element/CssImport.html"&gt;CssImport&lt;/a&gt;         HEAD elements to a custom Control.       &lt;/li&gt;&lt;li&gt;         &lt;a target="_blank" class="external" href="http://www.avoka.com/click-examples/control/submit-link-demo.htm"&gt;           SubmitLink Demo&lt;/a&gt; shows how to use the new &lt;a href="http://incubator.apache.org/click/docs/extras-api/org/apache/click/extras/control/SubmitLink.html"&gt;SubmitLink&lt;/a&gt; control.       &lt;/li&gt;&lt;li&gt;         &lt;a target="_blank" class="external" href="http://www.avoka.com/click-examples/table/large-dataset-demo.htm"&gt;         Large Dataset&lt;/a&gt; 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.       &lt;/li&gt;&lt;li&gt;         &lt;a target="_blank" class="external" href="http://www.avoka.com/click-examples/panel/reusable-panel-demo.htm"&gt;           Reusable Panel&lt;/a&gt; is an example of a reusable Panel           which provides a Form for capturing Client details.       &lt;/li&gt;&lt;li&gt;         &lt;a target="_blank" class="external" href="http://www.avoka.com/click-examples/quartz/quartz-job-scheduler.htm"&gt;           Quartz Job Scheduler&lt;/a&gt; is an example demonstrating how to integrate the Quartz Job Scheduling framework           into a Click application.       &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Enjoy.&lt;br /&gt;&lt;br /&gt;- The Click team&lt;br /&gt;&lt;br /&gt;---&lt;br /&gt;&lt;br /&gt;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.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2587500056091829705-4572766649092972843?l=click-framework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://click-framework.blogspot.com/feeds/4572766649092972843/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2587500056091829705&amp;postID=4572766649092972843' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2587500056091829705/posts/default/4572766649092972843'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2587500056091829705/posts/default/4572766649092972843'/><link rel='alternate' type='text/html' href='http://click-framework.blogspot.com/2009/06/click-210-rc1-now-available.html' title='Click 2.1.0-RC1 now available'/><author><name>Bob Schellink</name><uri>http://www.blogger.com/profile/10996406110751921749</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp1.blogger.com/_Ijl8pg_nh3E/SIMk9Q4_D4I/AAAAAAAAAAk/gNfr_SDEGL8/S220/sabob200-200.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2587500056091829705.post-7179444868589410597</id><published>2009-05-18T14:22:00.000-07:00</published><updated>2009-05-24T05:02:14.176-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='1.5'/><category scheme='http://www.blogger.com/atom/ns#' term='release'/><title type='text'>Click 1.5.2 now available</title><content type='html'>Click 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.&lt;br /&gt;&lt;br /&gt;Please note that this is a non-Apache release. For new projects use &lt;a href="http://incubator.apache.org/click/"&gt;Apache Click&lt;/a&gt; which is continuing the development of this framework.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://click.sourceforge.net/index.html"&gt;Click Home&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://click.sourceforge.net/docs/roadmap-changes.html#1.5.2"&gt;Roadmap and Changes&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://click.sourceforge.net/docs/roadmap-changes.html#1.5-upgrade-path"&gt;Upgrade Path&lt;/a&gt; - please see the upgrade path when upgrading from a previous release.&lt;/li&gt;&lt;li&gt;&lt;a href="https://sourceforge.net/project/showfiles.php?group_id=82095&amp;amp;package_id=84113"&gt;Download Click 1.5.2&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://repo1.maven.org/maven2/net/sf/click/"&gt;Maven bundles&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.avoka.com/click-examples/"&gt;Live examples&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Changes are:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li class="change"&gt;           Added plug-able security access controller (&lt;a href="http://click.sourceforge.net/docs/extras-api/net/sf/click/extras/security/AccessController.html"&gt;AccessController&lt;/a&gt;) 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 [&lt;a target="_blank" href="https://issues.apache.org/click/browse/CLK-406"&gt;406&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;           Improved performance in situations where many controls are added to           a page by decreasing the buffer size used for including HTML imports.       &lt;/li&gt;&lt;li class="change"&gt;           Improved Column decorator error handling           [&lt;a target="_blank" href="https://issues.apache.org/click/browse/CLK-495"&gt;495&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;           Improved PerformanceFilter to implement exclude-paths filtering           [&lt;a target="_blank" href="https://issues.apache.org/click/browse/CLK-498"&gt;498&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;           Improved Spring integration with           &lt;a href="http://click.sourceforge.net/docs/extras-api/net/sf/click/extras/spring/SpringClickServlet.html"&gt;SpringClickServlet&lt;/a&gt;            [&lt;a target="_blank" href="https://issues.apache.org/jira/browse/CLK-534"&gt;534&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;           Improved CompressionServletResponseWrapper and CompressionResponseStream classes to have           public visibility to enable use in custom servlet Filters           [&lt;a target="_blank" href="https://issues.apache.org/click/browse/CLK-547"&gt;547&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;           Fixed Column sorting to recognize numbers inside strings.           This issue was raised by Venkatt Guhesan           [&lt;a target="_blank" href="https://issues.apache.org/click/browse/CLK-489"&gt;489&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;           Fixed a bug where FieldSet was not set as the parent of its child controls.           This issue was raised by James P Brown           [&lt;a target="_blank" href="https://issues.apache.org/click/browse/CLK-497"&gt;497&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;           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           [&lt;a target="_blank" href="https://issues.apache.org/click/browse/CLK-499"&gt;499&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;          Fixed FormTable sorting bug. Added FormTable sort methods &lt;a href="http://click.sourceforge.net/docs/extras-api/net/sf/click/extras/control/FormTable.html#setSortedColumn%28java.lang.String%29"&gt;setSortedColumn&lt;/a&gt;,           &lt;a href="http://click.sourceforge.net/docs/extras-api/net/sf/click/extras/control/FormTable.html#setSortedAscending%28boolean%29"&gt;setSortedAscending&lt;/a&gt;,           &lt;a href="http://click.sourceforge.net/docs/extras-api/net/sf/click/extras/control/FormTable.html#setPageNumber%28int%29"&gt;setPageNumber&lt;/a&gt;           for programmatic sorting. This issue was raised and fixed by Ben Warner           [&lt;a target="_blank" href="https://issues.apache.org/jira/browse/CLK-527"&gt;527&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;           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           [&lt;a target="_blank" href="https://issues.apache.org/jira/browse/CLK-546"&gt;546&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;           Fixed extras &lt;tt&gt;pom.xml&lt;/tt&gt; dependencies [&lt;a target="_blank" href="https://issues.apache.org/click/browse/CLK-492"&gt;492&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;           Updated Velocity library to version 1.6.2.       &lt;/li&gt;&lt;/ul&gt;Enjoy.&lt;br /&gt;&lt;br /&gt;The Click team.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2587500056091829705-7179444868589410597?l=click-framework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://click-framework.blogspot.com/feeds/7179444868589410597/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2587500056091829705&amp;postID=7179444868589410597' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2587500056091829705/posts/default/7179444868589410597'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2587500056091829705/posts/default/7179444868589410597'/><link rel='alternate' type='text/html' href='http://click-framework.blogspot.com/2009/05/click-152-now-available.html' title='Click 1.5.2 now available'/><author><name>Bob Schellink</name><uri>http://www.blogger.com/profile/10996406110751921749</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp1.blogger.com/_Ijl8pg_nh3E/SIMk9Q4_D4I/AAAAAAAAAAk/gNfr_SDEGL8/S220/sabob200-200.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2587500056091829705.post-1469463803165695325</id><published>2009-03-11T13:29:00.000-07:00</published><updated>2009-03-11T14:12:39.571-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='documentation'/><category scheme='http://www.blogger.com/atom/ns#' term='user guide'/><title type='text'>Documentation ported to Docbook</title><content type='html'>&lt;a href="http://www.jroller.com/gilbertoca/"&gt;Gilberto C. Andrade&lt;/a&gt; recently ported Click's documentation to Docbook using Michael Fuchs&lt;span style="text-decoration: underline;"&gt; &lt;/span&gt;&lt;a href="http://www.michael-a-fuchs.de/"&gt;HTML to Docbook&lt;/a&gt; converter.&lt;br /&gt;&lt;br /&gt;This is really great news as we can now generate the documentation in both PDF and HTML formats.&lt;br /&gt;&lt;br /&gt;Below is a screenshot of how the PDF looks like:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Ijl8pg_nh3E/SbghzahDpLI/AAAAAAAAADI/1TTT3sNZUs0/s1600-h/pdf.png"&gt;&lt;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" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;And here is how the HTML version looks like:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Ijl8pg_nh3E/SbgmwtT6r1I/AAAAAAAAADY/7P7--UigSMk/s1600-h/html.png"&gt;&lt;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" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;To generate the docs we use a modified version of the &lt;a href="http://velocity.apache.org/docbook/"&gt;Velocity Docbook Framework&lt;/a&gt;. The modifications include upgrading to the latest versions of &lt;a href="http://xmlgraphics.apache.org/fop/"&gt;Apache FOP&lt;/a&gt; and &lt;a href="http://sourceforge.net/projects/docbook/"&gt;Docbook XLS&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;To achieve syntax highlighting for our source code we include the &lt;a href="http://sourceforge.net/projects/xslthl"&gt;XSLTHL&lt;/a&gt; library.&lt;br /&gt;&lt;br /&gt;The only issue I encountered was that XSLTHL doesn't work with the latest official Docbook XLS release. Luckily the latest &lt;a href="http://docbook.sourceforge.net/snapshots/"&gt;snapshot&lt;/a&gt; of Docbook XLS resolved the issue.&lt;br /&gt;&lt;br /&gt;We hope the new format will make it easier to read and learn Click.&lt;br /&gt;&lt;br /&gt;The Click team.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2587500056091829705-1469463803165695325?l=click-framework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://click-framework.blogspot.com/feeds/1469463803165695325/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2587500056091829705&amp;postID=1469463803165695325' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2587500056091829705/posts/default/1469463803165695325'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2587500056091829705/posts/default/1469463803165695325'/><link rel='alternate' type='text/html' href='http://click-framework.blogspot.com/2009/03/documentation-ported-to-docbook.html' title='Documentation ported to Docbook'/><author><name>Bob Schellink</name><uri>http://www.blogger.com/profile/10996406110751921749</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp1.blogger.com/_Ijl8pg_nh3E/SIMk9Q4_D4I/AAAAAAAAAAk/gNfr_SDEGL8/S220/sabob200-200.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_Ijl8pg_nh3E/SbghzahDpLI/AAAAAAAAADI/1TTT3sNZUs0/s72-c/pdf.png' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2587500056091829705.post-2742733498912485541</id><published>2009-02-15T14:34:00.000-08:00</published><updated>2009-02-22T00:55:51.663-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='release'/><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><title type='text'>Apache Click 2.0.1 now available</title><content type='html'>Apache Click 2.0.1 is the first release from the Apache Software Foundation Incubator and is based on the 1.5.1 code base.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://incubator.apache.org/click/"&gt;Click Home&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://incubator.apache.org/click/docs/roadmap-changes.html#2.0.1"&gt;Roadmap and Changes&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://incubator.apache.org/click/docs/roadmap-changes.html#1.5-upgrade-path"&gt;Upgrade Path&lt;/a&gt; - please see the upgrade path when upgrading from 1.4 or earlier.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.apache.org/dyn/closer.cgi/incubator/click/click/2.0.1/click-2.0.1-incubating.zip"&gt;Download Click 2.0.1&lt;br /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://repo1.maven.org/maven2/org/apache/click/"&gt;Maven bundles&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.avoka.com/click-examples/"&gt;Live examples&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;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 &lt;a href="http://incubator.apache.org/click/docs/roadmap-changes.html#2.0.1"&gt;Roadmap and Changes&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Changes are:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Packages were renamed to '&lt;span style="font-weight: bold;"&gt;org.apache.click&lt;/span&gt;'. When upgrading from older releases you will need to convert from 'net.sf.click' to 'org.apache.click'.&lt;/li&gt;&lt;li&gt;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 &lt;a href="http://code.google.com/p/click-calendar/"&gt;Click Calendar&lt;/a&gt; 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.&lt;/li&gt;&lt;li&gt;The Chart controls was also using an incompatible licensed JavaScript library and these components was removed. A new project called &lt;a href="http://code.google.com/p/click-charts/"&gt;Click Charts&lt;/a&gt; was created for these components. They still use the 'net.sf.click' package so no code changes will be necessary.&lt;/li&gt;&lt;/ul&gt;The next major release will be 2.1.0 and a new feature roadmap is being determined.&lt;br /&gt;&lt;br /&gt;Enjoy.&lt;br /&gt;&lt;br /&gt;The Click team.&lt;br /&gt;&lt;br /&gt;---&lt;br /&gt;&lt;br /&gt;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.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2587500056091829705-2742733498912485541?l=click-framework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://click-framework.blogspot.com/feeds/2742733498912485541/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2587500056091829705&amp;postID=2742733498912485541' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2587500056091829705/posts/default/2742733498912485541'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2587500056091829705/posts/default/2742733498912485541'/><link rel='alternate' type='text/html' href='http://click-framework.blogspot.com/2009/01/click-201-now-available.html' title='Apache Click 2.0.1 now available'/><author><name>Bob Schellink</name><uri>http://www.blogger.com/profile/10996406110751921749</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp1.blogger.com/_Ijl8pg_nh3E/SIMk9Q4_D4I/AAAAAAAAAAk/gNfr_SDEGL8/S220/sabob200-200.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2587500056091829705.post-8185403406391090286</id><published>2009-01-23T03:57:00.000-08:00</published><updated>2009-01-25T09:59:08.613-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='1.5'/><category scheme='http://www.blogger.com/atom/ns#' term='release'/><title type='text'>Click 1.5.1 now available</title><content type='html'>Click 1.5.1 is a minor maintenance release which includes Turkish         language support, improved exception handling and some minor bug         fixes.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://incubator.apache.org/click/"&gt;Click Home&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://incubator.apache.org/click/docs/roadmap-changes.html#1.5.1"&gt;Roadmap and Changes&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://incubator.apache.org/click/docs/roadmap-changes.html#1.5-upgrade-path"&gt;Upgrade Path&lt;/a&gt; - please see the upgrade path when upgrading from a previous release.&lt;/li&gt;&lt;li&gt;&lt;a href="https://sourceforge.net/project/showfiles.php?group_id=82095&amp;amp;package_id=84113&amp;amp;release_id=655844"&gt;Download Click 1.5.1&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://repo1.maven.org/maven2/net/sf/click/"&gt;Maven bundles&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.avoka.com/click-examples/"&gt;Live examples&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Changes are:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li class="change"&gt;         Added Turkish language support. This issue was raised and fixed by Ali Ok.         [&lt;a target="_blank" href="https://issues.apache.org/click/browse/CLK-476"&gt;476&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;         Improved exception handling when a Control name is not defined         [&lt;a target="_blank" href="https://issues.apache.org/click/browse/CLK-473"&gt;473&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;         Added new constructors to extra controls which accepts the &lt;tt&gt;size&lt;/tt&gt;         attribute. This issue was raised by Christophe Foiret         [&lt;a target="_blank" href="https://issues.apache.org/click/browse/CLK-475"&gt;475&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;         Added MessageFormat support to Format through the methods         &lt;a href="http://incubator.apache.org/click/docs/click-api/net/sf/click/util/Format.html#message%28java.lang.String,%20java.lang.Object%29"&gt;message(String, Object)&lt;/a&gt;         and &lt;a href="http://incubator.apache.org/click/docs/click-api/net/sf/click/util/Format.html#message%28java.lang.String,%20java.util.List%29"&gt;message(String, List)&lt;/a&gt;.         This issue was raised by Yu Kobayashi         [&lt;a target="_blank" href="https://issues.apache.org/click/browse/CLK-474"&gt;474&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;         Added new methods to CheckboxTree for improved customization. The new methods         include &lt;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"&gt;renderCheckbox&lt;/a&gt;         and &lt;a href="http://incubator.apache.org/click/docs/extras-api/net/sf/click/extras/tree/CheckboxTree.html#getInputType%28%29"&gt;getInputType&lt;/a&gt;.       &lt;/li&gt;&lt;li class="change"&gt;         Added csv mime type. This issue was raised by Alvin Townsend.       &lt;/li&gt;&lt;li class="change"&gt;         Fixed URL rendering to encode ampersand characeters.         [&lt;a target="_blank" href="https://issues.apache.org/click/browse/CLK-483"&gt;483&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;         Fixed HiddenField to work with java.sql.Timestamp, java.sql.Time and java.sql.Date.         [&lt;a target="_blank" href="https://issues.apache.org/click/browse/CLK-484"&gt;484&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;         Fixed WebappLoader to reload Velocity global macro's         [&lt;a target="_blank" href="https://issues.apache.org/click/browse/CLK-467"&gt;467&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;         Fixed Page.setRedirect to check if redirect path starts with context path.         This issue was raised by Christophe Foiret         [&lt;a target="_blank" href="https://issues.apache.org/click/browse/CLK-468"&gt;468&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;         Fixed a regression when manually setting the Page path to a JSP.         [&lt;a target="_blank" href="https://issues.apache.org/click/browse/CLK-141"&gt;141&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;         Fixed DateField's French translation. This issue was raised by Alvin Townsend.       &lt;/li&gt;&lt;/ul&gt;Enjoy.&lt;br /&gt;&lt;br /&gt;The Click team.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2587500056091829705-8185403406391090286?l=click-framework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://click-framework.blogspot.com/feeds/8185403406391090286/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2587500056091829705&amp;postID=8185403406391090286' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2587500056091829705/posts/default/8185403406391090286'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2587500056091829705/posts/default/8185403406391090286'/><link rel='alternate' type='text/html' href='http://click-framework.blogspot.com/2009/01/click-151-now-available.html' title='Click 1.5.1 now available'/><author><name>Bob Schellink</name><uri>http://www.blogger.com/profile/10996406110751921749</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp1.blogger.com/_Ijl8pg_nh3E/SIMk9Q4_D4I/AAAAAAAAAAk/gNfr_SDEGL8/S220/sabob200-200.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2587500056091829705.post-6784343339221662061</id><published>2008-11-09T22:58:00.000-08:00</published><updated>2008-12-03T23:17:13.554-08:00</updated><title type='text'>ClickIDE 2.1.0 released: support Click 1.5</title><content type='html'>A new version of ClickIDE is available. This release supports Click 1.5 and Eclipse 3.4/WTP 3.0.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Important links&lt;/span&gt;:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://incubator.apache.org/click/docs/click-ide.html"&gt;ClickIDE Home&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://sourceforge.net/project/showfiles.php?group_id=82095&amp;amp;package_id=84113"&gt;&lt;span style="font-size:100%;"&gt;Download ClickIDE 2.1.0&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Enjoy Click!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2587500056091829705-6784343339221662061?l=click-framework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2587500056091829705/posts/default/6784343339221662061'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2587500056091829705/posts/default/6784343339221662061'/><link rel='alternate' type='text/html' href='http://click-framework.blogspot.com/2008/11/clickide-210-released-support-click-15.html' title='ClickIDE 2.1.0 released: support Click 1.5'/><author><name>Bob Schellink</name><uri>http://www.blogger.com/profile/10996406110751921749</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp1.blogger.com/_Ijl8pg_nh3E/SIMk9Q4_D4I/AAAAAAAAAAk/gNfr_SDEGL8/S220/sabob200-200.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2587500056091829705.post-7916942149364308794</id><published>2008-11-01T13:14:00.000-07:00</published><updated>2009-01-21T12:42:32.988-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='1.5'/><category scheme='http://www.blogger.com/atom/ns#' term='release'/><title type='text'>Click 1.5 final is released!</title><content type='html'>&lt;p&gt;Click 1.5 is production ready and available for download.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;This is our biggest release yet with numerous new features, enhancements, documentation and examples.&lt;/p&gt;&lt;p&gt;We would like to thank everyone for their contributions to the 1.5 release.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Important links:&lt;br /&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://incubator.apache.org/click/"&gt;Click Home&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://incubator.apache.org/click/docs/roadmap-changes.html#1.5"&gt;Roadmap and Changes&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://incubator.apache.org/click/docs/roadmap-changes.html#1.5-upgrade-path"&gt;Upgrade Path&lt;/a&gt; - please see the upgrade path when upgrading from a previous release.&lt;/li&gt;&lt;li&gt;&lt;a href="https://sourceforge.net/project/showfiles.php?group_id=82095&amp;amp;package_id=84113"&gt;Download Click 1.5&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://repo1.maven.org/maven2/net/sf/click/"&gt;Maven bundles&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.avoka.com/click-examples/"&gt;Live examples&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;Highlights for 1.5 include:&lt;br /&gt;&lt;ul&gt;&lt;li class="item"&gt;&lt;a href="http://incubator.apache.org/click/docs/click-api/net/sf/click/control/Container.html"&gt;Container&lt;/a&gt; - new interface for building arbitrary complex, hierarchical Controls.&lt;/li&gt;&lt;li class="item"&gt;&lt;a href="http://incubator.apache.org/click/docs/click-api/net/sf/click/ActionListener.html"&gt;ActionListener&lt;/a&gt; - new interface provides compile time safety and support for code refactoring tools.&lt;/li&gt;&lt;li class="item"&gt;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%.&lt;br /&gt;&lt;/li&gt;&lt;li class="item"&gt;&lt;a href="http://incubator.apache.org/click/docs/click-api/net/sf/click/service/package-summary.html#services"&gt;Services&lt;/a&gt; - Click core has been refactored into pluggable services.&lt;/li&gt;&lt;li class="item"&gt;      Added &lt;a class="external" target="_blank" href="http://www.freemarker.org/"&gt;Freemarker&lt;/a&gt; support as an       alternative templating engine to Velocity. See       &lt;a href="http://incubator.apache.org/click/docs/extras-api/net/sf/click/extras/service/FreemarkerTemplateService.html"&gt;FreemarkerTemplateService&lt;/a&gt; for configuration details.&lt;/li&gt;&lt;li class="item"&gt;Provide three logging service implementations: &lt;a href="http://incubator.apache.org/click/docs/click-api/net/sf/click/service/ConsoleLogService.html"&gt;ConsoleLogService&lt;/a&gt;, &lt;a href="http://incubator.apache.org/click/docs/extras-api/net/sf/click/extras/service/JdkLogService.html"&gt;JdkLogService&lt;/a&gt; and &lt;a href="http://incubator.apache.org/click/docs/extras-api/net/sf/click/extras/service/Log4JLogService.html"&gt;Log4JLogService&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li class="item"&gt;&lt;a href="http://incubator.apache.org/click/docs/mock-api/overview-summary.html"&gt;Mock Test Support&lt;/a&gt; - introduces an easy to use package to write Unit and Functional Tests.&lt;/li&gt;&lt;li class="item"&gt;&lt;a href="http://incubator.apache.org/click/docs/click-api/net/sf/click/ControlRegistry.html"&gt;ControlRegistry&lt;/a&gt; - enables two phase listener dispatch, which allows Controls to bind request parameters before listeners are fired.&lt;/li&gt;&lt;li class="item"&gt;A new deployment strategy allows deployment of resources directly from jars.&lt;/li&gt;&lt;li class="item"&gt;New &lt;a href="http://incubator.apache.org/click/docs/click-api/net/sf/click/control/Renderable.html"&gt;Renderable&lt;/a&gt; interface allows alternative paginator implementations for &lt;a href="http://incubator.apache.org/click/docs/click-api/net/sf/click/control/Table.html"&gt;Table&lt;/a&gt;. Two implementations are available with Click 1.5:         &lt;a href="http://incubator.apache.org/click/docs/click-api/net/sf/click/control/TablePaginator.html"&gt;TablePaginator&lt;/a&gt; and &lt;a href="http://incubator.apache.org/click/docs/extras-api/net/sf/click/extras/control/TableInlinePaginator.html"&gt;TableInlinePaginator&lt;/a&gt;.         &lt;/li&gt;&lt;li class="item"&gt;A new &lt;a href="http://incubator.apache.org/click/docs/click-online.html#powered"&gt;Powered by Click&lt;/a&gt; section was added. If you would         like to add your own site to this list, please drop us a mail at one of our          &lt;a target="blank" class="external" href="http://incubator.apache.org/click/docs/click-online.html#mailing-lists"&gt;Mailing Lists&lt;/a&gt;,         or directly to "sabob1&lt;at&gt;gmail&lt;dot&gt;com".&lt;/dot&gt;&lt;/at&gt;&lt;/li&gt;&lt;/ul&gt;New documentation:&lt;br /&gt;&lt;ul&gt;&lt;li class="change"&gt;              &lt;a href="http://incubator.apache.org/click/docs/controls.html#container"&gt;Container&lt;/a&gt; explains the new Container concept&lt;br /&gt;&lt;/li&gt;&lt;li class="change"&gt;              &lt;a href="http://incubator.apache.org/click/docs/controls.html#layout"&gt;Template vs Programmatic layout&lt;/a&gt; explains different layout strategies&lt;br /&gt;&lt;/li&gt;&lt;li class="change"&gt;              &lt;a href="http://incubator.apache.org/click/docs/mock-api/overview-summary.html"&gt;Mock Test Support&lt;/a&gt; provides overview of the new testing support in 1.5&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://incubator.apache.org/click/docs/configuration.html#deploying-custom-resources"&gt;Deploying custom resources&lt;/a&gt; describes how to deploy resources such as JavaScript, CSS and images&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://incubator.apache.org/click/docs/configuration.html#application-multi-packages"&gt;Multiple pages packages&lt;/a&gt; allows you to host or integrate pages from separate packages&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;New examples:&lt;br /&gt;&lt;ul style="padding-top: 5px;"&gt;&lt;li&gt;         &lt;a target="_blank" class="external" href="http://www.avoka.com/click-examples/wizard/wizard.htm"&gt;           Wizard demo&lt;/a&gt; shows how to leverage a &lt;a href="http://incubator.apache.org/click/docs/pages.html#page-stateful"&gt;stateful&lt;/a&gt;           page and &lt;a href="http://incubator.apache.org/click/docs/click-api/net/sf/click/control/Panel.html"&gt;Panels&lt;/a&gt; to create a process flow. Each Step in the process is represented by a Panel which is managed by the stateful Page. &lt;/li&gt;&lt;li&gt;         &lt;a target="_blank" class="external" href="http://www.avoka.com/click-examples/control/populate-on-select.htm"&gt;           Populate on select&lt;/a&gt; shows how items in one combo box is populated           based on the selected item in another using JavaScript.       &lt;/li&gt;&lt;li&gt;         &lt;a target="_blank" class="external" href="http://www.avoka.com/click-examples/table/edit-form-table.htm"&gt;           FormTable demo&lt;/a&gt; shows how a FormTable can be used together with an           existing Form.       &lt;/li&gt;&lt;li&gt;         &lt;a target="_blank" class="external" href="http://www.avoka.com/click-examples/tree/page-link-tree-page.htm"&gt;           Page link tree&lt;/a&gt; provides a demonstration of using the Tree component           to link to different pages.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.avoka.com/click-examples/table/table-paginator.htm"&gt;Table paginators&lt;/a&gt; shows the different paginators available&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a target="_blank" href="http://www.avoka.com/click-examples/form/extra-controls-form.htm"&gt;Country Select field&lt;/a&gt; allows users to pick from a list of countries&lt;br /&gt;&lt;/li&gt;&lt;li&gt;              &lt;a target="_blank" href="http://www.avoka.com/click-examples/form/contact-details.htm"&gt;Custom Form Layout using Containers&lt;/a&gt; shows how to use a Container for laying out forms&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a target="_blank" href="http://www.avoka.com/click-examples/form/extra-controls-form.htm"&gt;Virtual Keyboard&lt;/a&gt; provides a graphical Vitural Keyboard text field control&lt;/li&gt;&lt;/ul&gt;Issues resolved since RC3:&lt;br /&gt;&lt;ul&gt;&lt;li class="change"&gt;         Added Dutch language support, contributed by Christopher Highway.       &lt;/li&gt;&lt;li class="change"&gt;         Improved Form to process controls even if their names is not defined.         [&lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-463"&gt;463&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;         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         [&lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-461"&gt;461&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;         Fixed Column internal Comparator which does not take sort order into         consideration for non Comparable instances         [&lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-462"&gt;462&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;         Fixed Panel.getId() to return null if name is not defined         [&lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-464"&gt;464&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;         Fixed VelocityTemplateService to cater for custom defined Velocity loggers.         This issue was raised by Vikram Natarajan         [&lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-465"&gt;465&lt;/a&gt;].       &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Enjoy Click!&lt;br /&gt;&lt;br /&gt;The Click team.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2587500056091829705-7916942149364308794?l=click-framework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://click-framework.blogspot.com/feeds/7916942149364308794/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2587500056091829705&amp;postID=7916942149364308794' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2587500056091829705/posts/default/7916942149364308794'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2587500056091829705/posts/default/7916942149364308794'/><link rel='alternate' type='text/html' href='http://click-framework.blogspot.com/2008/11/click-15-final-is-released.html' title='Click 1.5 final is released!'/><author><name>Bob Schellink</name><uri>http://www.blogger.com/profile/10996406110751921749</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp1.blogger.com/_Ijl8pg_nh3E/SIMk9Q4_D4I/AAAAAAAAAAk/gNfr_SDEGL8/S220/sabob200-200.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2587500056091829705.post-174744690015388616</id><published>2008-10-20T12:30:00.000-07:00</published><updated>2009-01-21T12:43:02.022-08:00</updated><title type='text'>Click 1.5 RC 3 is here!</title><content type='html'>This marks the third (and final) release candidate as Click is rapidly progressing towards a stable 1.5.&lt;br /&gt;&lt;br /&gt;We urge everyone to try out RC3 and provide feedback via our&lt;a href="http://incubator.apache.org/click/docs/click-online.html#mailing-lists"&gt; mailing lists&lt;/a&gt; and &lt;a href="https://issues.apache.org/click/"&gt;issue tracker&lt;/a&gt;.&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://incubator.apache.org/click/"&gt;Click Home&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://incubator.apache.org/click/docs/roadmap-changes.html#1.5-RC3"&gt;Roadmap and Changes&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://incubator.apache.org/click/docs/roadmap-changes.html#1.5-upgrade-path"&gt;Upgrade Path&lt;/a&gt; - please see the upgrade path when upgrading from 1.4 or earlier.&lt;/li&gt;&lt;li&gt;&lt;a href="https://sourceforge.net/project/showfiles.php?group_id=82095&amp;amp;package_id=84113"&gt;Download Click 1.5&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://repo1.maven.org/maven2/net/sf/click/"&gt;Maven bundles&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.avoka.com/click-examples/"&gt;Live examples&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;New examples for this release:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;         &lt;a target="_blank" class="external" href="http://www.avoka.com/click-examples/wizard/wizard.htm"&gt;           Wizard demo&lt;/a&gt; shows how to leverage a &lt;a href="http://incubator.apache.org/click/docs/pages.html#page-stateful"&gt;stateful&lt;/a&gt;           page and &lt;a href="http://incubator.apache.org/click/docs/click-api/net/sf/click/control/Panel.html"&gt;Panels&lt;/a&gt;           to create a process flow. Each Step in the process is represented by a           Panel which is managed by the stateful Page.       &lt;/li&gt;&lt;li&gt;         &lt;a target="_blank" class="external" href="http://www.avoka.com/click-examples/control/populate-on-select.htm"&gt;           Populate on select&lt;/a&gt; shows how items in one combo box is populated           based on the selected item in another using JavaScript.       &lt;/li&gt;&lt;li&gt;         &lt;a target="_blank" class="external" href="http://www.avoka.com/click-examples/table/edit-form-table.htm"&gt;           FormTable demo&lt;/a&gt; shows how a FormTable can be used together with an           existing Form.       &lt;/li&gt;&lt;li&gt;         &lt;a target="_blank" class="external" href="http://www.avoka.com/click-examples/tree/page-link-tree-page.htm"&gt;           Page link tree&lt;/a&gt; provides a demonstration of using the Tree component           to link to different pages.&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;New documentation:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Added a full &lt;a href="http://incubator.apache.org/click/docs/click-dtd-example.html"&gt;configuration example&lt;/a&gt;         containing all &lt;tt&gt;click.xml&lt;/tt&gt; &lt;a href="http://incubator.apache.org/click/docs/click-dtd.html"&gt;DTD&lt;/a&gt; elements and attributes.       &lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Issues resolved for RC3:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li class="change"&gt;         Added FormTable.properties containing a new property &lt;span style="color:navy;"&gt;formtable-error&lt;/span&gt;.         When adding FormTable to an external From, the &lt;span style="color:navy;"&gt;formtable-error&lt;/span&gt;         will be displayed if one of the FormTable fields contains an error.       &lt;/li&gt;&lt;li class="change"&gt;         Renamed ContainerUtils method getFields to getInputFields which better reflect its behavior         [&lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-457"&gt;457&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;         Fixed TabbedForm and TabbedCayenneForm to import JavaScript and CSS from their         superclass. This issue was raised by Christophe Foiret         [&lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-450"&gt;450&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;         Fixed CayenneForm performing multiple inserts         [&lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-452"&gt;452&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;         Fixed FormTable duplicate HTML imports         [&lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-453"&gt;453&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;         Fixed XmlConfigService not deploying JAR resources         [&lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-454"&gt;454&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;         Fixed Page.setRedirect to guard against duplicate context paths. This issue         was raised and fixed by Ricardo Lecheta         [&lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-456"&gt;456&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;         Fixed CountrySelect to exclude duplicate countries. This issue was raised         and fixed by Christopher Highway         [&lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-458"&gt;458&lt;/a&gt;].&lt;/li&gt;&lt;/ul&gt;Enjoy Click.&lt;br /&gt;&lt;br /&gt;The Click team.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2587500056091829705-174744690015388616?l=click-framework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://click-framework.blogspot.com/feeds/174744690015388616/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2587500056091829705&amp;postID=174744690015388616' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2587500056091829705/posts/default/174744690015388616'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2587500056091829705/posts/default/174744690015388616'/><link rel='alternate' type='text/html' href='http://click-framework.blogspot.com/2008/10/click-15-rc-3-is-here.html' title='Click 1.5 RC 3 is here!'/><author><name>Bob Schellink</name><uri>http://www.blogger.com/profile/10996406110751921749</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp1.blogger.com/_Ijl8pg_nh3E/SIMk9Q4_D4I/AAAAAAAAAAk/gNfr_SDEGL8/S220/sabob200-200.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2587500056091829705.post-2147593714128455376</id><published>2008-09-29T06:23:00.000-07:00</published><updated>2009-01-21T12:43:12.422-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='1.5'/><category scheme='http://www.blogger.com/atom/ns#' term='release'/><title type='text'>Click 1.5 Release Candidate 2 is available!</title><content type='html'>RC1 introduced a severe bug which hampered Click from deploying properly.         To resolve this issue we are making RC2 immediately available.   &lt;br /&gt;&lt;br /&gt;We apologize for the inconvenience.&lt;br /&gt;&lt;br /&gt;Please try out RC2 and provide feedback via our&lt;a href="http://incubator.apache.org/click/docs/click-online.html#mailing-lists"&gt; mailing lists&lt;/a&gt; or &lt;a href="https://issues.apache.org/click/"&gt;issue tracker&lt;/a&gt;.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://incubator.apache.org/click/"&gt;Click Home&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://incubator.apache.org/click/docs/roadmap-changes.html#1.5-RC2"&gt;Roadmap and Changes&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://incubator.apache.org/click/docs/roadmap-changes.html#1.5-upgrade-path"&gt;Upgrade Path&lt;/a&gt; - please see the upgrade path when upgrading from 1.4 or earlier.&lt;/li&gt;&lt;li&gt;&lt;a href="https://sourceforge.net/project/showfiles.php?group_id=82095&amp;amp;package_id=84113"&gt;Download Click 1.5 RC2&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://repo1.maven.org/maven2/net/sf/click/"&gt;Maven bundles&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.avoka.com/click-examples/"&gt;Live examples&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Issues resolved for RC2:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li class="change"&gt;         &lt;span style="font-weight: bold;color:navy;" &gt;Emergency Fix&lt;/span&gt;: Click throws FileNotFoundException when deploying click-extras.jar         [&lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-448"&gt;448&lt;/a&gt;]. &lt;/li&gt;&lt;li class="change"&gt;         Added new method &lt;a href="http://incubator.apache.org/click/docs/click-api/net/sf/click/Page.html#removeControl%28net.sf.click.Control%29"&gt;Page.removeControl&lt;/a&gt; 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         [&lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-449"&gt;449&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;         Added utility methods &lt;a href="http://incubator.apache.org/click/docs/click-api/net/sf/click/util/ClickUtils.html#encodeURL%28java.lang.Object%29"&gt;ClickUtils.encodeURL&lt;/a&gt;         and &lt;a href="http://incubator.apache.org/click/docs/click-api/net/sf/click/util/ClickUtils.html#decodeURL%28java.lang.Object%29"&gt;ClickUtils.decodeURL&lt;/a&gt;         for encoding and decoding URL's using the "UTF-8" encoding scheme.       &lt;/li&gt;&lt;/ul&gt;The Click team.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2587500056091829705-2147593714128455376?l=click-framework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2587500056091829705/posts/default/2147593714128455376'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2587500056091829705/posts/default/2147593714128455376'/><link rel='alternate' type='text/html' href='http://click-framework.blogspot.com/2008/09/click-15-release-candidate-2-is.html' title='Click 1.5 Release Candidate 2 is available!'/><author><name>Bob Schellink</name><uri>http://www.blogger.com/profile/10996406110751921749</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp1.blogger.com/_Ijl8pg_nh3E/SIMk9Q4_D4I/AAAAAAAAAAk/gNfr_SDEGL8/S220/sabob200-200.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2587500056091829705.post-7469015963869419967</id><published>2008-09-28T06:32:00.000-07:00</published><updated>2009-01-21T12:43:29.827-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='1.5'/><category scheme='http://www.blogger.com/atom/ns#' term='release'/><title type='text'>Click 1.5 Release Candidate 1 is now available!</title><content type='html'>This should be the last release before 1.5 final. We have received good feedback and a large number of issues have been resolved. Thanks to everybody for their contributions in making this release possible.&lt;br /&gt;&lt;br /&gt;We urge everybody to try out RC1 and provide feedback via our&lt;a href="http://incubator.apache.org/click/docs/click-online.html#mailing-lists"&gt; mailing lists&lt;/a&gt; and &lt;a href="https://issues.apache.org/click/"&gt;issue tracker&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Apache Incubation Status:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;As you might know already Click was voted to undergo incubation at &lt;a target="_blank" class="external" href="http://incubator.apache.org/"&gt;Apache Incubator&lt;/a&gt;. One of our tasks is to migrate current infrastructure to the new hosting. New mailing lists have been setup for users and developers. Information on subscribing to the new mailing lists can be found &lt;a href="http://incubator.apache.org/click/docs/click-online.html#mailing-lists"&gt;here&lt;/a&gt;. If you would like to unsubscribe from the existing SourceForge lists follow the instructions &lt;a href="http://sourceforge.net/mail/?group_id=82095"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://incubator.apache.org/click/"&gt;Click Home&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://incubator.apache.org/click/docs/roadmap-changes.html#1.5-RC1"&gt;Roadmap and Changes&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://incubator.apache.org/click/docs/roadmap-changes.html#1.5-upgrade-path"&gt;Upgrade Path&lt;/a&gt; - please see the upgrade path when upgrading from 1.4 or earlier.&lt;/li&gt;&lt;li&gt;&lt;a href="https://sourceforge.net/project/showfiles.php?group_id=82095&amp;amp;package_id=84113"&gt;Download Click1.5&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://repo1.maven.org/maven2/net/sf/click/"&gt;Maven bundles&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.avoka.com/click-examples/"&gt;Live examples&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Highlights for this release:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li class="item"&gt;Refactored Paginator into a more generic interface called         &lt;a href="http://incubator.apache.org/click/docs/click-api/net/sf/click/control/Renderable.html"&gt;Renderable&lt;/a&gt;         which is independent of any specific Control&lt;/li&gt;&lt;li class="item"&gt;Added Table Row attribute support through new method          &lt;a href="http://incubator.apache.org/click/docs/click-api/net/sf/click/control/Table.html#addRowAttributes%28java.util.Map,%20java.lang.Object,%20int%29"&gt;addRowAttributes&lt;/a&gt;.&lt;/li&gt;&lt;li class="item"&gt;Field error messages can now be specified per instance.         See the &lt;a href="http://incubator.apache.org/click/docs/click-api/net/sf/click/control/Field.html#setErrorMessage%28java.lang.String%29"&gt;JavaDoc&lt;/a&gt; for more details.&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Issues resolved for RC1:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li class="change"&gt;         Refactored Paginator into a more generic interface called         &lt;a href="http://incubator.apache.org/click/docs/click-api/net/sf/click/control/Renderable.html"&gt;Renderable&lt;/a&gt;         which is independent of any specific Control         [&lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-434"&gt;434&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;         Add new LinkDecorator methods &lt;a href="http://incubator.apache.org/click/docs/extras-api/net/sf/click/extras/control/LinkDecorator.html#renderActionLink%28net.sf.click.util.HtmlStringBuffer,%20net.sf.click.control.AbstractLink,%20net.sf.click.Context,%20java.lang.Object,%20java.lang.Object%29"&gt;renderActionLink&lt;/a&gt;         and &lt;a href="http://incubator.apache.org/click/docs/extras-api/net/sf/click/extras/control/LinkDecorator.html#renderActionButton%28net.sf.click.util.HtmlStringBuffer,%20net.sf.click.control.ActionButton,%20net.sf.click.Context,%20java.lang.Object,%20java.lang.Object%29"&gt;renderActionButton&lt;/a&gt;.         This allows more fine grained control over the rendered links, for example         manipulating request parameters.         [&lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-446"&gt;446&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;         Add Table Row attribute support through new method          &lt;a href="http://incubator.apache.org/click/docs/click-api/net/sf/click/control/Table.html#addRowAttributes%28java.util.Map,%20java.lang.Object,%20int%29"&gt;addRowAttributes&lt;/a&gt;.         This issue was raised by Hans Poo         [&lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-431"&gt;431&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;         Field error messages can now be specified per instance.         See the &lt;a href="http://incubator.apache.org/click/docs/click-api/net/sf/click/control/Field.html#setErrorMessage%28java.lang.String%29"&gt;JavaDoc&lt;/a&gt; for more details.         This issue was raised and fixed by Ricardo Lecheta         [&lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-433"&gt;433&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;         Added new utility methods         &lt;a href="http://incubator.apache.org/click/docs/click-api/net/sf/click/util/ContainerUtils.html#copyContainerToObject%28net.sf.click.control.Container,%20java.lang.Object,%20java.util.List%29"&gt;copyContainerToObject&lt;/a&gt;         and &lt;a href="http://incubator.apache.org/click/docs/click-api/net/sf/click/util/ContainerUtils.html#copyContainerToObject%28net.sf.click.control.Container,%20java.lang.Object,%20java.util.List%29"&gt;copyObjectToContainer&lt;/a&gt;         to selectively exclude or include form fields when populating domain objects.         This issue was raised by Khalef Bessaih         [&lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-440"&gt;440&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;         Encapsulate conversion logic of template extensions inside         &lt;a href="http://incubator.apache.org/click/docs/click-api/net/sf/click/Page.html#setRedirect%28java.lang.String%29"&gt;Page.setRedirect(java.lang.String)&lt;/a&gt;         which allows one to override or overload the default behavior.         This issue was raised by David Ballard         [&lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-429"&gt;429&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;         Improved Table so that subclasses can specify a different         &lt;a href="http://incubator.apache.org/click/docs/click-api/net/sf/click/control/Table.html#controlLink"&gt;controlLink&lt;/a&gt;         implementation by overriding &lt;a href="http://incubator.apache.org/click/docs/click-api/net/sf/click/control/Table.html#getControlLink%28%29"&gt;getControlLink()&lt;/a&gt;.         This issue was raised and fixed by Ricardo Lecheta         [&lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-442"&gt;442&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;         Improved &lt;a href="http://incubator.apache.org/click/docs/click-api/net/sf/click/util/ClickUtils.html#toLabel%28java.lang.String%29"&gt;ClickUtils.toLabel&lt;/a&gt; to return empty String ("") if argument is null         [&lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-441"&gt;441&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;         Improved DateField to return a cached Date representation on subsequent retrievals.         This issue was raised by Tore Halset         [&lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-316"&gt;316&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;         Fixed RegexField validation to ignore empty values.         This issue was raised by Muzaffer Ozakca         [&lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-436"&gt;436&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;         Fixed TabbedPanel to trigger the registered tab listener.         This issue was raised by Marcelo Grassi Franco Melgaço.         [&lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-432"&gt;432&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;         Improved redirect and forward to JSP templates.         [&lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-435"&gt;435&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;         Fixed HtmlFieldSet to properly close the fieldset end tag.         This issue was raised by Gilberto C. Andrade         [&lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-427"&gt;427&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;         Fixed AbstractContainerField not to bind its request parameter.         This issue was raised by Gilberto C. Andrade         [&lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-428"&gt;428&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;         Fixed Column which exposed its internal Comparator as public API         through &lt;a href="http://incubator.apache.org/click/docs/click-api/net/sf/click/control/Column.html#setComparator%28java.util.Comparator%29"&gt;Column.setComparator(Comparator)&lt;/a&gt;,         instead of java.util.Comparator.         [&lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-430"&gt;430&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;         Fixed LinkDecorator not to add Table parameters to PageLink, as it is redundant.         This issue was raised by Joel Schmidt         [&lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-270"&gt;270&lt;/a&gt;].       &lt;/li&gt;&lt;/ul&gt;Enjoy Click.&lt;br /&gt;&lt;br /&gt;The Click team.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2587500056091829705-7469015963869419967?l=click-framework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2587500056091829705/posts/default/7469015963869419967'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2587500056091829705/posts/default/7469015963869419967'/><link rel='alternate' type='text/html' href='http://click-framework.blogspot.com/2008/09/click-15-release-candidate-1-is-now.html' title='Click 1.5 Release Candidate 1 is now available!'/><author><name>Bob Schellink</name><uri>http://www.blogger.com/profile/10996406110751921749</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp1.blogger.com/_Ijl8pg_nh3E/SIMk9Q4_D4I/AAAAAAAAAAk/gNfr_SDEGL8/S220/sabob200-200.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2587500056091829705.post-5573301319949013837</id><published>2008-08-17T12:35:00.000-07:00</published><updated>2009-01-21T12:43:39.305-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='1.5'/><category scheme='http://www.blogger.com/atom/ns#' term='release'/><title type='text'>Click 1.5 M3 is now available!</title><content type='html'>Milestone 3 is the final milestone in the 1.5 series and provides much improved backward compatibility.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://incubator.apache.org/click/"&gt;Click Home&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://incubator.apache.org/click/docs/roadmap-changes.html#1.5-M3"&gt;Roadmap and Changes&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://incubator.apache.org/click/docs/roadmap-changes.html#1.5-upgrade-path"&gt;Upgrade Path&lt;/a&gt; - please see the upgrade path when upgrading from 1.4 or earlier.&lt;/li&gt;&lt;li&gt;&lt;a href="https://sourceforge.net/project/showfiles.php?group_id=82095&amp;amp;package_id=84113"&gt;Download Click1.5&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://repo1.maven.org/maven2/net/sf/click/"&gt;Maven bundles&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.avoka.com/click-examples/"&gt;Live examples&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Highlights for this release:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li class="item"&gt;&lt;a href="http://incubator.apache.org/click/docs/click-api/net/sf/click/ActionListener.html"&gt;&lt;/a&gt;New features include a pluggable &lt;a href="http://incubator.apache.org/click/docs/click-api/net/sf/click/control/Paginator.html"&gt;Paginator&lt;/a&gt;         for &lt;a href="http://incubator.apache.org/click/docs/click-api/net/sf/click/control/Table.html"&gt;Table&lt;/a&gt; and two implementations:         &lt;a href="http://incubator.apache.org/click/docs/click-api/net/sf/click/control/DefaultPaginator.html"&gt;DefaultPaginator&lt;/a&gt; and         &lt;a href="http://incubator.apache.org/click/docs/click-api/net/sf/click/control/InlinePaginator.html"&gt;InlinePaginator&lt;/a&gt;.         &lt;/li&gt;&lt;li class="item"&gt;Major refactoring to improve backward compatibility and upgrade path. This includes removing BasicForm and adding         new Controls &lt;a href="http://incubator.apache.org/click/docs/extras-api/net/sf/click/extras/control/HtmlForm.html"&gt;HtmlForm&lt;/a&gt;         and &lt;a href="http://incubator.apache.org/click/docs/extras-api/net/sf/click/extras/control/HtmlFieldSet.html"&gt;HtmlFieldSet.&lt;/a&gt;&lt;/li&gt;&lt;li class="item"&gt;Added support for multiple page package definitions in click.xml configuration&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;New documentation:&lt;/span&gt;&lt;br /&gt;&lt;ul style="padding-top: 5px;"&gt;&lt;li class="change"&gt;&lt;a href="http://incubator.apache.org/click/docs/configuration.html#application-multi-packages"&gt;Multiple pages packages&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;New examples:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.avoka.com/click-examples/table/table-paginator.htm"&gt;Table paginators&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Issues resolved:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li class="change"&gt;         Added readonly and disabled support to FieldSet. If enabled Fields contained         in FieldSet will be disabled or made readonly.         [&lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-423"&gt;423&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;         Added Table footer rendering support, so that column totals can be rendered in a table         [&lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-425"&gt;425&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;         Improved Table rendering performance in the order of 25-45%.       &lt;/li&gt;&lt;li class="change"&gt;         Improved rendering performance by caching the ClickUtils          &lt;a href="http://incubator.apache.org/click/docs/click-api/net/sf/click/util/ClickUtils.html#getResourceVersionIndicator%28net.sf.click.Context%29"&gt;resource version indicator&lt;/a&gt;         [&lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-412"&gt;412&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;         Improved Page and PageImports to allow a Pages to optimize their HTML imports.         Please see Click Examples for a demonstration         [&lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-363"&gt;363&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;         Fixed issue where Select validation can throw ClassCastException          when option list contains an OptionGroup. This issue was identifier by Christophe Foiret         [&lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-374"&gt;374&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;         Fixed issue where Container can be added to itself. This issue was identifier by Harry Wissiak         [&lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-414"&gt;414&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;         Fixed Page serialization issues with non serializable Format and PageImport objects.         This issue was identifier by Alexei Sokolov         [&lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-416"&gt;416&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;         Fixed issue where CayenneForm clearValues() was hidden data object classname.         This issue was identifier by Wisking Ju Yu Wu         [&lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-417"&gt;417&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;         Fixed issue where TabbedPanel was invoking the activePanel's onInit() method twice.         This issue was identifier by Wisking Ju Yu Wu         [&lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-420"&gt;420&lt;/a&gt;].       &lt;/li&gt;&lt;/ul&gt;Enjoy Click.&lt;br /&gt;&lt;br /&gt;The Click team.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2587500056091829705-5573301319949013837?l=click-framework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://click-framework.blogspot.com/feeds/5573301319949013837/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2587500056091829705&amp;postID=5573301319949013837' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2587500056091829705/posts/default/5573301319949013837'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2587500056091829705/posts/default/5573301319949013837'/><link rel='alternate' type='text/html' href='http://click-framework.blogspot.com/2008/08/click-15-m3-is-now-available.html' title='Click 1.5 M3 is now available!'/><author><name>Bob Schellink</name><uri>http://www.blogger.com/profile/10996406110751921749</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp1.blogger.com/_Ijl8pg_nh3E/SIMk9Q4_D4I/AAAAAAAAAAk/gNfr_SDEGL8/S220/sabob200-200.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2587500056091829705.post-1818026814331529961</id><published>2008-07-20T14:05:00.000-07:00</published><updated>2009-01-21T12:43:46.292-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='1.5'/><category scheme='http://www.blogger.com/atom/ns#' term='release'/><title type='text'>Click 1.5 M2 now available!</title><content type='html'>Click 1.5 Milestone 2 is available for download. This is the second installment in the 1.5 development branch and provides important new features and bug fixes.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://incubator.apache.org/click/"&gt;Click Home&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://incubator.apache.org/click/docs/roadmap-changes.html#1.5-M2"&gt;Roadmap and Changes&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://incubator.apache.org/click/docs/roadmap-changes.html#1.5-M1-upgrade-path"&gt;Upgrade Path&lt;/a&gt; - please see the upgrade path when upgrading from 1.4 or earlier.&lt;/li&gt;&lt;li&gt;&lt;a href="https://sourceforge.net/project/showfiles.php?group_id=82095&amp;amp;package_id=84113"&gt;Download Click1.5&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://repo1.maven.org/maven2/net/sf/click/"&gt;Maven bundles&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.avoka.com/click-examples/"&gt;Live examples&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Highlights for this release:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li class="item"&gt;&lt;a href="http://incubator.apache.org/click/docs/click-api/net/sf/click/ActionListener.html"&gt;ActionListener&lt;/a&gt; - new interface provides compile time safety and support for code refactoring tools.&lt;/li&gt;&lt;li class="item"&gt;&lt;a href="http://incubator.apache.org/click/docs/click-api/net/sf/click/ControlRegistry.html"&gt;ControlRegistry&lt;/a&gt; - enables two phase listener dispatch, which allows Controls to bind request parameters before listeners are fired.&lt;br /&gt;&lt;/li&gt;&lt;li class="item"&gt;Introduced a new resource deployment strategy for Jars containing Page and Control resources.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;New documentation:&lt;/span&gt;&lt;br /&gt;&lt;ul style="padding-top: 5px;"&gt;&lt;li class="change"&gt;&lt;a href="http://incubator.apache.org/click/docs/configuration.html#deploying-custom-resources"&gt;Deploying custom resources&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Issues resolved:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li class="change"&gt;         Added a new &lt;a href="http://incubator.apache.org/click/docs/extras-api/net/sf/click/extras/control/PageButton.html"&gt;PageButton&lt;/a&gt; control         [&lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-392"&gt;392&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;         Add new method &lt;a href="http://incubator.apache.org/click/docs/extras-api/net/sf/click/extras/tree/CheckboxTree.html#setSelectChildNodes%28boolean%29"&gt;CheckboxTree.setSelectChildNodes&lt;/a&gt;         that enables selecting child nodes when parent is selected. This feature         only works if the Tree's &lt;a href="http://incubator.apache.org/click/docs/extras-api/net/sf/click/extras/tree/Tree.html#setJavascriptEnabled%28boolean%29"&gt;Javascript&lt;/a&gt;         support is enabled.         [&lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-209"&gt;209&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;Added Romanian property files. This issue was raised and fixed by Marius Petrus         [&lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-361"&gt;361&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;   Add width support to TabbedPanel control   [&lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-376"&gt;376&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;         Add ClickUtils autoPostRedirect() method to support          &lt;a class="external" target="_blank" href="http://en.wikipedia.org/wiki/SAML"&gt;SAML&lt;/a&gt;         integration   [&lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-398"&gt;398&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;Renamed Container.add(int, Control) to Container.insert(Control, int) [&lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-381"&gt;381&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;         Update Form to use control message bundles for label required prefix/suffix   [&lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-383"&gt;383&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;         Update HtmlStringBuffer to support method chaining.          This issue was raised by Demetrios Kyriakis   [&lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-396"&gt;396&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;         Updated Menu to only be cached in production or profile modes.         [&lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-408"&gt;408&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;         Moved &lt;a href="http://incubator.apache.org/click/docs/extras-api/net/sf/click/extras/control/AbstractContainerField.html"&gt;AbstractContainerField&lt;/a&gt; control to Click Extras.         [&lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-410"&gt;410&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;   Fixed &lt;a href="http://incubator.apache.org/click/docs/extras-api/net/sf/click/extras/panel/TabbedPanel.html"&gt;TabbedPanel&lt;/a&gt; bug whereby inactive panel HTML imports are included in page   [&lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-366"&gt;366&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;   Fixed bug when manually invalidating HttpSession   [&lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-371"&gt;371&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;   Fixed &lt;a href="http://incubator.apache.org/click/docs/extras-api/net/sf/click/extras/cayenne/PropertySelect.html"&gt;PropertySelect&lt;/a&gt; add ordering to query bug   [&lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-372"&gt;372&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;   Fixed message properties to resolve all parent messages   [&lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-373"&gt;373&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;   Fixed Labels not rendering in a &lt;a href="http://incubator.apache.org/click/docs/click-api/net/sf/click/control/FieldSet.html"&gt;FieldSet&lt;/a&gt; bug   [&lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-377"&gt;377&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;   Fixed Form removeField throws IllegalArgumentException bug   [&lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-378"&gt;378&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;   Fixed bug where &lt;a href="http://incubator.apache.org/click/docs/click-api/net/sf/click/util/Format.html"&gt;Format&lt;/a&gt; is not available in template of stateful pages.   [&lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-409"&gt;409&lt;/a&gt;].       &lt;/li&gt;&lt;/ul&gt;Enjoy Click.&lt;br /&gt;&lt;br /&gt;The Click team.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2587500056091829705-1818026814331529961?l=click-framework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://click-framework.blogspot.com/feeds/1818026814331529961/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2587500056091829705&amp;postID=1818026814331529961' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2587500056091829705/posts/default/1818026814331529961'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2587500056091829705/posts/default/1818026814331529961'/><link rel='alternate' type='text/html' href='http://click-framework.blogspot.com/2008/07/click-15-m2-now-available.html' title='Click 1.5 M2 now available!'/><author><name>Bob Schellink</name><uri>http://www.blogger.com/profile/10996406110751921749</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp1.blogger.com/_Ijl8pg_nh3E/SIMk9Q4_D4I/AAAAAAAAAAk/gNfr_SDEGL8/S220/sabob200-200.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2587500056091829705.post-4724520638938887539</id><published>2008-05-19T07:09:00.001-07:00</published><updated>2009-01-21T12:43:53.148-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='1.5'/><category scheme='http://www.blogger.com/atom/ns#' term='release'/><title type='text'>Click 1.5 Milestone 1 released!</title><content type='html'>Click 1.5 Milestone 1 has been released yesterday. This is the first installment in the 1.5 development branch and provides a host of new features. Important links:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://incubator.apache.org/click/"&gt;Click Home&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://incubator.apache.org/click/docs/roadmap-changes.html#1.5-M1"&gt;Roadmap and Changes&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://incubator.apache.org/click/docs/roadmap-changes.html#1.5-M1-upgrade-path"&gt;Upgrade Path&lt;/a&gt; - please see the upgrade path when upgrading from a previous release.&lt;/li&gt;&lt;li&gt;&lt;a href="https://sourceforge.net/project/showfiles.php?group_id=82095&amp;amp;package_id=84113"&gt;Download Click1.5&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://repo1.maven.org/maven2/net/sf/click/"&gt;Maven bundles&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.avoka.com/click-examples/"&gt;Live examples&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Highlights for 1.5-M1 include&lt;/span&gt;:&lt;br /&gt;&lt;ul&gt;&lt;li class="item"&gt;&lt;a href="http://incubator.apache.org/click/docs/controls.html#container"&gt;Container&lt;/a&gt; - new interface for building arbitrary complex, hierarchical Controls.&lt;/li&gt;&lt;li class="item"&gt;&lt;a href="http://incubator.apache.org/click/docs/click-api/net/sf/click/service/package-summary.html#services"&gt;Services&lt;/a&gt; - Click core has been refactored into pluggable services.&lt;/li&gt;&lt;li class="item"&gt;      Added &lt;a class="external" target="_blank" href="http://www.freemarker.org/"&gt;Freemarker&lt;/a&gt; support as an       alternative templating engine to Velocity. See       &lt;a href="http://incubator.apache.org/click/docs/extras-api/net/sf/click/extras/service/FreemarkerTemplateService.html"&gt;FreemarkerTemplateService&lt;/a&gt; for configuration details.&lt;br /&gt;&lt;/li&gt;&lt;li class="item"&gt;&lt;a href="http://incubator.apache.org/click/docs/mock-api/overview-summary.html"&gt;Mock Test Support&lt;/a&gt; - introduces an easy to use package to write Unit and Functional Tests.&lt;/li&gt;&lt;li class="item"&gt;A new &lt;a href="http://incubator.apache.org/click/docs/click-online.html#powered"&gt;Powered by Click&lt;/a&gt; section was added. If you would         like to add your own site to this list, please send us a mail to one of our          &lt;a target="blank" class="external" href="http://incubator.apache.org/click/docs/click-online.html#mailing-lists"&gt;Mailing Lists&lt;/a&gt;,         or directly to "sabob1 at gmail.com".&lt;/li&gt;&lt;li class="item"&gt;More examples and documentation.&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;New Examples:&lt;br /&gt;&lt;/span&gt;&lt;ul style="padding-top: 5px;"&gt;&lt;li&gt;               &lt;a target="_blank" href="http://www.avoka.com/click-examples/form/extra-controls-form.htm"&gt;Country Select field&lt;/a&gt;           &lt;/li&gt;&lt;li&gt;              &lt;a target="_blank" href="http://www.avoka.com/click-examples/form/contact-details.htm"&gt;Custom Form Layout using Containers&lt;/a&gt;          &lt;/li&gt;&lt;li&gt;              &lt;a target="_blank" href="http://www.avoka.com/click-examples/form/extra-controls-form.htm"&gt;Virtual Keyboard field&lt;/a&gt;          &lt;/li&gt;&lt;li&gt;              &lt;a target="_blank" href="http://www.avoka.com/click-examples/general/excel-export.htm"&gt;Excel Export Demo&lt;/a&gt;          &lt;/li&gt;&lt;li&gt;              &lt;a target="_blank" href="http://www.avoka.com/click-examples/jsp/edit-customer.htm"&gt;JSP - Edit Customer&lt;/a&gt;          &lt;/li&gt;&lt;li&gt;              &lt;a target="_blank" href="http://www.avoka.com/click-examples/jsp/navigation-a.htm"&gt;JSP - Navigation&lt;/a&gt;          &lt;/li&gt;&lt;li&gt;              &lt;a target="_blank" href="http://www.avoka.com/click-examples/jsp/multi-path-demo.htm"&gt;JSP - Multi Path Demo&lt;/a&gt;          &lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;New documentation:&lt;/span&gt;&lt;br /&gt;&lt;ul style="padding-top: 5px;"&gt;&lt;li class="change"&gt;              &lt;a href="http://incubator.apache.org/click/docs/controls.html#container"&gt;Container&lt;/a&gt;          &lt;/li&gt;&lt;li class="change"&gt;              &lt;a href="http://incubator.apache.org/click/docs/controls.html#layout"&gt;Template vs Container layout&lt;/a&gt;          &lt;/li&gt;&lt;li class="change"&gt;              &lt;a href="http://incubator.apache.org/click/docs/click-api/net/sf/click/service/package-summary.html"&gt;Click Runtime Services&lt;/a&gt;          &lt;/li&gt;&lt;li class="change"&gt;              &lt;a href="http://incubator.apache.org/click/docs/mock-api/overview-summary.html"&gt;Mock Test Support&lt;/a&gt;          &lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Issues resolved:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li class="change"&gt;Improved performance by rendering from a single non-blocking buffer.&lt;br /&gt;&lt;/li&gt;&lt;li class="change"&gt;      Added a &lt;a href="http://incubator.apache.org/click/docs/extras-api/net/sf/click/extras/control/CountrySelect.html"&gt;Country Select&lt;/a&gt;      control based on the JDK's own built in Country/Locale support.       &lt;/li&gt;&lt;li class="change"&gt;      Added a &lt;a href="http://incubator.apache.org/click/docs/extras-api/net/sf/click/extras/control/VirtualKeyboard.html"&gt;Virtual Keyboard&lt;/a&gt;       control using &lt;a href="http://www.greywyvern.com/code/js/keyboard.html"&gt;GreyWyvern&lt;/a&gt; JavaScript library.       &lt;/li&gt;&lt;li class="change"&gt;      Added support for setting Form        &lt;a href="http://incubator.apache.org/click/docs/click-api/net/sf/click/control/Form.html#getActionURL%28%29"&gt;action&lt;/a&gt;       URL attribute. This issue was raised by Erdem Gunay      [&lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-319"&gt;319&lt;/a&gt;].    &lt;/li&gt;&lt;li class="change"&gt;      Added support for Page HTML imports with a new &lt;tt&gt;getHtmlImports()&lt;/tt&gt;       method. This enables Pages to programatically define HTML imports which      will be included in a border template using the PageImports object.      This issue was raised by David Frizelle      [&lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-329"&gt;329&lt;/a&gt;].    &lt;/li&gt;&lt;li class="change"&gt;         Add Page &lt;a href="http://incubator.apache.org/click/docs/click-api/net/sf/click/Page.html#setTemplate%28java.lang.String%29"&gt;setTemplate(String)&lt;/a&gt;         method to enable dynamic changing of a page border template. This issue         was raised by Huy Do    [&lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-353"&gt;353&lt;/a&gt;].    &lt;/li&gt;&lt;li class="change"&gt;         Updated &lt;a href="http://incubator.apache.org/click/docs/click-api/net/sf/click/Page.html#setPath%28java.lang.String%29"&gt;Page.setPath&lt;/a&gt; to handle JSP resources. This issue was raised and fixed by Huy Do.   [&lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-141"&gt;141&lt;/a&gt;].    &lt;/li&gt;&lt;li class="change"&gt;         Added support for Hibernate AnnocationConfiguration. This issue was fixed by Jean-Francois.   [&lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-355"&gt;355&lt;/a&gt;].    &lt;/li&gt;&lt;li class="change"&gt;   Improved FileUpload support. This issue was raised by Ricardo Lecheta   [&lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-326"&gt;326&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;   Improve File Upload support with new &lt;a href="http://incubator.apache.org/click/docs/click-api/net/sf/click/service/FileUploadService.html"&gt;FileUploadService&lt;/a&gt; class.   [&lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-326"&gt;326&lt;/a&gt;].    &lt;/li&gt;&lt;li class="change"&gt;         Fixed Cayenne PropertySelect which is not reset to original value. This is was raised by Tore Halset   [&lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-317"&gt;317&lt;/a&gt;].    &lt;/li&gt;&lt;li class="change"&gt;         Fixed Cayenne 3.0M3 DataObjectUtils issue in CayenneForm when using JDK 1.5.          Added &lt;a href="http://incubator.apache.org/click/docs/extras-api/net/sf/click/extras/cayenne/CayenneUtils.html"&gt;CayenneUtils&lt;/a&gt; helper class   [&lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-342"&gt;342&lt;/a&gt;].    &lt;/li&gt;&lt;/ul&gt;Enjoy.&lt;br /&gt;&lt;br /&gt;The Click team.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2587500056091829705-4724520638938887539?l=click-framework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://click-framework.blogspot.com/feeds/4724520638938887539/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2587500056091829705&amp;postID=4724520638938887539' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2587500056091829705/posts/default/4724520638938887539'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2587500056091829705/posts/default/4724520638938887539'/><link rel='alternate' type='text/html' href='http://click-framework.blogspot.com/2008/05/click-15-milestone-1-released.html' title='Click 1.5 Milestone 1 released!'/><author><name>Bob Schellink</name><uri>http://www.blogger.com/profile/10996406110751921749</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp1.blogger.com/_Ijl8pg_nh3E/SIMk9Q4_D4I/AAAAAAAAAAk/gNfr_SDEGL8/S220/sabob200-200.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2587500056091829705.post-7345335916754688591</id><published>2008-05-03T15:40:00.000-07:00</published><updated>2009-01-21T12:44:15.383-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='1.4.2'/><category scheme='http://www.blogger.com/atom/ns#' term='version'/><category scheme='http://www.blogger.com/atom/ns#' term='release'/><title type='text'>Click 1.4.2 maintenance release is available!</title><content type='html'>Click 1.4.2 is a minor maintenance release.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="https://sourceforge.net/project/showfiles.php?group_id=82095&amp;amp;package_id=84113"&gt;Download Click1.4.2&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://incubator.apache.org/click/"&gt;Click Home&lt;br /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.avoka.com/click-examples/"&gt;Live Examples&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://repo1.maven.org/maven2/net/sf/click/"&gt;Maven Bundles&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;This release fixes a problem         when using &lt;a href="http://incubator.apache.org/click/docs/extras-api/net/sf/click/extras/spring/SpringClickServlet.html"&gt;SpringClickServlet&lt;/a&gt; and excluded urls. We have also fixed a         slight performance degradation since the 1.4 release.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Changes include:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Fix a slight performance degradation over the 1.4 release [&lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-349"&gt;349&lt;/a&gt;].&lt;/li&gt;&lt;li&gt;       Fixed ExcludePage - should be a public inner class [&lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-346"&gt;346&lt;/a&gt;].&lt;/li&gt;&lt;li&gt;Fixed Maven artifact packaging [&lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-348"&gt;348&lt;/a&gt;].&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Fixed &lt;a href="http://incubator.apache.org/click/docs/click-api/net/sf/click/control/PageLink.html"&gt;PageLink&lt;/a&gt; to work with JSP pages [&lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-352"&gt;352&lt;/a&gt;].&lt;/li&gt;&lt;li&gt;Fix &lt;a href="http://incubator.apache.org/click/docs/extras-api/net/sf/click/extras/control/DateField.html"&gt;DateField&lt;/a&gt; and &lt;a href="http://incubator.apache.org/click/docs/extras-api/net/sf/click/extras/graph/JSPieChart.html"&gt;ChartFields&lt;/a&gt; to include control.js [&lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-354"&gt;354&lt;/a&gt;].&lt;/li&gt;&lt;li&gt;Fix DateField which could produce duplicate stylesheet head includes [&lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-356"&gt;356&lt;/a&gt;].&lt;/li&gt;&lt;/ul&gt;Enjoy.&lt;br /&gt;&lt;br /&gt;The Click team.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2587500056091829705-7345335916754688591?l=click-framework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://click-framework.blogspot.com/feeds/7345335916754688591/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2587500056091829705&amp;postID=7345335916754688591' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2587500056091829705/posts/default/7345335916754688591'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2587500056091829705/posts/default/7345335916754688591'/><link rel='alternate' type='text/html' href='http://click-framework.blogspot.com/2008/05/click-142-maintenance-release-is.html' title='Click 1.4.2 maintenance release is available!'/><author><name>Bob Schellink</name><uri>http://www.blogger.com/profile/10996406110751921749</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp1.blogger.com/_Ijl8pg_nh3E/SIMk9Q4_D4I/AAAAAAAAAAk/gNfr_SDEGL8/S220/sabob200-200.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2587500056091829705.post-4602961878383334086</id><published>2008-04-08T13:02:00.000-07:00</published><updated>2010-07-15T23:13:50.075-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mock'/><category scheme='http://www.blogger.com/atom/ns#' term='stubs'/><category scheme='http://www.blogger.com/atom/ns#' term='testing'/><category scheme='http://www.blogger.com/atom/ns#' term='release 1.5'/><title type='text'>Click supports functional and unit testing!</title><content type='html'>One of the first features completed for the upcoming 1.5 release, was to revamp the mock package and add functional and unit testing support. There is no need to extend any classes or override methods. Testing works out of the box.&lt;br /&gt;&lt;br /&gt;For testing purposes there are two classes of interest: &lt;a href="http://fisheye3.cenqua.com/browse/click/trunk/click/mock/src/net/sf/click/MockContainer.java"&gt;MockContainer&lt;/a&gt; and &lt;a href="http://fisheye3.cenqua.com/browse/click/trunk/click/mock/src/net/sf/click/MockContext.java"&gt;MockContext&lt;/a&gt;.&lt;br /&gt;(Since 1.5 has not yet publicly available I will just refer to the actual source code)&lt;br /&gt;&lt;br /&gt;Which class to use depends on what you want to test.&lt;br /&gt;&lt;br /&gt;If you want to test your pages (functional tests) use the MockContainer which simulates a servlet container such as Tomcat or Jetty. With the container one will be enable to mock page requests, form submissions, file uploads, navigation etc.&lt;br /&gt;&lt;br /&gt;In order to use MockContainer you need to specify a web directory where the container can find resources such as javascript, stylesheets and images. The easiest way to achieve this is to point the container to your project's web directory.&lt;br /&gt;&lt;br /&gt;Example usage:&lt;br /&gt;&lt;pre class="brush: java"&gt;public class IntegrationTest extends TestCase {&lt;br /&gt;    public void testFirstPage() {&lt;br /&gt;        // Specify the project web directory for example: 'c:/dev/web'&lt;br /&gt;        MockContainer container = new MockContainer("c:/dev/web");&lt;br /&gt;&lt;br /&gt;        // Bootstrap the container&lt;br /&gt;        container.start();&lt;br /&gt;&lt;br /&gt;        // Set a request parameter&lt;br /&gt;        container.setParameter("myparam", "Some parameter");&lt;br /&gt;&lt;br /&gt;        // Simulate a user requesting the page, FirstPage. FirstPage will forward to SecondPage.&lt;br /&gt;        FirstPage page = (FirstPage) container.testPage(FirstPage.class);&lt;br /&gt;&lt;br /&gt;        // Assert that FirstPage does indeed forward to SecondPage&lt;br /&gt;        Assert.assertTrue(container.getForwardPageClass(), SecondPage.class);&lt;br /&gt;&lt;br /&gt;        container.stop();&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;MockContext on the other hand is useful for testing custom controls (components).&lt;br /&gt;&lt;br /&gt;Note that it is not necessary to specify a web directory when using MockContext.&lt;br /&gt;&lt;br /&gt;Example usage:&lt;br /&gt;&lt;pre class="brush: java"&gt;public class ValidationFieldTest extends TestCase {&lt;br /&gt;&lt;br /&gt;    public void testValidationField() {&lt;br /&gt;&lt;br /&gt;        // Initialize the context.&lt;br /&gt;        MockContext context = MockContext.initContext();&lt;br /&gt;&lt;br /&gt;        int maxLength = 10;&lt;br /&gt;        String fieldName = "name";&lt;br /&gt;        ValidationField field = new ValidationField(fieldName, maxLength);&lt;br /&gt;&lt;br /&gt;        // Retrieve the request and set field request parameter.&lt;br /&gt;        MockRequest request = context.getMockRequest();&lt;br /&gt;        request.setParameter(fieldName, "value");&lt;br /&gt;&lt;br /&gt;        // onProcess binds the request attribute and field value&lt;br /&gt;        assertTrue(textField.onProcess());&lt;br /&gt;&lt;br /&gt;        // Assert that the field is still valid.&lt;br /&gt;        assertTrue(textField.isValid());&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;That is all there is to it.&lt;br /&gt;&lt;br /&gt;The API is still evolving and feedback is appreciated. Our mailing lists are available &lt;a href="http://incubator.apache.org/click/docs/click-online.html#mailing-lists"&gt;here&lt;/a&gt;:&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2587500056091829705-4602961878383334086?l=click-framework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://click-framework.blogspot.com/feeds/4602961878383334086/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2587500056091829705&amp;postID=4602961878383334086' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2587500056091829705/posts/default/4602961878383334086'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2587500056091829705/posts/default/4602961878383334086'/><link rel='alternate' type='text/html' href='http://click-framework.blogspot.com/2008/04/one-of-first-features-completed-for.html' title='Click supports functional and unit testing!'/><author><name>Bob Schellink</name><uri>http://www.blogger.com/profile/10996406110751921749</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp1.blogger.com/_Ijl8pg_nh3E/SIMk9Q4_D4I/AAAAAAAAAAk/gNfr_SDEGL8/S220/sabob200-200.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2587500056091829705.post-4666348999927070928</id><published>2008-03-31T11:21:00.000-07:00</published><updated>2009-01-21T12:44:25.279-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='version'/><category scheme='http://www.blogger.com/atom/ns#' term='1.4.1'/><category scheme='http://www.blogger.com/atom/ns#' term='release'/><title type='text'>Click 1.4.1 is available!</title><content type='html'>Click web framework version 1.4.1 is now available. First up the links:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="https://sourceforge.net/project/showfiles.php?group_id=82095&amp;amp;package_id=84113"&gt;Download Click1.4.1&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://incubator.apache.org/click"&gt;Click Home&lt;br /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.avoka.com/click-examples/"&gt;Live Examples&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;This release fixes a number of important JSP and Ajax related bugs.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Changes include:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Added new method &lt;a href="http://incubator.apache.org/click/docs/click-api/net/sf/click/Context.html#isAjaxRequest%28%29"&gt;Context.isAjaxRequest()&lt;/a&gt; which enables conditional checking for Ajax requests.&lt;/li&gt;&lt;li&gt;Improved alphanumeric column sorting. This issue was raised by Ben Young.   [&lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-344"&gt;344&lt;/a&gt;]&lt;/li&gt;&lt;li&gt;Upgradeded to Scriptaculous 1.8.1 to fix auto form submit. This issue was raised by Andy Key.   [&lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-336"&gt;336&lt;/a&gt;]&lt;/li&gt;&lt;li&gt;Fixed sendRedirect to convert &lt;em&gt;.jsp&lt;/em&gt; extension to &lt;em&gt;.htm&lt;/em&gt; when redirecting to a  JSP page. [&lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-338"&gt;338&lt;/a&gt;]&lt;/li&gt;&lt;li&gt;Fixed Form &lt;tt&gt;clearValues()&lt;/tt&gt; to exclude certain HiddenFields from being cleared. [&lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-337"&gt;337&lt;/a&gt;]&lt;/li&gt;&lt;li&gt;Fixed Form action incorrect when using JSP. This issue was raised by Chas Erickson.   [&lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-334"&gt;334&lt;/a&gt;]&lt;/li&gt;&lt;li&gt;Fixed Form.onSubmitCheck() to ignore Ajax calls. This issue was raised by Ivan Furdi.   [&lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-333"&gt;333&lt;/a&gt;]&lt;/li&gt;&lt;li&gt;   Fixed Form and FieldSet column layout bug    [&lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-331"&gt;331&lt;/a&gt;].&lt;/li&gt;&lt;/ul&gt;For those interested in the latest development release (1.5M1) can view the roadmap below:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="https://issues.apache.org/click/browse/CLK?report=com.atlassian.jira.plugin.system.project:roadmap-panel"&gt;1.5M1 roadmap&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Enjoy.&lt;br /&gt;&lt;br /&gt;The Click team.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2587500056091829705-4666348999927070928?l=click-framework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://click-framework.blogspot.com/feeds/4666348999927070928/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2587500056091829705&amp;postID=4666348999927070928' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2587500056091829705/posts/default/4666348999927070928'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2587500056091829705/posts/default/4666348999927070928'/><link rel='alternate' type='text/html' href='http://click-framework.blogspot.com/2008/03/click-141-is-available.html' title='Click 1.4.1 is available!'/><author><name>Bob Schellink</name><uri>http://www.blogger.com/profile/10996406110751921749</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp1.blogger.com/_Ijl8pg_nh3E/SIMk9Q4_D4I/AAAAAAAAAAk/gNfr_SDEGL8/S220/sabob200-200.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2587500056091829705.post-1457697292804953183</id><published>2008-03-05T09:47:00.000-08:00</published><updated>2009-01-20T01:21:26.057-08:00</updated><title type='text'>ClickIDE 2.0.0 released: now with Cayenne and Spring support</title><content type='html'>Naoki Takezoe has released the latest version of ClickIDE. This release supports Click Framework 1.4 and Eclipse 3.3/WTP 2.0.&lt;br /&gt;Important links:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://incubator.apache.org/click/docs/click-ide.html"&gt;ClickIDE Home&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;&lt;a href="https://sourceforge.net/project/showfiles.php?group_id=82095"&gt;Download ClickIDE 2.0.0&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;There have been a couple of important new features:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;New Features:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Generates Click project with Cayenne and Spring support.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Added new Cayenne mapping project creation wizard.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt; Added Cayenne Modeler launcher.&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Wizard generates an empty cayenne.xml and launches it with Cayenne Modeler.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Added classpath variables "CAYENNE_LIB" and "CAYENNE_NODEPS_LIB". You can add cayenne.jar or   cayenne-nodeps.jar to your project classpath using these   variables from the project build path settings.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Additional Velocity variables configuration for code completion in the project property page.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Enjoy Click!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2587500056091829705-1457697292804953183?l=click-framework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2587500056091829705/posts/default/1457697292804953183'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2587500056091829705/posts/default/1457697292804953183'/><link rel='alternate' type='text/html' href='http://click-framework.blogspot.com/2008/03/clickide-200-released-now-with-cayenne.html' title='ClickIDE 2.0.0 released: now with Cayenne and Spring support'/><author><name>Bob Schellink</name><uri>http://www.blogger.com/profile/10996406110751921749</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp1.blogger.com/_Ijl8pg_nh3E/SIMk9Q4_D4I/AAAAAAAAAAk/gNfr_SDEGL8/S220/sabob200-200.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-2587500056091829705.post-2950540749781325991</id><published>2008-03-04T00:58:00.000-08:00</published><updated>2009-01-21T12:44:35.472-08:00</updated><title type='text'>Click 1.4 final released!</title><content type='html'>Click 1.4 has been released yesterday. A big thanks goes to all users and developers for their contributions in making this release possible. Important links:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="https://sourceforge.net/project/showfiles.php?group_id=82095&amp;amp;package_id=84113"&gt;Download Click1.4&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://incubator.apache.org/click"&gt;Click Home&lt;br /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.avoka.com/click-examples/"&gt;Live examples&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;Click is a simple and intuitive page and component oriented Java web framework. There are no unnecessary abstractions or complex concepts to learn and understand. Pages and components are developed in Java while layouts are specified in Velocity or JSP. You don't have to repeat component hierarchies in your view as each component knows how to render itself.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Highlights for 1.4 includes&lt;/span&gt;:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Stateful page support which really make developing complex pages and page flows much easier.&lt;/li&gt;&lt;li&gt;New PerformanceFilter which gives your applications Yahoo style performance for very little effort.&lt;/li&gt;&lt;li&gt;New AutoCompleteTextField control which gives you Ajax google suggest functionality.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;New Ant task to build quickly build application templates or scaffolding.&lt;/li&gt;&lt;li&gt;Added support for Cayenne versions 2.x and 3.x.&lt;/li&gt;&lt;li&gt;ThreadLocal Context support which giving you access to the Context in page constructors.&lt;/li&gt;&lt;li&gt;New Control event methods, onInit(), onRender() and onDestroy().&lt;/li&gt;&lt;li&gt;Lots more code examples and design patterns on click-examples.&lt;/li&gt;&lt;li&gt;Performance improvements.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Since RC3 there have been a couple of important bug fixes:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Fixes:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;   Updated Cayenne controls to support Cayenne version 3.0.    &lt;/li&gt;&lt;li&gt;   Fixed CayenneForm &lt;tt&gt;save()&lt;/tt&gt; method inserting multiple new entries bug.   This issue was raised and fixed Tore Halset   [&lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-307"&gt;307&lt;/a&gt;].    &lt;/li&gt;&lt;li&gt;   Fixed Table invalid handling params bug.   This issue was raised and fixed by Satoshi Takata   [&lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-308"&gt;308&lt;/a&gt;].    &lt;/li&gt;&lt;li&gt;   Fixed DateField readonly JavaScript bug.   This issue was raised by Tore Halset   [&lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-309"&gt;309&lt;/a&gt;].    &lt;/li&gt;&lt;li&gt;   Fixed DateField Dutch Calendar translation.   This issue was raised by Harry Wissiak   [&lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-310"&gt;310&lt;/a&gt;].    &lt;/li&gt;&lt;li&gt;   Fixed DateField &lt;tt&gt;$imports&lt;/tt&gt; usage JavaScript bug.   This issue was raised by Itou Akihiro   [&lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-311"&gt;311&lt;/a&gt;].    &lt;/li&gt;&lt;li&gt; Fixed bug where charset encoding being set after request parameters are read. This issue was raised and fixed by Ricardo Lecheta [&lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-312"&gt;312&lt;/a&gt;].    &lt;/li&gt;&lt;li&gt;   Fixed ThreadLocal Context forwarding bug on Jetty 5.1.*.   This issue was raised by Ricardo Lecheta   [&lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-314"&gt;314&lt;/a&gt;].    &lt;/li&gt;&lt;li&gt;   Fixed 'script.aculo.us' Ajax.Autocompleter bug with IE.   This issue was raised by Itou Akihiro   [&lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-322"&gt;322&lt;/a&gt;].    &lt;/li&gt;&lt;li&gt;   Fixed CompressionServletResponseWrapper NPE bugs on WebSphere and Jetty.   This issue was raised by Ricardo Lecheta   [&lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-323"&gt;323&lt;/a&gt;].&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Enjoy.&lt;br /&gt;&lt;br /&gt;The Click team.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2587500056091829705-2950540749781325991?l=click-framework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://click-framework.blogspot.com/feeds/2950540749781325991/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2587500056091829705&amp;postID=2950540749781325991' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2587500056091829705/posts/default/2950540749781325991'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2587500056091829705/posts/default/2950540749781325991'/><link rel='alternate' type='text/html' href='http://click-framework.blogspot.com/2008/03/click-14-final-released.html' title='Click 1.4 final released!'/><author><name>Bob Schellink</name><uri>http://www.blogger.com/profile/10996406110751921749</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp1.blogger.com/_Ijl8pg_nh3E/SIMk9Q4_D4I/AAAAAAAAAAk/gNfr_SDEGL8/S220/sabob200-200.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2587500056091829705.post-2979174817138706201</id><published>2008-02-06T01:10:00.000-08:00</published><updated>2010-07-15T23:11:23.546-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='version'/><category scheme='http://www.blogger.com/atom/ns#' term='1.4'/><category scheme='http://www.blogger.com/atom/ns#' term='release'/><title type='text'>Click 1.4.-RC3 released: now with stateful page support</title><content type='html'>Click1.4-RC3 has been released today. Below are the related links:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="https://sourceforge.net/project/showfiles.php?group_id=82095&amp;amp;package_id=84113"&gt;Download Click1.4-RC3&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://incubator.apache.org/click"&gt;Click Home&lt;br /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.avoka.com/click-examples/"&gt;Live examples&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Click is a page and component oriented Java web framework. Pages are mostly developed in Java, while rendering is performed by Velocity or JSP.&lt;br /&gt;A lot of thought went into making Click as simple as possible and developers should be up and running within a day.&lt;br /&gt;&lt;br /&gt;Since RC2 there have been a number of new features and important bug fixes.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Improvements:&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;1. Pages can now be stateful:&lt;br /&gt;&lt;pre class="brush: java"&gt;public class MyPage extends Page {&lt;br /&gt;&lt;br /&gt;public Form form = new Form("myForm");&lt;br /&gt;&lt;br /&gt;public MyPage() {&lt;br /&gt;setStateful(true); // Page will be persisted between requests.&lt;br /&gt;form.add(new TextField("search-term");&lt;br /&gt;form.add(new Submit("submit"));&lt;br /&gt;}&lt;br /&gt;...&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;More documentation on stateful pages can be found &lt;a href="http://incubator.apache.org/click/docs/pages.html#page-stateful"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;2.    Added a &lt;a href="http://incubator.apache.org/click/docs/extras-api/net/sf/click/extras/filter/PerformanceFilter.html"&gt;PerformanceFilter&lt;/a&gt;    to significantly improve the performance of Click applications. The filter is based on  &lt;a href="http://developer.yahoo.com/performance/rules.html"&gt;Yahoo's Exceptional Performance&lt;/a&gt; best practices for speeding up your web site. This filter combined with framework changes enable Click applications to get an Grade A rating with Yahoo's Firefox plugin: &lt;a href="http://developer.yahoo.com/yslow/"&gt;YSlow&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Also in this release:&lt;/span&gt;&lt;br /&gt;&lt;dl&gt;&lt;dd&gt;&lt;ul style="padding: 0em; margin-left: 0em;"&gt;&lt;li class="change"&gt;   Added new AJAX &lt;a href="http://incubator.apache.org/click/docs/extras-api/net/sf/click/extras/control/AutoCompleteTextField.html"&gt;AutoCompleteTextField&lt;/a&gt; which provides Google suggest style lookups.       &lt;/li&gt;&lt;li class="change"&gt;         Added new Table CSS class styles: &lt;tt&gt;blue1, blue2, orange1, orange2&lt;/tt&gt;       &lt;/li&gt;&lt;li class="change"&gt;   &lt;span style="font-family:monospace;"&gt;Fixed &lt;/span&gt;&lt;tt&gt;Form.copyFrom()&lt;/tt&gt; to align with special Map handling of &lt;tt&gt;Form.copyTo()&lt;/tt&gt;.   [&lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-278"&gt;278&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;      Fixed Form submit check to handle multiple forms per page.   [&lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-279"&gt;279&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;      Fixed exception when using &lt;tt&gt;Form.onSecurtyCheck&lt;/tt&gt; in a stateful form.   This issue was raised by Joel Schmidt   [&lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-267"&gt;267&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;   Fixed PickList multiple selection bug.   This issue was raised by Ricardo Lecheta   [&lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-280"&gt;280&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;   Fixed Context leak under heavy usage. [&lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-282"&gt;282&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;   Fixed Page automapping bug.   This issue was raised by Sep and Ricardo Lecheta   [&lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-277"&gt;277&lt;/a&gt;,     &lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-294"&gt;294&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;   Fixed Linux ResourceBundle classloading bug.   This issue was raised by Victor   [&lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-293"&gt;293&lt;/a&gt;].    &lt;/li&gt;&lt;li class="change"&gt;   Fixed Tree encodeURL bug.   This issue was identified by Thomas Bernhard   [&lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-301"&gt;301&lt;/a&gt;].       &lt;/li&gt;&lt;li class="change"&gt;   Fixed Table memory allocation bug for large paged rowLists.   This issue was identified by Naoki Takezoe   [&lt;a target="blank" href="https://issues.apache.org/click/browse/CLK-305"&gt;305&lt;/a&gt;].       &lt;/li&gt;&lt;/ul&gt;&lt;/dd&gt;&lt;/dl&gt;For a complete list of changes visit the &lt;a href="http://incubator.apache.org/click/docs/roadmap-changes.html"&gt;roadmap and changes.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Enjoy.&lt;br /&gt;&lt;br /&gt;The Click team.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2587500056091829705-2979174817138706201?l=click-framework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://click-framework.blogspot.com/feeds/2979174817138706201/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2587500056091829705&amp;postID=2979174817138706201' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2587500056091829705/posts/default/2979174817138706201'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2587500056091829705/posts/default/2979174817138706201'/><link rel='alternate' type='text/html' href='http://click-framework.blogspot.com/2008/02/click-14-rc3-released-now-with-stateful.html' title='Click 1.4.-RC3 released: now with stateful page support'/><author><name>Bob Schellink</name><uri>http://www.blogger.com/profile/10996406110751921749</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp1.blogger.com/_Ijl8pg_nh3E/SIMk9Q4_D4I/AAAAAAAAAAk/gNfr_SDEGL8/S220/sabob200-200.jpg'/></author><thr:total>0</thr:total></entry></feed>
