Release notes

Release notes for v1.4.0

  • New tags:
    <layout:collectionGroup> with ICollectionGroupRenderer renderer
    <layout:nestedTreeCollection> with fr.improve.struts.taglib.layout.renderer.ITreeGridRenderer interface (you can choose this display by setting the "model" attribute to "treegrid")
    <layout:toolbar> with IToolbarRenderer renderer

    <layout:wizard> and <layout:wizardStep> with IWizardRenderer renderer

  • New attributes:
    "separator" and "styleClass" on <layout:menuItem>

    "model" on <layout:select>

  • New renderers to customize HTML code:
    (skin parameter name, Java interface name)
    "tab.class", ITabRenderer
    "link.class", ILinkRenderer

    "menu.class", IMenuRenderer

  • New "scrollable" renderer for <layout:panel> :
    Display a panel with scroll bars. The client zone have a size of "maxHeight" and "maxWidth" attributes value

    It can be used by setting the "model" attribute with the value "scrollable"

  • *Expandable <layout:panel>< :
    Customizable with "expandable", "expanded", "type", "openedImage" and "closedImage"
  • <layout:resource> : New value for "type" attribute: "script"
  • <layout:row> : New attributes: "cellSpacing" and "cellPadding"
  • Global script imports:In skin file, the script paths in the value of "skin.scripts" will be added in every page using <layout:skin> or <layout:html> (script paths are comma separated)
  • Global script location variables:In skin file, "{directory.scripts}" is equal to "directory.scripts" value and
    "{directory.config}" is equal to "directory.config" value
  • Customizable generic display policy:
    By setting the "genericPolicy.class" skin parameter with an implementation of GenericPolicy interface, you can configure the display policy of all tags. It can be useful for security purpose
  • Bug fixes:
    Skin property "el.character" is now used by <layout:collectionDetail>
    and others...

Release notes for v1.3

  • Struts compatibility
    Struts-Layout 1.3 is compatible with Struts 1.2 and 1.3.
  • Internal modifications
    Parts of the code have been modified to work under the Improve Foundations portlet bridge environment.
  • Tabs state cookie
    The tabs tag is using cookie to store the selected tab, which is causing troubles on server with buggy cookie implementation.
    It is now possible to generate the cookie via Javascript, or to use AJAX to synchronise the tabs state between the client and the server.
  • <layout:number> tag

    The new <layout:number> only allows the user to type in digit characters.

  • Autoskip function
    When the user types in data and the maxlength of a field is reached, the cursor automatically moves to the next field.
    this function is enable or disable at the skin level.
  • Easier configuration
    The Struts-Layout plugin automatically configures the Struts-Layout sort and treeview action.
  • HTTPS switch
    The new scheme attribute of the <layout:link> and <layout:form> tags allows to generate an absolute URL with the specified scheme.
  • Fix header renderer
    A collection renderer with fix header while scrolling has been added.
  • Image renderer
    A renderer has been added to customize the HTML code for image buttons.
  • Treeview renderer
    The treeview renderer has been updated to handle the tooltip attribute.
  • Crumb renderer
    A renderer has been added to customize the HTML code for crumbs.

