簡體   English   中英

在錯誤消息中添加新行以進行 vaadin 表單驗證

[英]Adding new line in error-message for vaadin form validation

我有一個綁定到 java 實體 model 的表單字段。 那 model 有一個注解:

@ValidPassword
private String password

它使用某些條件驗證字段並返回包含每個失敗條件的錯誤消息,這些條件由 '\n' 換行符分隔。

Vaadin 表單通過以下方式連接到此 model:

    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 驗證,那么您需要使用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");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM