|
|
|
|
Why yet another taglib? |
|
|
|
The Ninebit Tag Library initiative came up when a project where giving the
opportunity to enter a refactoring phase. One of the goals where to reduce
as much scriptlet-code in the JSP-source as possible. This by introducing
taglibs. Most of the taglib functionality already existed in third party
taglibs. However there where a couple of components that came back
repeatedly that in some cases existed in other packages but did not
fullfilled our demands. These components where:
- a table component
- a tabbed pane component
- a dynamic JavaScript tree component
- a simple button component to map selected rows in a table
|
|
General component features: |
|
-
All components have a public interface. This enables you to make your
own implementation of the components. You may for example implement your
own tree component that is based on, lets say, HTML instead of JavaScript.
-
Each components have their own specialized configuration file (if any).
However the current implementation is refered from one configuration file.
-
Main target and tests for these components have been IE6 however other
browsers may handle them fairly or as good as IE6.
|
|
|
|
|
The table component features: |
|
-
The API supports all kinds of input collections: Bean rows, String
arrya rows, Map rows and List rows.
-
The data in the beans are accessed by specifying the beans attribute
through the tag attribute 'property'.
-
The data in String arrays are presented in order but can be reaarenged
by the tag attribute 'index' where value is set to sequence order in
array.
-
The data in Maps are accessed by specifying the Map key through the tag
attribute 'property'.
-
The data in Lists are presented in order. The output from each object in
the list is depended upon the implemented function 'toString()'.
-
You may controle the layout by a 'styleClass' tag attribute on the
table, table headline, tablecolumns, odd and even columns. However there
is a default style implemented that will do for most purposes.
-
Possible to specifie target for url. Both on normal klick on url and
doubleclick on row.
-
Possible to specifie one or more attributes in a row that should be
included as parameters to the url. These are commaseparated in the tag
attribute 'parameters'. Much more convenient than implemented in JSTL.
-
Advanced dialog handler with very simple specification.
-
Row index feature (Prev/Next) controlled by you. Not depended on the
context buffer.
-
A separate headline url supported where you for example may trigger your
own (context independed) sort.
-
You may add as many tables you want on the same page with all features
specified above with no interference between them. (as long as you use a
unique name for each table:)
|
|
|
|
|
The tabbed pane component features: |
|
-
Very simple. Only specified through tags in JSP. No API needed.
-
Possible to set other 'styleClass' for the text.
-
Support mnemonics (shortcut keys) for each tab.
-
Supports nested tabbed panes with maintained state for each tabbed pane.
(Well, who need nested tabbed panes? Avoid it!)
|
|
|
|
|
The tree component features: |
|
-
Generates a very stable, portable and flexible JavaScript tree. The
JavaScript tree is based on the xTree
tree by Emil A Eklund. Please, read the
licence information about
this tree. There is also an old implementation of the xTree included in this distribution
that is modified to fit a previous project. This modification included
target support (now included in new version of xTree). Also using
GIF images instead of PNG-files. The old and the newest version of xTree
has been modified by Ninebit to support dynamic image path.
-
Supports both static (tags in JSP only) and dynamic (one tag in page
refering to server side generated tree) tree.
-
You may add as many trees you want on the same page with all features
specified above with no interference between them. (as long as you use a
unique name for each tree:)
|
|
The button component features: |
|
-
Is only here to support the tables where you would like to map a button
to selected row action instead of invocing doubleclick.
-
You may apply your own 'styleClass' on the button.
|
|
|
|
|