如何解决在 vaadin 表单验证的错误消息中添加新行
我有一个绑定到 java 实体模型的表单字段。该模型有一个注释:
@ValidPassword
private String password
它用一些条件验证字段并返回包含每个失败条件的错误消息,以“\n”换行符分隔。
Vaadin 形式通过以下方式连接到此模型:
username = new TextField("Username");
username.addClassName("username-field");
password = new PasswordField("Password");
password.addClassName("password-field");
binder.forField(username ).asRequired().bind("username");
binder.forField(password).asRequired().bind("password");
将输入写入密码字段会导致: image-link 当我希望每个失败的条件都在新行上开始时。
解决方法
如果您想在 Vaadin 8 或类似 Vaadin 14 及更新版本中使用 JSR-303 Bean validation,那么您需要使用 BeanValidationBinder
而不是常规的 Binder
。同样在这种情况下,您不应该使用
binder.forField(password).asRequired().bind("password");
而只是使用
binder.bindInstanceFields(form);
此外,如果您需要自定义错误的显示方式,您可以使用例如 ValidationStatusHandler,每次验证状态从有效变为无效时都会调用它,反之亦然。默认情况下,错误显示在组件中。您可以定义自己的组件,例如Html
,您可以在其中使用丰富的格式。
binder.forField(field).withValidationStatusHandler(handler -> {
if (handler.isError()) {
handler.getMessage().ifPresent(error -> {
Html html = new Html("<span>"+error+"</span>");
layout.add(html);
});
}
}).bind("property");
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。