Tobago Demo

Menu

Root Dummy Intro Search Getting Started Docker What's New Migration Compatibility FAQ API Download Server Info Logging Info In Suggest Textarea Date Range Group 5 Star Rating File Upload Out Label Badge Image Figure Progress Object Checkbox Toggle Dropdown Radio Listbox SelectOneList Multi Checkbox Multi Listbox Shuttle SelectManyList Button and Link Default Command Button Group Customizer Link Group Box Panel Separator Section Header and Footer Bar Popup Popover Toast Basic example Tab Client Tab Ajax Tab Server Basic example Sheet Sorting Paginator Sheet Column Selector Sheet Selectionchange Sheet Event Sheet Action Sheet Markup Sheet Style Empty Sheet Column Bar Sheet Filter Sheet Static Header Sheet Multi Header Sheet Tree Column Panel Sheet Editable Sheet Lazy Sheet Nested Basic example Tree Command Types Tree Select Tree Editor Tree Menu Tree Listbox Intro TinyMCE CKEditor Flow Layout Flex Layout Segment Layout Label Layout Grid Layout Split Layout Message-layout Overview Collapsible Box Collapsible Popup Collapsible Panel Collapsible Section Content Validation JSR 303 Severity Messages Content Security Policy Sanitize Roles Form AccessKey Focus Exception Handler Style Tag Bootstrap Theme Icons Partial Ajax Behavior WebSocket Transition Non Faces Request Conversion Error Handling For Each ConversationScoped Download Configuration Format Locale DataAttribute Meta
Root Dummy Intro Search Getting Started Docker What's New Migration Compatibility FAQ API Download Server Info Logging Info In Suggest Textarea Date Range Group 5 Star Rating File Upload Out Label Badge Image Figure Progress Object Checkbox Toggle Dropdown Radio Listbox SelectOneList Multi Checkbox Multi Listbox Shuttle SelectManyList Button and Link Default Command Button Group Customizer Link Group Box Panel Separator Section Header and Footer Bar Popup Popover Toast Basic example Tab Client Tab Ajax Tab Server Basic example Sheet Sorting Paginator Sheet Column Selector Sheet Selectionchange Sheet Event Sheet Action Sheet Markup Sheet Style Empty Sheet Column Bar Sheet Filter Sheet Static Header Sheet Multi Header Sheet Tree Column Panel Sheet Editable Sheet Lazy Sheet Nested Basic example Tree Command Types Tree Select Tree Editor Tree Menu Tree Listbox Intro TinyMCE CKEditor Flow Layout Flex Layout Segment Layout Label Layout Grid Layout Split Layout Message-layout Overview Collapsible Box Collapsible Popup Collapsible Panel Collapsible Section Content Validation JSR 303 Severity Messages Content Security Policy Sanitize Roles Form AccessKey Focus Exception Handler Style Tag Bootstrap Theme Icons Partial Ajax Behavior WebSocket Transition Non Faces Request Conversion Error Handling For Each ConversationScoped Download Configuration Format Locale DataAttribute Meta

What's New

Tobago 5.0

Overview

Plan for 2021: Tobago 5.0 release with new features and some bugfixes.

New Features and Enhancements

  • Introducing: Web Components
  • Refactoring: JavaScript -> TypeScript
  • Refactoring: ResourceBunde and MessageBundle
  • A context message can now be added to form-component.
  • Update to Bootstrap 5
  • tc:date todayButton
  • Remove <tc:treeCommand>, just use <tc:link>
  • ...
  • Bugfixes
The full list is available in Jira.

Tobago 4

4.5

Overview

In May 2020, Tobago 4.5 was released with some bugfixes and new features.

New Features and Enhancements

  • Sheet: Lazy loading rows by scroll events
  • Using Bootstrap für toggle, checkbox and radio buttons
  • Outline markup for buttons
  • Update to Bootstrap 4.4.1
  • Update to jQuery 3.5.0
  • Bugfixes
The full list is available in Jira.

4.4

Overview

In March 2019, Tobago 4.4 was released with some bugfixes and new features.