Release notes for v1.2

  • Struts 1.3 compatibility
    Struts-Layout is now compatible with Struts 1.3. Compatibility with Struts 1.2 is still provided.
    Struts 1.1 can still be used with the compatibility jar.
  • Improve suggest action
    The MultipleSuggestAction action allows to build suggest items based on all the form data.
  • Improve Javascript treeview handling
    The new openAll and closeAll Javascript functions allow to open and close all the nodes of a treeview.
    Many thanks to Kristof STERCKX for the contribution.
  • Improve calendar placement

    The <layout:date> calendar popup no longer displays outside the window if the date field is close to the window border.

  • New tag : <:layout:expert>
    The <layout:expert> tag is used to set the value of other fields with a simple langage,
    allowing fast type in a single field.
  • New tag : <layout:popup>

    The <layout:popup> tag allows to create customisable modal popup, using the Struts-Layout look.

  • New tag : <layout:fieldArea>
    The <layout:fieldArea> goals is to help creating custom fields.
  • EL compatibility with servlet container supporting JSP 2.0

    Struts-Layout EL character can now be customized to prevent
    the servlet container to evaluate them at the wrong time.
    Check the <a href="features/skin.html">skin</a> configuration page to learn how to choose the EL character.

  • Pager renderer
    The pager HTML code is now generated by a customizable renderer.
  • Collection renderer
    The new collection renderer class "fr.improve.struts.taglib.layout.renderer.SingleTableCollection" allows to reduce and simplify
    the generated HTML code for a <layout:collection> tag.
  • Sort improvements
    Server side sorting can now be done by Collator objects. This allows to do case insensitive and unaccented sort.
    For more information, read the skin configuraton page.
  • Img tag
    Make onclick and styleId ELs.
  • Support for addition on EL
    EL support simple addition like ${var+1}
  • Treeview
    Allow to name trees defined with menuItem tags.
  • Select support in the datagrid
    The tag <layout:datagridSelect> allows to put select into datagrids.
  • Checkbox support in the datagrid
    The tag <layout:datagridCheckbox> allows to put checkbox into datagrids.
  • server side collection sorting
    The properties layout.sort.forward, layout.sort.reverse must be added to the file
    if you have modified it.
    They allow to display different images in function of the current collection sort state with server side sorting.
  • menuItem tag
    Add action attribute.
  • input tags
    Make disabled an EL.
  • collectionInput tag
    Do not use the request parameter any more. This fix a bug when the user modify the form after a submission and redisplay the page.
  • collectionTitle tag
    Allow the title attribute of <layout:collectionItem> tags nested in a <layout:collectionTitle> tag to be null.
  • Tooltip
    Add the tooltip attribute to the <layout:option>, <layout:collectionTitle> and the <layout:collectionItem> tags.
  • Statistics

    Fix a bug whith empty collections, display the right initial value with the collectionInput tag.

Release notes for v1.1

  • Repackaging
    Struts-Layout zip does no longer contain the newsreader example, which is now available as a separate download.
  • Error field
    The focus can be automatically set on the first field having an error.
  • Suggest
    The new <layout:suggest> can be used to suggest items when the user types in a text box.
  • Treeview
    Treeview nodes can now be open or closed in the Struts actions.
  • Menu component
    To allow to use Struts-Layout treeview and menus tags and a recent version of Struts-Menu in the same application,
    the MenuComponent class has been moved to the package
  • Statistics
    The collection tag can display statistics with the new mathOperation attribute.
  • Tabs selection with pager
    Fix tabs selection when there is a pager in the tabs and the jsp path known by the browser is not the same as the sort action path.
    The fix defines a javascript variable named "contextPath" which is then used by the tabs.
  • User defined form modes
    In addition to the 3 predefined form modes (create, edit, inspect), Struts-Layout now allows you to define custom form display modes.
  • Better dynamic page inclusion support

    Struts-Layout tags now find their parents even when they are in a runtime included JSP.
    This fixes HTML code generation issues.

  • Nested compatibility
    The property attribute of the input field tags and the collection tag is now compatible with the struts nested taglib.
    To enable nested compatibility, add nested.compatibility = true in the Struts-Layout configuration file.
  • CollectionInput
    Make MODE_INSPECT behave as other Struts-Layout input tags: generate an hidden input field.
  • Pager

    Display an input field next to the pager allowing to navigate to a specified page. See the skin configuration property layout.pager.displayDirect

  • Datagrid tag
    The new datagrid, datagridColumn tags and the Datagrid object allow to easily display and modify a list of data.
  • Deprecated code cleanup
    All use of deprecated Struts 1.1 code has been removed, making Struts-Layout compatible with Struts 1.2
  • OptionsDependentTag

    Make it possible to link two select tags with the <layout:optionsDependentTag>.

  • Collection tag
    Add <layout:collectionDetail> and <layout:detail> tag to build simple master/detail pages.
  • Pager tag
    Allow to set the default number of items per page in the skin configuration file.
    Alow to set the maximum number of links to display in the skin configuration file.
  • Treeview tag
    Add a renderer to make the treeview skinnable.

Release notes for v1.0

  • collection
    Allow to highlight special rows when values are greater or lower than a specified value.
  • display modes
    Make it possible to use the display modes and policy with the link and submit tags.
  • treeview

    Allow to open subitems at first load; allow to expand and collapse a whole subtree.

  • pager
    Allow to display the pager above the list.
  • optionsCollection
    Allow to nest the tag in logic tags.
  • pager

    Return to the first page when the user comes back. This fixes a bug when the collection has changed.

  • layout attribute
    The "layout" attribute allows to use the input field tags without generating html layout code.
  • improved perfomance
    The input field tags do not use reflexion any more,
    which improves loading time of pages with lot of input tags.
  • nested collection

    Fix main index value and allow to use the select function.

  • collection input tag
    Make it possible to use the tag in a nested collection tag.
  • Date tag
    Improve the javascript date formatting code. The day, month and year numbers are now padded correctly.
  • FormUtils

    FormUtils now has an interface. This makes it possible to adapt Struts-Layout to
    a system already having an API to dynamically set the field style and writeability.

  • tld fixes
    formName is no longer required for the collectionInput tag.
    tld has been cleanned for weblogic.
    add missing patternKey attribute for the date tag.
  • el support

    el support has been added to the following attributes:
    property, isRequired, onchange (input field tags),
    onrow* (collection),
    onclick (collectionItem),
    formProperty, onchange, tooltip (collectionInput)
    href (tab),
    arg* (all tags)

