我现在正在尝试使用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;
}
}
答案 0 :(得分:3)
您无法直接向属性添加验证器。必须将验证器添加到字段本身(表单中的字段或独立的TexField示例)。
查看Vaadin书中第5.17.3章验证表格:http://vaadin.com/book/-/page/components.form.html (请注意,您可以使用表单中的getField(id)方法代替FieldFactory)
答案 1 :(得分:0)
我认为您正在寻找的是Bean验证附加组件。使用它可以做一些事情,比如将@NotNull添加到你的属性中,生成的字段将自动标记为必需。