Project Documentation

Migration from Tobago 2.0 to 3.0 (work in progress)

JSP: JavaServer Pages are no longer supported. You need to migrate to Facelets as VDL. You may do that before migrating to Tobago 3.0.

CSS: box-sizing: changed from content-box to border-box

tc:time -> tc:date You need to set the <f:convertDateTime type="time"> inside the <tc:date>.

ActionListenerImpl: Class is no longer present, you should use a JSF 2 exception handler instead.

Replace all <tc:cell> with <tc:panel>

If you have own renderer classes: The API of

replacing tx with tc

<tx:in label="a" fieldId="b" id="c" />

will be transformed to this

<tc:in label="a" id="b or c" /> (if b is set use b otherwise use c)

There is a little conflict between the "label" attribute used in the JSF spec. and the Tobago tx: label: Tobago means it should be displayed, and JSF spec. means that this should be used to display messages. In most cases there is no issue for that. But for the case that the application need a message label, but should not be displayed we need a new attribute:

(preliminary) "labelPosition" or "labelLayout" with value "none" With this attribute we may advise the renderer also the position of the label. Or, using an attribute "renderLable"...

Removing tc:cell tag, please use tc:panel instead, if needed.

- simplify (flowLayout, flexLayout, segmentLayout):

<tc:flowLayout> ... content ... </tc:flowLayout>

instead of

<tc:panel> <f:facet name="layout"> <tc:flowLayout/> </f:facet> ... content ... </tc:panel>

tc:image has no longer the attributes width and height, please use a tc:style child tag instead.

tc:column with f:facet name="dropDownBox" can now easily and much more flexible implemented with the header facet of the tc:sheet. Example: Demo -> Components -> Sheet -> Filter

The Menu tags tc:menu, tc:menuBar, tc:menuCommand and tc:menuSeparator are no longer available and needs to be migrated to tc:links or tc:bar or tc:buttons with tc:link and tc:separator inside.

File upload now uses the Servlet 3.0 features.

  • 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 type of value of the <tc:file> has been changed from org.apache.commons.fileupload.FileItem to javax.servlet.http.Part.
  • For an example consult the demo.

Introducing enums instead of constant classes

Some static utils classes are migrated to Java enums.

  • If using org.apache.myfaces.tobago.component.Attributes you may use the enum value instead of the String contant.

Reimplementation of Popup

  • Remove tc:popupReference
  • No longer as "facet"

No longer supported

Because of the changed layout model (no longer on the server, but with browser CSS) there a some classes, methods and parameters removed.

  • AbstractUIPage.getActionPosition()
  • AbstractUIPage.setActionPosition()
  • class Box
  • class Dimension
  • class Position
  • ClientProperties.pageWidth
  • ClientProperties.pageHeight
  • <tc:gridLayoutConstraint> -> <tc:style>
  • <tc:toolBar> -> <tc:buttons>

If using <tc:page> with the attributes state, width, height: remove the attributes

Replace facet 'action' with 'load' for <tc:page>

<f:facet name="load"> contain an instance of UICommand (tc:command).

TODO: attribute renderPartially is replaced by f:ajax

TODO: Move data from ClientProperties to TobagoContext

<tc:mediator> removed

If you need a Tobago component to set e. g. some style in a renderer as a replacement, use a simple <tc:panel>.

Tango Icons

Tango icon lib is no longer part of Tobago. Replaced by Font Awesome. If you need it, please include it in the application.

Dependencies to JS/CSS libs: jQuery UI

Tobago uses the jQuery UI library. The library is customizable to limit the amount of JS and CSS content. You will find the used modules in the header of each jQuery UI file.

  • E. g. Tobago 2.0.10 contains jQuery UI 1.10.4 with these contents:
    • jquery.ui.core.js
    • jquery.ui.widget.js
    • jquery.ui.mouse.js
    • jquery.ui.position.js
    • jquery.ui.draggable.js
    • jquery.ui.datepicker.js
    • jquery.ui.slider.js
    • jquery.ui.core.css
    • jquery.ui.datepicker.css
    • jquery.ui.slider.css
    • jquery.ui.theme.css
  • Tobago 3.0.0 contains jQuery UI 1.12.1 with this component:
    • widget.js

    If you are using jQuery UI directly, you may add the required resources via the tobago-config.xml and exclude the jQuery UI resource that comes with Tobago.