New Features and Enhancements

  • A context message can now be added to form-component.
  • Update to Bootstrap 4.3.1
  • <tc:date> todayButton
  • Placeholder attribute for <tc:file>
  • Markups for text
  • Bugfixes
The full list is available in Jira.

4.3

Overview

In September 2018, Tobago 4.3 was released with some bugfixes and new features.

New Features and Enhancements

  • New toggle component: <tc:selectBooleanToggle>
  • Update to Bootstrap 4.1.3
  • Update to jQuery 3
  • Vertical align vor Sheets
  • "plain" attribute
  • "keepLineBreaks" attribute
  • Icons in FacesMessages
  • tooltop for <tc:badge>
  • java.util.Calendar and java.time.DateTime support for <tc:date>
  • LabelLayout attributes gridLeft, gridRight
  • Passwords aren't sent to the client
  • Bugfixes
The full list is available in Jira.

4.2

Overview

In April 2018, Tobago 4.2 was released with some bugfixes and new features.

New Features and Enhancements

  • Desktop-like vertical layout is possible (like in Tobago 2), use markup="spread"
  • New component <tc:badge/> badge
  • <tc:selectReference> is fixed
  • Better compatibility with Mojarra
  • Theme Charlotteville
  • Many other enhancements and bugfixes
The full list is available in Jira.

4.1

Overview

In February 2018, Tobago 4.1 was released with some bugfixes and new features.

New Features and Enhancements

  • Update to Bootstrap 4.0.0 (final)
  • New component for rating: <tc:stars>
  • Converter for tab label and box label
  • Change style of <tc:tabGroup> to Bootstrap 4
The full list is available in Jira.

4.0

Overview and History

After the last major release in December 2016, Tobago 4 comes with 127 changes, bugfixes and new features in December 2017.

In general, the step to version 4 is quite compatible, so the migration is easy. Please follow the Migration from Tobago 3 to 4 guide.

New Features and Enhancements

The highlights
  • Update to Bootstrap 4 beta 2
  • Reimplementation of grid layout manager and split layout manager
  • Security enhancements
  • Java 8 or 9
The full list is available in Jira.
Layout Managers
  • Grid Layout was reimplemented with use of the modern CSS grid
  • Split Layout was reimplemented (was not available in Tobago 3)
  • Flex Layout was optimized (works now without JavaScript)
  • Segment Layout was enhanced. New attributes "offset" and "margin". Also it's possible to use "auto" and "1fr" as with of the children.
  • The syntax of the layout attributes are refactored to be compatible to modern CSS. E.g. use of "fr" as unit for fraction in grid layout. The old syntax works also, so not migration is needed.
CSS Styles

Reimplementation of Inline Styles
Is better and faster, because not use of JavaScript is needed now. Background: This is possible with CSP Level 2.

Inline Style for Rows ans Columns
<tc:style> can now be used as subtag of <tc:row> and <tc:column>. The styles are set dynamically, so different styling of rows is possible.

New components supported
Styles can be used in:

Markups

Markups are now easily accessable by JavaScript. The markup could be found on component root in the attribute data-tobago-markup.

New markups:

Messages near the input fields
The error messages are now rendered directly by the input control. In this demo you please leave the content free and just click "check". (This also works with AJAX.)

For more information have a look at Message Layout

Tag library
  • <tc:image> now supports a Font Awesome string as value.
  • <tc:event> now supports the rendered attribute.
  • <f:ajax> now supports the disabled attribute.
  • <tc:link> now supports outcome and fragment attribute.
  • <tc:style> now supports the rendered attribute.
  • New tag <tc:meta> implemented.
Theming
  • Optimize the theme builder
    Faster loading the Bootstrap theme and using same base _tobago.scss for all theme.
  • Speyside Theme
    The Speyside theme is now part of the distribution. It looks a bit more condensed and the menu is fully viewable for all submenus. You can switch the theme here in the demo menu under Configuration → Theme.
  • Scarborough Theme
    The Scarborough theme is now part of the distribution. It looks quite same as the bootstrap theme, but a bit nicer.
  • Roxborough Theme
    The Scarborough theme is now part of the distribution. It has a nice dark look for ambient light situations or photo galleries.
