[Tapestry Logo] Tapestry

Release 2.4-alpha-1

  • Added support for specifying expressions in the component template. Expressions are specified as attributes with the format "[[ expression ]]". The brackets and leading and trailing whitespace are removed. Expressions specified this way are the equivalent of the <binding> element in a specification.
  • Tapestry now supports implicit components. Implicit components are declared exclusively in the containing component's template (instead of in the containing component's specification) using a special jwcid syntax: @type (for anonymous components) or id@type (for named components). Implicit components are especially useful for components that take no parameters, but may also make use of template expressions.
  • Added support for the <listener-binding> element in page and component specifications. This allows a listener method to be provided, directly within the specification, as a script written in a BSF-supported language.
  • A number of non-backwards compatible changes were made to several framework interfaces to support more flexibility on where specifications and templates may be located, but these should not affect the overwhelming majority of Tapestry users. In addition, private assets and context assets may also be relative.
    Private assets are relative to the component specification which declares them, context assets are relative to the application servlet (within the servlet context).
  • Moved the Inspector out of the framework and into the contrib library.
  • Created smarter checks for stale sessions for ActionLink, DirectLink and Form. The action and direct services used by the components now encode whether the application was stateful into the URL. The stateful check only occurs if the application was stateful when the URL was rendered.
  • Changed Form to record the exact ids generated during the render (it used to just store the count). This allows a more useful exception message to be generated for the StaleLinkException.
  • Changed the default StaleLink page to have a message property, and to display the message from the StaleLinkException.
  • Components (and even pages) can now implement page listener interfaces (PageDetachListener, PageRenderListener or PageCleanupListener) and finishLoad() will automatically add them as a listener to the corresponding page events.
  • The entire mechanism used to store persistant page properties has been revised.
  • Implemented a number of improvements to Pool to support greater flexibility in managing objects stored into and discarded from the pool.
[ 653358 ] IPage.getName() == qualified name
[ 608768 ] Changes saved AFTER IPage.detach()

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).

We now boldly present our code coverage reports online.

[ 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

More ...

 
©2000-2002 Howard Lewis Ship. All rights reserved.