Release Notes

Version 2.3.9

Dependency versions are updated:

  • Vaadin 23.3.31

  • Spring Boot 2.7.18

  • Faktor-IPS 22.12.16.release

The new Vaadin Testbench version uses selenium to 4.16.1 (previously 4.8.3). Because of crashes with this version and our chrome driver we use 4.14.0 instead which seems to work stable.

Version 2.3.8

Dependency versions are updated:

  • Vaadin 23.3.25

  • Spring Boot 2.7.16

  • Faktor-IPS 22.12.15

Version 2.3.7

  • Vaadin has been updated to version 23.3.19 and Spring Boot to version 2.7.14

Bugfixes

  • Fixed added child rows are not visible in hierarchical tables

Version 2.3.6

New features and improvements

  • Vaadin has been updated to version 23.3.14, Spring Boot to version 2.7.12 and Faktor-IPS to version 22.12.12.release

Bugfixes

  • Fixed falsely marked as invalid combobox with initial non-null but empty representation

  • Fixed overlapping labels and input fields in small browser windows

  • Added missing CSS tweaks for MultiSelectComboBox (e.g. no max-height for error message)

Version 2.3.5

New features and improvements

  • Vaadin has been updated to version 23.3.12 and Spring Boot to version 2.7.11

Bugfixes

  • Fixed unnecessary horizontal scroll bar in ComboBox overlay

  • Fixed wrong timestamp format in error dialogs

Version 2.3.4

New features and improvements

  • Vaadin has been updated to version 23.3.8 and Spring Boot to version 2.7.10

Bugfixes

  • Fix an incompatibility with ChromeDriver versions 111 and above in linkki-vaadin23-testbench-extension

Version 2.3.3

New features and improvements

  • Vaadin has been updated to version 23.3.6 and Spring Boot to version 2.7.9

Version 2.3.2

Bugfixes

  • Whitelist the Vaadin icon tag <vaadin-icon> for the HTML content mode of @UILabel and LinkkiText. The tag can be used with the attributes icon, id, class,width,height and style,

Version 2.3.1

New features and improvements

Hide exception stacktrace in production mode

For security reasons, the exception stacktrace will not be shown in the org.linkki.framework.ui.dialogs.DefaultErrorDialog anymore when the application runs in the production mode. Instead, only the exception message will be shown together with a timestamp.

The stacktrace will be still available if the application does not run in the production mode.

Vaadin & Spring update

Vaadin has been updated to version 23.3.5 and Spring Boot to version 2.7.8.

The snakeyaml dependency, which is required for using YAML configuration files with Spring, has been excluded by Vaadin. To continue using YAML files, the dependency must manually be added:

<dependency>
    <groupId>org.yaml</groupId>
    <artifactId>snakeyaml</artifactId>
</dependency>

Bugfixes

Sanitization of HTML content

Using @UILabel with htmlContent = true previously did not sanitize the content. To make the behaviour of htmlContent = true more secure by default, the HTML is now automatically sanitized, removing potentially dangerous tags and attributes. Note that the img tag is whitelisted.

The same applies to org.linkki.core.vaadin.component.base.LinkkiText when using HTML content mode (setText(…​, true)).

When user-supplied strings are included in HTML content, they have to be escaped to prevent them from being interpreted as HTML. This can be achieved by using HtmlSanitizer#escapeText.

Version 2.3.0

New features and improvements

@BindMessages

A new annotation, @BindMessages, has been added for manually filtering and setting validation messages on a field.

For more information see "@BindMessages" and "Custom message handling".

Refactoring BindingDescriptor

The class BindingDescriptor has been completely refactored and should now be used directly instead of creating a child class.

As part of this process, the following classes and methods were deleted:

  • ElementDescriptor - use BindingDescriptor instead

  • PropertyElementDescriptors - use BindingDescriptor instead

  • public BindingDescriptor(List<LinkkiAspectDefinition>) - use public BindingDescriptor(BoundProperty, List<LinkkiAspectDefinition>) instead

And the following elements were deprecated:

  • BindingDescriptor.getModelAttributeName() - call BindingDescriptor.getBoundProperty().getModelAttribute() instead

  • BindingDescriptor.getModelObjectName() - call BindingDescriptor.getBoundProperty().getModelObjectName() instead

  • BindingDescriptor.getPmoPropertyName() - call BindingDescriptor.getBoundProperty().getPmoPropertyName() instead

  • LinkkiBoundProperty.ModelObject - use LinkkiBoundProperty.ModelObjectProperty instead

@BindAutoFocus

A new annotation, @BindAutoFocus, has been added for setting the autofocus attribute on a UI element.

Please note that this annotation should not be used on more than one UI element per page/dialog, and that the target element has to be visible and editable.

For more information see "@BindAutoFocus".

@BindVariantNames

A new annotation @BindVariantNames has been added for adding Vaadin variants to UI elements or PMO classes.

For more information see "@BindVariantNames".

@BindLabel

A new annotation @BindLabel has been implemented for adding dynamic labels to UI elements.

For more information see "@BindLabel".

@BindSlot

A new annotation @BindSlot has been implemented for setting UI elements into slots of predefined, reusable page layouts.

For more information see "@BindSlot".

@UIMultiSelect

A new UI element annotation @UIMultiSelect has been added for selecting multiple elements from a list of allowed values.

For more information see "@UIMultiSelect".

null behaviour in @UIRadioButtons

Fixed @UIRadioButtons not showing null when using AvailableValuesType.ENUM_VALUES_INCL_NULL.

Please check the method String getNullCaption() of all ItemCaptionProviders that are used with @UIRadioButtons and make sure that this method returns the string for the null value. getCaption() will not be called for a null value!

A new property iconPosition has been added to both @UILabel and @UILink for positioning the icon to the left or right of the label/link. The default position is left for @UILabel and right for @UILink.

Validation for read-only fields

Read-only fields now display validation messages along with a colored border. Previously, validation was not displayed on read-only fields.

Bugfixes

  • Fix warning and info notifications not being closeable when the respective duration is set to 0 or below. The notifications will now have a close button, like error notifications. (since 2.1.3)

  • Fields for which Vaadin does not support validation (components not implementing HasValidation, e.g. buttons) now have the HTML attributes invalid and severity set by linkki to allow custom styling via CSS. The message text is not displayed. (since 2.1.3)

  • Fix icon size for LinkkiText and LinkkiAnchor (since 2.1.2)

  • IpsPropertyDispatcher now handles empty value sets correctly (since 2.1.1)

  • Fix disabled state of checkboxes (since 2.1.1)

  • LinkkiTabLayout no longer initializes content of tabs when removing them (since 2.1.1)

  • BindingContext#modelChanged was called when creating a table. This accidentally triggered a modelChangeHandler when setting up the UI. (since 2.1.1)

  • Fix @UILink and @UILabel with icons in combination with custom style names added by @BindStyleNames. Style class linkki-has-icon is not used anymore and will be removed in later version. (since 2.1.1)