Security enhancements
  • CSP level 2
  • Frame attack protection via headers instead of JavaScript
  • Roles
Font Awesome updated to 4.7.0
New icons are available from the FontAwesome icon library.
New XSD Version

With Tobago 4 there is a new XSD version for the tobago-confix.xml.

  • decode-line-feed added
    Default value is 'false'. If set to 'true' control characters are not decoded on ajax requests.
  • security-annotation added
    It determines what happen to the according component if - for example - @RolesAllowed() is not 'true'. Possible values are 'hide', 'disable' and 'ignore'.
  • renderers, renderer, supported-markup-type removed
    It is not longer needed to specify which markups are allowed on specific components.
    'renderers' only contains the 'supported-markup-type' element. So it was also removed.
More improvements

Tobago 3

3.1

Overview

In September 2018, Tobago 3.1 was released with some bugfixes and new features.

New Features and Enhancements

  • Update to jQuery 3
  • Passwords aren't sent to the client
  • Bugfixes
The full list is available in Jira.

3.0

In November 2015 the first alpha version of 3.0.0 has been released, the first final release followed in December 2016. Here is a quick overview over the features and changes made in the last time to release this major revision.

Tobago 3.0.0 contains several entries in Jira. and most of them are exclusive in this version.

Please take also a look at the Migration from Tobago 2.0 to 3.0 guide.

Overview and History

Until Tobago 2.0 the layout was computed on the server, to make advanced features available for comfortable web application.

With CSS3 and HTML5 it is possible these days, to make advanced layout managers implemented in the browser.

New Features and Enhancements

Bootstrap

The base theme that comes with Tobago changes from plain CSS to Twitters Bootstrap. So your applications have the advantage of modern HTML5 web applications with less coding.

New Layout Managers
  • Segment Layout (uses the 12 columns layout from Bootstrap)
  • Flex Layout (CSS3)
    You may replace the GridLayout from Tobago 2.0 with FlexLayout.
  • Flow Layout
  • The new layout managers have been written a bit more concised: Using as container instead of a facet.
tx library
  • The tx library is no longer needed
  • The label is integrated into the tc library.
  • This results in a more intuitive API
  • Rich variations of positioning the label with new attribute labelLayout
New tags Improved tags Internal Refactoring
  • Using standard ajax mechanism.
  • The clientId will be now rendered to the root element in HTML of a component.
  • Change the icon format from GIF to PNG.
Collapsible concept

There is a new collapsible concept for <tc:box>, <tc:section>, <tc:panel> and <tc:popup> where the collapse state can be switched via an <tc:operation>.

More changes
  • File upload now uses Servlet 3.0 instead of Commons Fileupload. This simplifies the setup.
  • Font Awesome as an icon library.
  • ARIA support codes are added. Those can be used in renderer classes.
  • Resources can be excluded from parent theme.
  • ResourceBundles support parameters
  • The lang attribute of the HTML root tag will be rendered now.
  • Messages are closeable now.
  • Custom CSS classes can be added to a component.
  • Support more units than 'px'. Now ex, em, mm, cm, in can be used as well.
  • The link attribute of Button and Link does support rightClick -> newTab.
Removed
  • The AutoAccessKey feature (using underscore to indicate next character as an access key) is removed. Now the accessKey attribute must be used.
  • JSP support removed.
  • The tag <tc:time> is removed. Use <tc:date> instead.

Tobago 2

2.4

Overview

In January 2019, Tobago 2.4 was released with a new features.

New Features and Enhancements

  • File upload switched from commons-fileupload to Servlet 3.0 specification.
    • You no long need to define a TobagoMultipartFormdataFilter in the web.xml
    • There is no longer a tobago-fileupload.jar
    • Remove the dependency to commons-fileupload.jar in your web app, if there is any.
    • If using JSF 2.0 or 2.1 you will need to add a tag <multipart-config> tag to the FacesServlet config in the <web.xml>.
