public class RegistrationBindingManager extends DefaultBindingManager {
private final Consumer<MessageList> displayMessagesConsumer;
public RegistrationBindingManager(RegistrationValidationService registrationValidationService,
Consumer<MessageList> displayMessagesConsumer) {
super(registrationValidationService);
this.displayMessagesConsumer = displayMessagesConsumer;
}
@Override
protected void updateMessages(MessageList messages) {
super.updateMessages(messages);
this.displayMessagesConsumer.accept(messages);
}
}
Validation
Displaying Validation Messages
By default linkki marks UI elements bound to invalid ObjectProperties. The input field bound to the referenced ObjectProperty
shows a colored border and background as well as a tooltip displaying the validation messages for that field.
However, linkki does not provide a UI element to display all validation messages returned by a ValidationService
. In order to display these messages a custom UI component has to be created along with a BindingManager
. The BindingManager
must override its updateMessages
method that gets called after validation. A common pattern here is to use a Consumer<MessageList>
as an argument to the BindingManager
to decouple it from the actual custom UI component (which implements Consumer<MessageList>
).
Usage:
validationService = new RegistrationValidationService(registrationPmo);
bindingManager = new RegistrationBindingManager(validationService, ml -> messagesPanel.updateMessages(ml));