Jakarta Tapestry - What's New

Release 2.3-rc-1

  • Installed Apache Foundation license and copyrights into all source files.
  • Added Spanish translation of validation strings, contributed by Juan Alvarez.
  • Fixed some deployment issues when deploying into Tomcat.
[ 650592 ] Add MaskEdit component
[ 651331 ] Added DatePicker disable parameter
[ 655089 ] Add ExternalPageCalback
[ 660372 ] Add Global object

Release 2.3-alpha-1

Tapestry is now available under the terms of the Apache Software License. Previous releases were released under the LGPL, but are now retroactively licensed under the ASL as well.

Added a Developers Page.

Removed code dependency on Log4J, using Jakarta's commons-logging wrapper layer instead. Use the Enum implementation from Jakarta's commons-lang library.

Rework dynamic code loading so that a subclass of ApplicationServlet is no longer necessary.

Add methods to INamespace and IPage to make dealing with namespaces and qualified page names easier.

Joe Panico has contributed the PopupLink component.

<jwc id="..."> is no longer allowed in HTML templates.

Upgrade to OGNL 2.3.0.

[ 619481 ] use jakarta commons lang Enum
[ 627478 ] Don't require servlet subclass
[ 614324 ] Add a param "raw" in addition to "key"
[ 627332 ] NPE in BaseValidator (form without body)
[ 557332 ] Use a search path for properties
[ 625721 ] Forms never stateful
[ 637048 ] Add PopLink
[ 643239 ] Add EmailValidator
[ 633608 ] ServiceLink docs missing service param
[ 644235 ] Body component ignores element
[ 643728 ] user supplied RequestContext
[ 643729 ] user supplied MultipartDecoder 
[ 628153 ] add getAttribute to RequestContext
[ 633073 ] Rollover doesn't work in form
[ 631764 ] AbstractComponent API

Release 2.2

Use the version of Jetty that's compatible with JDK 1.2.

[ 619444 ] Contrib:DateField min/max params broken
[ 620496 ] JS net/sf/tapestry/form/Calendar.js

Release 2.2-rc-1

[ 616489 ] IPublicBean not accessible.
[ 616377 ] DatePicker value error
[ 582614 ] ValidField doesn't call getValidator()
[ 617327 ] Contrib:DateField specification invalid
[ 616851 ] Can't redirect to a library page
[ 617867 ] ImageSubmit null image
[ 618317 ] Contrib:NumericField missing type param
[ 618342 ] NPE in AbstractComponent toString

Release 2.2-beta-3

Upgrade to Jetty 4.1.0 and OGNL 2.1.4.

Mind Bridge has contributed a Table component (really, a complete framework for creating sortable tables that present data in page-sized blocks).

[ 608368 ] DataSqueezer / ClassLoader
[ 608764 ] Work around errant valueUnbound()
[ 608162 ] ExternalService allows only 1 parameter
[ 611551 ] DTD validation error with XML Spy
[ 613441 ] SelectPropertySelectionRenderer HTML
[ 604194 ] Specify charset by Shell component
[ 610376 ] Expose Foreach's index as a property

Release 2.2-beta-2

The ValidField now performs client-side validation of input. If a field is in error when the form is submitted, then an alert is displayed and the field is selected.

Begin making more use of OGNL expressions in place of Java code.

Malcom Edgar has contributed a DatePicker component.

Some more refactorings: IComponent methods addWrapped()/renderWrapped() -> addBody()/renderBody().

Tapestry documentation is now available in PDF format.

[ 602881 ] Add hooks for ValidField client-side
[ 603023 ] StaleSession.page has error
[ 603208 ] Support parameter direction "form"
[ 603269 ] ListEdit improvements
[ 603362 ] Inconsistency in Tapestry_1_3.dtd
[ 603132 ] Add a service similar to ExternalService
[ 582436 ] Script / Required Symbols
[ 604834 ] InspectorButton disabled param
[ 604646 ] ImageSubmit ignores disabledImage
[ 603260 ] make Form "listener" not required
[ 603826 ] IUploadFile provide Mime Type
[ 604944 ] Add DateEdit component
[ 603130 ] Add an initPage() method to AbstractPage
[ 607074 ] Make IMarkupWriter a bit smarter
[ 604201 ] Markup Writer should output XHTML
[ 607451 ] log error when unmatched components

Release 2.2-beta-1

Tapestry has now replaced its simple property path support with the far more powerful Object Graph Navigation Library expressions. This promises to greatly extend the expressiveness of the specifications and further reduce the need for Java code. The property-path attribute of the <binding> element has been renamed to expression (this only affects the latest, 1.3, version of the DTD).

There are some small costs to using OGNL; the largest being a restriction in bean names, component ids and asset names. All of these must now be valid Java identifiers, and so cannot contain the dash ('-') character, which was previously permitted. This affects all specifications, including older versions.

Malcolm Edgar has lead the push to provide an excellent Tapestry Component Reference.

You can now control the exact location of a component template by declaring an asset named $template (which is not normally a legal asset name, due to the dollar sign). If such an asset exists, then it is used as the template.