The full list is available in Jira.

2.2

Overview

In September 2018, Tobago 2.2 was released with some bugfixes and new features.

New Features and Enhancements

  • Update to jQuery 3
  • IE 8 is no longer supported
  • PageState is usable for layout
  • Passwords aren't sent to the client
  • Bugfixes
The full list is available in Jira.

2.0

At July 21, 2014 the version 2.0.0 has been released. Here was a quick overview over the features and changes made in the last time to release this major revision.

Tobago 2.0.0 contains 184 entries in Jira. and most of them are exclusive in this version.

Please take also a look at the Migration from Tobago 1.5 to 2.0 guide.

Enhancements

Date- and Time-Picker
  • Using jQuery UI Datepicker and TimePicker Addon
  • Faster — no server request
  • Better interactivity
  • Old Date-/TimePicker via tobago-config.xml

Draggable Popups

Input Suggest
  • New implementation
  • Sub-Tag <tc:suggest>
  • More configuration options
Tabs
  • Icons
  • Toolbar buttons
File upload
  • Looks pretty now in every browser
Radio Buttons
  • Icons

New Features

HTML WYSIWYG Editor
  • Integration example in the demo of CKEditor™ and TinyMCE
  • Not included, because of incompatible licences or breaks CSP
  • Other possible, but many have disadvantages
Default Command for Sub-Forms
  • Dependent from the focused input, the default command will be selected
  • Markup to show the command to the user
Tree and Tree-Table
  • Big internal refactoring
  • Work internally now with the JSF UIData
  • Free model: DefaultMutableTreeNode is not required any longer, but you can implement javax.faces.model.DataModel
  • TreeTable
  • Infinite Trees possible
  • Selectors: sub-tree selection
More
  • Dynamic lists in <f:selectItems> need not glue code (JSF 2.0)
  • Redirect in navigation rules doesn't break layout size
  • Additional possibility to show paging arrows in sheet
  • Automatically create accesskey from underscore is know configurable

Security

Content Security Policy
  • To prevent XSS
  • W3C Standard
  • Idea:
    • Don't execute any code inside the HTML file
      • No content in script tags
      • no onclick, nor on* etc.
    • Don't execute eval(script)
    • Don't apply CSS inside the HTML file
    • Define the sources of any resources
    • Strict separation of code and data
      • Keep the code in JavaScript Files
      • Put additional data in HTML5 data-* attributes
  • Browser support: all current, but IE 10 and 11 only "sandbox"
  • Activated by default, can be configured via tobago-config.xml
  • There is also a "report-only" mode for development
Content Security Policy and Tobago
  • All renderers and scripts are refactored to be compliant with CSP
  • Using application specific JavaScript in Tobago
    • script attribute in command tags is deprecated
    • Problem: when setting non of these attributes: action, script, link, Tobago will create a default action. This can't be changed without breaking compatibility.
    • Solution: omit="true"
Sanitize potentially malicious content (to prevent XSS)
  • <tc:textarea>, when it contains a <tc:dataAttribute> with name="html-editor"
  • <tc:out>, when escape="false"
  • Default implementation: JSoup whitelist scanning
  • Configurable via tobago-config.xml
  • Why? See OSWAP
More
  • Setting nosniff HTTP header (to prevent XSS)
  • Don't allow to be in a frame (to prevent Frame-Attacks)
  • Both are configurable via tobago-config.xml, default is secure

Internal Refactoring

  • Tree uses subclass of javax.faces.model.DataModel
  • Using Java APT generator
  • Using ' instead of " for HTML attributes (JSON friendly)
  • JavaScript logging via console (plus workaround for old browsers)
  • The theme-config.xml was merged with tobago-config.xml
  • Access the Tobago configuration via the TobagoContext
  • The TobagoConfig is immutable after initialization
  • Add the version of Tobago into the resource URLs to avoid caching problem after updates
© 2005-2025 Apache Software Foundation, Licensed under the Apache License, Version 2.0.