Vaadin:在提交时突出显示带有错误消息的空组件

Vaadin: Highlight empty components with error message on submitting

提问人:AleXeNoN 提问时间:6/27/2023 更新时间:6/27/2023 访问量:71

问:

我有一个关于vaadin框架如何与.我发现,当用户聚焦组件字段然后退出它时,会出现错误消息。这是我的 .setRequired(true)Dialog

    private final TextField nameField = new TextField("Expense Name");
    private final TextArea descriptionField = new TextArea("Description");
    private final NumberField amountField = new NumberField("Amount");
    private final ComboBox<String> intervalField = new ComboBox<>("Interval");
    private final ComboBox<String> categoryField = new ComboBox<>("Category");
    private final DatePicker dateField = new DatePicker("Date");

    private final Component[] requiredComponents = {nameField, amountField, categoryField, intervalField};

    //...

    private List<Component> getListOfEmptyComponents() {
        return Arrays.stream(requiredComponents)
                .filter(component -> component instanceof HasValue<?, ?> && ((HasValue<?, ?>) component).isEmpty())
                .collect(Collectors.toList());
    }

    private void setupRequiredComponents() {
        Arrays.stream(requiredComponents).forEach(c -> {
            ((HasValue<?, ?>) c).setRequiredIndicatorVisible(true);
            ((HasValidationProperties) c).setErrorMessage("Please fill this field");
        });
    }

我希望,在用户按下“保存”按钮后,所有空的必填字段都像下面的屏幕截图一样。

enter image description here

这些错误消息是在我单击(聚焦)该字段并离开该字段后获得的,并且组件具有 ,但我希望它们在用户单击“保存”按钮后可见。如果不添加自己的错误消息并设置它们的样式,这可能吗?任何帮助都会很棒!setRequiredIndicatorVisible(true);

Java 验证 Vaadin 样式错误 消息传递

评论


答:

3赞 Knoobie 6/27/2023 #1

建议使用 .Binder

https://vaadin.com/docs/latest/binding-data/components-binder

用户按下保存后,您可以检查表单是否有效。绑定器的 validate 方法还会将所有字段显示为无效字段,就像您的要求中所示,一旦您让它在保存时验证表单。

评论

0赞 AleXeNoN 6/27/2023
这个问题不是关于组件的保存和验证过程,而是关于突出显示所需的组件,以便用户更容易理解他应该填写哪些字段。
2赞 Knoobie 6/27/2023
答案仍然成立。调用 Binder::validate。这也可以在您初始化表单并突出显示所有字段/将它们标记为必填字段时完成。