Release notes for v1.0b2

  • MenuItem tag
    The menuItem tag now supports the page and forward attributes.
  • CollectionInput
    The collectionInput tag now supports mapped properties.
  • Grid, row, column and space tag examples
    There are now examples of use of these tags. See the documentation page.
  • Calendar
    The calendar now displays correctly in Mozilla and with struts 1.1b2 when the form name attribute is not specified.
  • Tag pooling in latest version of Resin and Tomcat
    Latest versions of Resin and Tomcat are pooling custom tag, which was causes struts-layout tags to display incorrectly or throw exceptions.
    The tags reset and release methods have been rewritten and struts-layout now works again in these servers.

  • Space tag
    The new space tag simulates an empty layout tag and render an empty cell.
  • Grid tag
    The new grid tag put all its inner tag in a table having the specified number of columns.
  • Column tag
    The new column tag allows to define columns.
  • Row tag
    The new row tag allows to put several tags on the same line as the line tag, but tags in different row tags are not aligned.
  • Tabs tag

    Fix: it is now possible to specify the tab initially selected in all use cases.

  • Pager status tag
    This new tag can be used to display information about the pager (current page number, total number of page, total number of items, range of items displayed).
  • Pager tag
    Fix: the number of the first page is now 1 instead of 0.
    Change: the information displayed can be customized by setting the width and styleClass attributes. The previous and next links text are set in the layout properties file.
  • Swap tag

    The new <layout:swap> tag allows to swap items between two collections easily.

  • Link tag
    The new <layout:link> tag is a modified <html:link> tag that can be nested in a layout tag.
    It also uses the javascript code which prevents users to navigate to another pages if there are unsaved changes in a form.
  • Javascript loader
    Fix incorrect URL that prevents the menus to be displayed.
  • Checkbox tag
    Fix: do not display a < character in inspect mode.
    Change: the key of the checked image has changed from "layout.checkbox" to "layout.checkbox.checked". Update your skins.
    Addition: an unckecked image can be displayed in inspect mode if the property layout.checkbox.unchecked is set in your skin.
    It is also possible to set the alt text by setting the layout.checkbox.(un)checked.label. These modifications have been reported in the Checkboxes and radios tags.
  • CollectionStyle tag
    The collectionStyle tag was introduced in struts-layout a few times ago but was never documented and finished.
    This is now done thanks to Jean-Pierre Pawlack and the tag makes it possible to emphasize rows of a collection that match a specified condition.
  • Collection tag
    To make it easier to implement row color alternance (which could already be done by using the styleClass2 attribute), it is now possible to use the oddId attribute.
    When set, a boolean indicating if the index is odd or not is put in the pageContext under the oddId name.
  • CollectionItem tag
    It was not possible to set the css class of the links generated by the collectionItem tag. The links now uses the styleClass of the collection. Update your skins in consequence.

