如何在Vaadin中验证BeanItem中的字段?

时间:2010-10-07 06:46:53

标签: forms validation vaadin

我现在正在尝试使用Vaadin创建我的第一个 Hello World ,并且我坚持使用我的第一个简单的验证表单。我正在使用BeanItem作为我的表单的ItemDataSource,我不知道如何为bean属性添加Validator。

我的问题

如何在我的bean中获取属性的实际Field?我需要在该字段上调用addValidator(),但我只能在Form上找到它。

HelloWorldForm

package vaadinapp.hello;

import com.vaadin.data.util.BeanItem;
import com.vaadin.ui.Alignment;
import com.vaadin.ui.Button;
import com.vaadin.ui.Form;
import com.vaadin.ui.HorizontalLayout;
import com.vaadin.ui.Label;
import com.vaadin.ui.VerticalLayout;

public class HelloWorldForm extends Form {
    HelloWorldBean data = new HelloWorldBean();

    public HelloWorldForm() {
        setCaption("Hello World");
        setDescription("This is a simple form that lets you enter your name and displays a greeting.");

        setItemDataSource(new BeanItem(data));

        setFooter(new VerticalLayout());
        getFooter().addComponent(
                new Label("This is the footer area of the Form. You can use any layout here. This is nice for buttons."));
        // Have a button bar in the footer.
        HorizontalLayout okbar = new HorizontalLayout();
        okbar.setHeight("25px");
        getFooter().addComponent(okbar);
        // Add an Ok (commit), Reset (discard), and Cancel buttons
        // for the form.
        Button okbutton = new Button("OK", this, "commit");
        okbar.addComponent(okbutton);
        okbar.setComponentAlignment(okbutton, Alignment.TOP_RIGHT);
        okbar.addComponent(new Button("Reset", this, "discard"));
        okbar.addComponent(new Button("Cancel"));
    }
}

HelloWorldBean

package vaadinapp.hello;

public class HelloWorldBean {
    String greeting;

    public String getGreeting() {
        return greeting;
    }

    public void setGreeting(String greeting) {
        this.greeting = greeting;
    }
}

2 个答案:

答案 0 :(得分:3)

您无法直接向属性添加验证器。必须将验证器添加到字段本身(表单中的字段或独立的TexField示例)。

查看Vaadin书中第5.17.3章验证表格:http://vaadin.com/book/-/page/components.form.html (请注意,您可以使用表单中的getField(id)方法代替FieldFactory)

答案 1 :(得分:0)

我认为您正在寻找的是Bean验证附加组件。使用它可以做一些事情,比如将@NotNull添加到你的属性中,生成的字段将自动标记为必需。

https://vaadin.com/directory#addon/vaadin-bean-validation