A number of poorly named components have been renamed:

  • Action -> ActionLink
  • Direct -> DirectLink
  • InsertBlock -> RenderBlock
  • InsertWrapped -> RenderBody
  • Page -> PageLink
  • Service -> ServiceLink
  • ShowInspector -> InspectorButton
  • Text -> TextArea

Previous names will be maintained until at least release 2.3.

In addition, the documentation has been brought (largely) up to date with the significant changes so far in release 2.2.

[ 582421 ] Way to specify template location
[ 596929 ] NumericField params require java-type
[ 597314 ] Problems with URLs
[ 595985 ] Tapestry behind firewall
[ 598609 ] NumericField displayWidth inconsistent
[ 598371 ] Radio and RadioGroup broken
[ 599608 ] App startup exception
[ 599663 ] Disallow spec path a comp. type
[ 601018 ] Use OGNL instead of home brew

Release 2.2-alpha-4

Update to latest versions of JCommon, JFreeChart and Log4J. Added the <extension> element to the application and library specifications.

[ 584040 ] Add hooks for custom configuration
[ 579081 ] getApplicationSpecification
[ 587683 ] Frameset tag for JavaScript
[ 589818 ] Forward, not redirect, to local resource
[ 591352 ] <bean> should allow <property>
[ 592289 ] helper bean: render lifecycle
[ 591801 ] Exception changing log priority

Release 2.2-alpha-3

Tapestry now supports libraries, which can provide components, pages and engine services to an application. Libraries can also include libraries. The application specification has been ammended to include a new <library> element, and a new type of specification, the library specification, has been added.

Renamed all page specifications from ".jwc" to ".page".

[ 584466 ] Cant set bean prop from localized string
[ 494453 ] invalid-date-format message string wrong
[ 584731 ] Text's value parameter required
[ 579843 ] PageLoader INFO msg wrong
[ 586171 ] Add namespace/library support

Release 2.2-alpha-2

Revamp how services construct and parse URLs. Rework service parameters to be typed objects, instead of simple strings (this is a change which may break some existing code).

A new version of the DTD may now be used which distinguishes between page specifications and component specifications (page specifications do not specify several attributes and elements related to component parameters).

[ 581199 ] Slashes in service parameters
[ 581160 ] Wrong case in WAR file name
[ 579583 ] Simplify PropertySelection
[ 581691 ] Object not String for service parameters
[ 582614 ] ValidField doesn't call getValidator()
[ 583665 ] ValidatingTextField specification wrong
[ 583693 ] Extend Block/InsertBlock
[ 534055 ] Make page-spec and comp-spec distinct

Release 2.2-alpha-1

Update to Jetty 4.0.4.

[ 576523 ] Better syntax for Script documents
[ 562964 ] Non-unique app name problems
[ 578869 ] InsertComponent/DateField, null values
[ 578921 ] Error in listener map error message
[ 579131 ] Load order problem with string-binding
[ 579642 ] Rename Direct context param
[ 579689 ] Hidden should convert values
[ 579141 ] IOExceptions related to exception page

Release 2.1-beta-2

Note the change in Tapestry release naming, described in detail in the Tapestry Contributor's Guide.

[ 574792 ] localized strings don't work
[ 573860 ] Shell component hardcodes DTD
[ 573858 ] No way to remove PageDetachListener
[ 573753 ] client TCP reset causes SocketException
[ 573653 ] broken assets
[ 574181 ] ValidationDelegate should eval form name
[ 575228 ] Validation messages not localized

Release 2.0.5

Updated Tapestry to automatically configure the demo for JBoss 3.0.0 (this includes a switch to the JDK 1.3 compiler, for compatibility with the JBoss libraries).

Cleaned up the look of the default exception page. Reorganized the home page, to link to the new Tapestry Wiki, and to move more static content onto SourceForge.

[ 563552 ] IllegalStateException not beeing caught
[ 559647 ] Switch to JBoss 3.0.0
[ 566158 ] ValidField NPE if no delegate
[ 566943 ] Submit problem with tag type
[ 566000 ] Add field to Spec classed to record DTD

Release 2.0.4

Significant improvements to localization support, including support for localized properties files for each component, the <string-binding> element for accessing localized strings, and a new form of markup in the template to access localized strings.

[ 556766 ] Improve localization support
[ 560256 ] Make some property bindings invariant
[ 560255 ] ListEdit: doesn't render element
[ 559575 ] Component Frame cannot render
[ 558165 ] TextField value attribute not required
[ 560506 ] Cannot disable Checkbox component
[ 560217 ] Upload problems depending on browser
[ 550279 ] Define serialVersionUID for classes

Release 2.0.3

Renamed Java packages from com.primix.tapestry.* to net.sf.tapestry.*, along with some significant other reorganizations, especially to the way component parameters are handled.

Added an initial Contributor's Guide for Developers wishing to contribute code to the Tapestry project.

[ 549479 ] Rename packages to net.sf.tapestry
[ 550280 ] Remove IDirectListener
[ 555165 ] Simplify setupLogging()
[ 553310 ] Set properties from parameter bindings
[ 552851 ] Add frame component
[ 549312 ] Delete support for old specifications
[ 556359 ] Inspector doesn't raise at javanuke
[ 555167 ] Maintain JDK 1.2.2 compatibility

