Apache Click becomes a Top-Level Project and v2.1.0 now available
Apache Click has become a new Apache Top Level Project (TLP),
signifying that Click is a well-governed project under the Apache
Software Foundation principles.
Furthermore
Click 2.1.0 has been released sporting many new features, including
support for Google
App Engine, a free Java hosting environment from Google.
- Click Home
- Roadmap
and Changes - full list of new features, improvements and bug fixes - Upgrade
Path - please see the upgrade path when upgrading from 2.0.1 or
earlier. - Download
Click 2.1.0 - Maven bundles
- Live examples
New features and improvements:
- Added support for Google
App Engine, a free Java hosting environment from Google.
This provides an ideal environment for students and startups
to easily host their Click applications online. See GoogleAppEngineListener
for details [560]. - Added support for an in-memory File
Upload Service that can be used for uploading files in a
Google
App Engine environment. -
Added support for templates with custom extensions through the
new ConfigService.isTemplate
method. The default ConfigService implementation,
XmlConfigService, provides support for the extensions .htm
and .jsp, but new extensions can be provided in a
subclass. See the JavaDoc
for details [568]. - Added support to the Page class for
conditionally including Control head
elements through the new method includeControlHeadElements
[571]. - Added support to deploy resources inside JARs
from the Servlet 3.0 compliant location, META-INF/resources.
Click's own pre-packaged resources are now also located in
the JAR under META-INF/resources [570]. - Added new Calendar popup to DateField. This
Calendar popup uses Calendar Date Select
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 Click Calendar
instead. - Added
first class support for HEAD elements such as JavaScript and Css.
The following classes were added: Element,
ResourceElement,
JsImport,
JsScript,
CssImport
and CssStyle.
A new method was added to Page and Control: Control.getHeadElements()
and Page.getHeadElements()
[501]. - Added SubmitLink
control that can submit a Form [519]. -
Added HiddenList
control for rendering and submitting a list of hidden fields
[491]. - Added pluggable security access controller (AccessController)
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 [406]. - 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: deploying
resources in a restricted environment. - Added a ResourceService,
for serving static resources at runtime. This service is
useful when deploying Click applications in restricted
environments. For more details see the section: deploying
resources in a restricted environment [564]. - Added method, ClickUtils.createTemplateModel,
which returns a template model containing objects such as the
Context path, Page path, HTTP request, HTTP response, HTTP
session etc. - Added ability to
specify a custom TreeNode icon through the new method
TreeNode.setIcon(String).
This issue was raised and fixed by Tim Hooper [494]. - Added method Format.url
for encoding URL's in templates [399]. - Added method FieldColumn.setProperty
that can be overriden to provide custom binding for complex
domain objects. This issue was raised and fixed by WarnerJan
Veldhuis [528]. - Added TypeConverter configuration option to
ClickServlet. See getTypeConverter()
method for details. This issue was raised Joseph Schmidt and
fixed by Adrian A. [539]. - Added Slf4jLogService
for supporting multiple application servers. This
issue was raised Oliver Burn [555]. - Added @Bindable
annotation support for page field autobinding. @Bindable
supports public, protected and private Page variables
[556,
599
]. - Added property files with
translation for the Russian language. This issue was raised and
fixed by Andrey Rybin [607], [611]. - Added new Tree methods setWidth
/ getWidth
and setHeight
/ getHeight.
Also fixed rendering issues in IE6/7 for long node labels that
overflow the tree width [616]. - The click.dtd has been published to
http://click.apache.org/dtds/click-2.1.dtd. - If you want your configuration to conform to
the click.dtd, include the following declaration in your
click.xml:"http://click.apache.org/dtds/click_2_1.dtd">
- Improved Form validation to allow Form
subclasses to override the validate
method and implement cross-field validation. The following
changes were made: the previous validate method was
renamed to validateFileUpload
and a new empty validate
method was introduced, that can safely be overridden in
subclasses [572]. - Improved Page redirect to support parameters.
See the new Page methods setRedirect(String,
Map) and setRedirect(Class,
Map) This issue was raised and fixed by Adrian
[536]. - Improved Link Controls to support multivalued
parameters through the new AbstractLink methods getParameterValues()
and setParameterValues()
[554]. - Improved Table to support very large datasets
by promoting the methods getFirstRow()
and getLastRow()
as public. These methods provide the necessary information to
only retrieve the displayed rows [504]. - Improved LinkDecorator to
support target identfier property parameter names. This issue
was raised by Demetrios Kyriakis and fixed by fixed by Adrian A.
[400]. - Improved PickList methods getValueObject()
and setValueObject(Object)
to delegate to getSelectedValues()
and addSelectedValue(String)
respectively [490]. - Improved Spring integration with SpringClickServlet
and PageScopeResolver,
supporting Spring instantiated Pages with @Component
configuration [534]. - Improved CompressionServletResponseWrapper
and CompressionResponseStream classes to have public
visibility to enable use in custom servlet Filters [547]. - Improved Menu control to
render attribute class="selected" when the menu item is
selected. This issue was raised and fixed by Frederic Daoud [551]. - Improved PerformanceFilter to
implement exclude-paths filtering [498]. - Improved XmlConfigService to scan for
deployable resources inside folders on the classpath
[552]. - Improved Cayenne DataContextFilter, including
adding support for LifecycleListener registration
[559]. - Improved AbstractLink
to allow rendering of both icon and label in Link controls
(default behavior renders either a label or an icon)
[535]. - Improved Page and Control message handling
with null args. This issue was raised by WarnerJan Veldhuis
[600]. - Fixed resource deployment on JBoss 5 and up.
The solution is based on the work done by the Stripes
Framework developers [589].
Deprecated:
-
Deprecated methods: Control.getHtmlImports()
and Page.getHtmlImports().
These methods have been deprecated in favor of Control.getHeadElements()
and Page.getHeadElements(). - Deprecated methods: Page.getPageImports()
and Page.setPageImports().
These methods have been deprecated in favor of Page.getHeadElements().
Updated
third-party libraries:
- Update Velocity library to version 1.6.3.
- Update Cayenne library to
version 3.0M6. - Update Prototype.js
library to version 1.6.1.
New Documentation:
- Documentation
has been converted to Docbook and are made available in three
different flavors: PDF,
HTML (single page) and HTML (multiple pages). Thanks to
Gilberto C Andrade for doing the conversion [482]. - Added
a new section, Deploying
resources in a restricted environment, describing how to
deploy static resources in environments where WAR/EAR are not
unpacked or where file system permissions are restricted, such
as Google
App Engine. - Added documentation describing the new
HEAD element support. Please see the new section on Page
HEAD elements and the section on Control
HEAD elements.
New
examples:
-
Page HEAD elements demonstrates how to add JsImport,
JsScript,
CssImport
and CssStyle
HEAD elements to a Page. -
Control HEAD elements demonstrates how to add JsImport
and CssImport
HEAD elements to a custom Control. -
SubmitLink Demo shows how to use the new SubmitLink
control. -
Large Dataset 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. -
Reusable Panel is an example of a reusable Panel
which provides a Form for capturing Client details. -
Quartz Job Scheduler is an example demonstrating how to
integrate the Quartz Job Scheduling framework into a Click
application. - Excel
Table Exporter example demonstrates how to export a Click Table
to an Excel spreadsheet using Apache POI.
Enjoy.
-
The Click team