views:

74

answers:

1

I'm trying my first Hello World with Vaadin right now and I'm stuck with my first simple validated Form. I'm using a BeanItem as the ItemDataSource for my form, and I don't know how to add a Validator for the bean property.

My Problem

How can I get the actual Field for the property in my bean? I need to call addValidator() on the field, but I can only get it on the 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;
    }
}