Loading...
Important Notice - Forums is archived

To simplify things and help our users to be more productive, we have archived the current forum and focus our efforts on helping developers on Stack Overflow. You can post new questions on Stack Overflow or join our Discord channel.

Product icon
TUTORIAL

Vaadin lets you build secure, UX-first PWAs entirely in Java.
Free ebook & tutorial.

Vaadin 7 alpha 1 - Improved Data Binding for Enterprise Applications

Artur Signell
10 years ago Dec 23, 2011 9:09am

Vaadin 7 alpha 1 introduces significant changes and extensions to data binding.

Separation of form layout from data binding

With Vaadin 6, creating customized layouts for forms was difficult, often requiring users to either bypass the Form component and implement related logic in the applications or to subclass Form to customize how fields are placed on the UI.

With Vaadin 7 alpha 1, creation of fields and binding them to the data model has been separated from their layout. The new class FieldGroup manages binding of fields and optionally their creation, but does not add them to a layout. Instead, the user application can freely handle layouting of forms. This also makes it easy to e.g. use the visual editor to design a form layout and then simply ask FieldGroup to bind it. FieldGroup can also manage committing form contents etc.

Typed Properties and Fields, Conversions

In Vaadin 7 alpha 1, both Property and Field are parametrized with generics and only support the correct data types, e.g. a TextField always has the data type String. A more generic and customizable Converter mechanism replaces the limited constructor call based conversions that Vaadin 6 performed in some fields, properties and validators.

Each Field can have a converter that maps values between the field type and the underlying data type (often a data model type). Furthermore, formatting of the underlying data model types to Strings can be configured using Converters for columns of the Table component.

In most cases, a suitable converter is automatically selected when binding a data model to a Field - e.g. binding a Property<Integer> to a TextField automatically configures a suitable converter for the values.

Validation

Validation is now performed on the data model type instead of the field type. Converters also act as implicit validators, checking that the data can be converted, so e.g. separate validators checking that the value of a TextField can be parsed as an integer are unnecessary.

Bean Validation (JSR-303) support has been integrated in Vaadin core in the form of BeanValidator. However, using it requires a JSR-303 implementation (e.g. Hibernate Validator or Apache Bean Validation) to be present on the project class path.

CustomField

The CustomField component is now included in Vaadin core and permits easy creation of fields with customized UI and logic. The UI created in the initContent() method of a custom field can get and set the field value as well as override other logic when necessary, and most of the required logic for fields is handled by CustomField.

Transactional commits of forms

Two-phase commits are supported using Property.Transactional and automatically handled by FieldGroup. This means that if committing the value of a field fails, the other related fields are automatically rolled back to their pre-commit values.

For short examples on how to use the new features, check out the Vaadin 7 minitutorials: https://vaadin.com/wiki/-/wiki/Main/Vaadin+7
For information on how to migrate from Vaadin 6 to Vaadin 7, see http://dev.vaadin.com/wiki/Vaadin7/MigrationGuide

This is an alpha release so we expect there to be bugs and still expect changes will be made to the API and functionality before the final 7.0.0 release. All your comments on the new features are welcome. Please post all Vaadin 7 related comments in the Vaadin 7 category of the forum.

Last updated on Dec, 23rd 2011
Philip Healy
10 years ago Jan 09, 2012 4:02pm
Henri Sara
10 years ago Jan 10, 2012 5:59am