Release 2.0.2a

[ 549482 ] NPE in RequestCycle.observeChange()

Release 2.0.2

Changed the inspector icon into an animated GIF for compatiblility with more browsers.

Created the new GenericLink component, which allows links to arbitrary URLs (including JavaScript event handlers), but is still an IServiceLink which means it can wrap Rollover components.

[ 463649 ] NN6 & ShowInspector
[ 544394 ] Release notes / deleted methods
[ 548183 ] Component specification of Option error
[ 548188 ] Component Option implementation error
[ 549144 ] tutorial load-on-startup and WL issue
[ 549142 ] WL issue with default tapestry jar name
[ 549314 ] Spec parse error
[ 521456 ] Allow IRequestCycle.discardPage() from listeners

Release 2.0.1

Removed a lot of deprecated code.

[ 536289 ] remove Jetty dependencies
[ 537398 ] Fix synch/double check bugs
[ 537426 ] Remove object pooling
[ 539600 ] java-class should be java-type in docs
[ 494221 ] Add PDF (or printable) documentation

Release 2.0.0

Added the Quotes page to this website. Added two new tabs to the Workbench, demonstrating redirects and exception reporting. Marked a number of methods (related to object pooling) as deprecated.

Minor formatting changes to the web site and Virtual Library.

Release 1.0.10

Changed the build to include debugging symbols with the frameworks. Fixed a deployment problem with the Tutorial. Added descriptions to most components and parameters. Modified the Inspector to display component and parameter descriptions.

Added a new page to the Workbench Tutorial: Chart. The Chart page allows a user to dynamically create a pie chart.

Made it easier to create subclasses of AbstractResponseWriter.

[ 532562 ] Submit.jwc contains error
[ 532587 ] Submit throws NPE
[ 532815 ] ValidationDelegate errors
[ 532758 ] add descriptions to builtin components
[ 499655 ] HTMLResponseWriter enhancements

Release 1.0.9

The framework and contrib jar files are now named with the release number (i.e., com.primix.tapestry-1.0.9.jar). In addition, the source code for these frameworks, and the examples, is now distributed as Jar files instead of directories of files in the src directory. This makes for easier source lookup when using Eclipse, and shrinks the size of the distribution as well.

The way engine services are defined and used has been completely overhauled.

Services are now defined in the application specification and a single instance of the service object is instantiated and shared by all engine instances (for the application).

Made it easier to override the creation of the specification source, template source, etc. in subclasses of AbstractApplication.

The Submit and ImageSubmit components may now have their own listener, which is notified before the containing form's listener.

More reworking of validation; the validation delegate can now track errors in any kind of form component and can track errors that aren't associated with any particular component.

[ #510175 ] add service registration to .application
[ #511256 ] Enhance Validation Framework

Release 1.0.8

A complete overhaul of the validating text field support. The previous implementation used subclasses of AbstractValidatingTextField (which no longer exists) to add new types of validation; the new implementation has a single component, ValidField, and many implementations of IValidator.

At long last, the Upload component.

Reimplemented the Virtual Library application using McKoi Database, to be compatible with JBoss 2.4.3 (which no longer includes InstantDB).

[ #506661 ] private asset configuration
[ #494456 ] StringValidator minLength message wrong
[ #488476 ] Generated URLs should contain entities.
[ #488432 ] Make duplicate page names illegal
[ #487394 ] NumericField doesn't work with long
[ #501750 ] StringValidator
[ #499057 ] BaseValidator summary typo
[ #487619 ] javadoc link errors

Release 1.0.7

Removed Primix copyrights, as I no longer work there or do any work on their time.

Consolidated and cleaned up many of the tutorials into the new Workbench.

Improvements to Inspector's Properties Explorer. It is now more tolerant of exceptions thrown while accessing properties.

Streamlined the distribution by removing the source for documentation.

[ #480433 ] StatementAssembly - access to JBDC 2.0
[ #469747 ] more flexible application parser
[ #484184 ] JavaDoc error

Release 1.0.6

Tapestry now uses Ant as its build tool. The GNU Makefile Java Build Environment has been removed.

The Tapestry Inspector now has a powerful Properties Explorer which allows for dynamic navigation and display of an object's properties (similar to what a debugger provides).

Localization of context assets was broken in Tomcat; it now works in both Tomcat and Jetty.

Release 1.0.5

Added a mechanism to clear out pooled objects when they haven't been used for some time. The interface ICleanable has the details.

Made a number of other efficiency improvements. Particularily, the page loader now weeds out informal parameters that can't be used (because they conflict with formal parameter names, or because the component owns the attributes), preventing them from being added as component bindings. The old method was to weed out the unwanted parameters on every render, which was more expensive.

Improved the NumericField component to deal with null values in an intelligent manner.

It is now possible to set properties of helper beans.

The full distribution now bundles Jetty 3.1RC9 and the Virtual Library is now compatible with JBoss 2.4.0.

Release 1.0.4

Release 1.0.4 debuted the finished Tapestry Home and Virtual Library.