Release notes for v1.0b1

  • Input fields
    Add field display mode INSPECT_PRESENT. In this mode, the field is display read-only if its value is not null. Nothing gets displays if the value is null.
    Add model attribute. This allow to use different field renderer in the same skin.
  • Collection
    Allow to set the collection renderer class for each collection tag.
  • Tabs
    Fix page redisplay after a sort or paging action (the attribute selectedTabKey must be set).
  • Date
    Format the date picked up by the calendar according to the java date format pattern.
    It is no longer needed to customize javascript.js.
  • Add optionsCollection tag
  • CollectionItem
    Add filter attribute to disable filtering of sensitive HTML character if needed.
  • FormTag
    Add a getter of reqCode attribute
  • WriteTag
    Attribute name is not required, BEAN_KEY by default;
    The tag now behaves like other layout code and places itself nicely into other layout tags.
    Set the 'layout' attribute to false to get the old behaviour.
  • Input field tags
    Add a tooltip to the field
    Make it possible to set the mode of field in the struts action.
  • Date

    Add startYear and endYear attributes.

  • NestedCollection
    The new nestedCollection tag allows to iterate over nested collections.
  • CollectionItem
    Add a paramName attribute allowing to create hyperlinks with parameters outside from the collection.
  • CollectionInput
    Add support for the policy attribute.

    Add a useCollectionSelection attribute to choose between edit and inspect mode in function of the collection selected rows.

  • Input fields
    Add a Field interface to make it possible to fully customize the layout of the input fields.
  • Sort
    Add a skin configuration parameter to allow the use of the back button.
  • < and > characters filtering

    Struts-layout was not using this Struts filter functionnality.

  • CollectionItem>
    Fix broken page and forward attributes.
  • CollectionItem and CollectionStyle tags
    New style attributes allowing to override the style for a column. It is now possible to nest several collectionStyle tags and use them with row color alternance.
  • new Mode and notMode tags
    Add a mode and notMode tag including their body only if the form display mode match (or not match) a specified values.

    Many thanks for the notMode contribution.

  • Input field tags
    Add a layoutId attribute allowing to show/hide the field using DHTML.
    Make it possible to set the style of field labels in the struts action.
  • CollectionItem tag
    Fix the link generated when tag pooling is used.
  • ImagePanel
    Display the right image in the top right corner.
  • FormTag
    Fix a bug causing the form title to not match the form display mode.
  • Collection tag
    Add onRowDblClick attribute.
  • Link tag

    Remove a dependency to struts 1.1

  • Treeview tag
    New styleClass attribute making the treeview skinnable.
  • Date tag and skins
    The Javascript calendar displayed with the date to pick up a date was not skinnable. This is now fixed.
  • struts-layout configuration
    It is now possible to specify the name of the default properties configuration file by using the new LayoutPlugin for struts 1.1, or by calling a specific method in struts 1.0.
    There are more information about this on the skin page.
  • JRun 4
    JRun is pooling custom tags in a different way than Tomcat 4.1 and Resin, and struts-layout didn't work with JRun 4.
    This is now fixed.
  • Tiles definition forwards
    The new LayoutRequestProcessor make it possible to use both forward to Tiles definition and the paging and sorting functionnalities.
    Read the installation notes for more information.
  • CollectionItem
    New styleClass attribute.
  • Cancel tag

    Refactor the tag and fix missing valign setter.

  • Input field tags
    Fix a bad statement causing a part of the HTML code to be rendered twice in inspect mode.
    Add an "hint" attribute that renders as a HTML title attribute allowing to display tooltips.
  • Pager tag
    Fix missing / in the generated image links which prevented the images to display (unless the / was added in the skin property file).
  • Documentation

    A new tutorial replaces the old main tag section.

  • File tag
    Add the file tag do the tld, which was not correctly updated.
    Only display the hyperlink if the filePath attribute is set.

Release notes for v0.5

  • Tab tag
    The body of the tag is not included when a server request must be done to display the tab content. This allows to put the tab content in an external jsp file.
  • Popup javascript code
    Javascript code to open and close popup is available.
  • Loss of form modification warning
    A warning confirm dialog can be shown when the user modify a form and then choose to follow a link.

  • Tab tag
    Fix missing getters and setters in the LabelledTag class that were causing the tab tag to failed in weblogic.
  • Collection tag
    Add the possibility to set an id for the generated HTML table and tr tags.
    Add the possibility to put several collections on the same line with the <layout:line> tag.
  • New Button tag
    Add this missing tag.
  • Buttons vertical alignment
    Add a valign attributes to all button tags (submit, cancel, reset, image, button)
  • Menu swapper example
    The previous changes make it possible to swap lines between to tables. The required javascript has been written and here is the result.

  • CollectionItem tag
    Add href, forward and page attributes.
  • Date tag
    Fix a javascript bug that made it impossible to use multiple date tags on a page.
  • Formatter example
    Fix the skin configuration so that the formatter example page works again.
  • Tab tag
    Allow tabs with empty content. Empty tabs must have their href properties set.

  • New treeview tag
    The treeview tag display a tree view of a menu defined with the <layout:menuItem> tag or with the menu repository. If the menu is defined in the menu repository, only the needed parts of the tree is loaded at a time. The treeview does not support css and skin yet but that will come in a few weeks.
  • Javascript sort code fix
    Fix a bug in the javascript code that were sorting a collection and causes the sort to fail on some collection.

  • Skin framework refactorization
    A skin is now linked to a property file which contains most of the parameters Struts-Layout use to need in the application context. This allows for easier initialization and customization.
  • New Tabs and Tab tags
    Those tags provides support for tabbed panel.
  • New DateTag
    This tag provides a javascript calandar to help users to pick up dates.

  • CollectionTag
    Add support for sort on the client browser with javascript.
  • CollectionTag
    Code refactorization so that futur tag changes do not impact the HTML code generation. HTML code is know in a "CollectionPanel" in a way similar of the PanelTag.

  • Improve tag nesting
    Panels and collections can now be nested in other panels without requiring additional HTML code. See the panel page for an example. An attribute can be set to keep the old behaviour (the new behaviour will break HTML code of old jsps which where nesting panels).
  • New MessageTag
    This tag is a modified version of the <bean:message> tag that can be nested in a <layout:panel> or a <layout:line> tag.

  • Fix sort action and back button
    Using the back button with the server sort action caused an exception. The exception is now catch so that the user can be directed to an adequate error page
  • Fix tld for weblogic
  • New PagerTag
  • CollectionTag
    Added possibility to use a custom panel implementation class (specified in the skin properties file)
  • CollectionItemTag
    Added possility to generate a link with several parameters (new attribute paramId and paramProperty)
  • FormActions
    Added possibility to specify the alignment of the tag body (new attribute align)

Release notes for v0.4

Changes: select tag fix, sort action fix

Changes: fix tld, new features.

Changes: fix tld and release methods for weblogic.

Changes: add possibility to select items in a collection.

Changes: display mode API finalization, documentation update.

New display mode attribute for the form and the field tags.

The form display mode attribute allows to specify if a page is displayed for creation, edition or inspection (view without modification) of information. For each of this display mode, it is possible to set the input field to be writeable, readonly, hidden, or not displayed at all. This avoids to make several jsps for the same page or introduce complicated logic in them.
New text formatting API

The text formatting API allows to call a method written by the developer when a value is displayed. A simple use is date formatting.
New field display policy

The policy allows to choose at runtime if an input field should be writable, only readable or not displayed in funcrion of the user role.
Bug fixes:

Collection sort: fix NPE if the property of the bean is null.

FieldTag: fix javascript error if the field is required and its initial value is not null.

CollectionItemTag: search for the collection tag in all the parents tag instead of the first parent, allowing the use of logic tags.

CollectionTag: fix display of "null "if the property value is null.

The <layout:field> tag is deprecated and should be replaced by the new <layout:text>, <layout:textarea>, <layout:password>, <layout:checkbox> tags to use the new functionnalities.

The interface AbstractCollectionTag has been simplified. This only impact people who have created their own collection tags.

<layout:line> tag to display several fields on the same line.

Possibility to set the styleClass of an input field in the Action class.

Target attribute for the collection item and the menu item tag.

Setter for the config, image directories and default skin.

selectName/selectProperty/selectType attributs for the collection tag allowing to select items of a collection.

Possibly to alternate two styleClass when displaying a collection.
Struts-Layout 0.4 has been tested with Struts 20020109, Struts 1.1b1 and Struts 1.0.2. Recompilation of the library may be needed when used with Struts 1.0.

Release notes for v0.311

Correct struts-layout.jar file that was still the 0.3a version
Struts-Layout 0.311 has been tested with Struts 20011021.

Release notes for v0.31

Modify the import to use the commons package
Modify the tld for weblogic
Add a sort action to automatically sort any collection with the collection tag.

Release notes for v0.3a

Correct a bug in the menu that prevent the display of the title of the items in the menu
Set the default value of the name attribute in the collection tag to be the form bean name

Release notes for v0.3

Addition of a creation mode allowing to display the jsp without having the application configured (no actions, no forms and no objects in the contexts)
New <layout:crumbs> and <layout:crumb> tags to display bread crumbs.

There was a known problem with the <layout:html> tag in v0.2: some JVM didn't find the getter for the locale property. v0.3 have both isLocale() and getLocale() getters so the problem should be fixed now.

Release notes for v0.2a

Resynchronisation of the documentation, the tld and the code

Release notes for v0.2

Rewrites of the tag so that keeping on with the Struts evolution does not required to much modification.
New panel tag
New menu tags
New button tags with support of the dynamic parameter of the DispatchAction
New radios tag
Support for iteration on two collection at the same time.
Replace the <layout:collectionLine> and <layout:collectionAction> tag by one tag <layout:collectionItem>
Change the syntax of the select tag to the same as the one in the html taglib
Change the element of the field tag from a <p> to a <span>, so also changed the css files.
Move fr.improve.light.util.LightStrutsUtil to fr.improve.struts.taglib.layout.LayoutUtil.