Java 如何在单击按钮时将组件绑定到数据bean vaadin

Java 如何在单击按钮时将组件绑定到数据bean vaadin,java,web,frameworks,vaadin,Java,Web,Frameworks,Vaadin,考虑一个带有一些字段的注册表单,如这个bean中所述 public class RegistrationEntity { private Long accountNumber; private String firstName; private String middleName; private String lastName; private Long phoneNumber; private String emailId;

考虑一个带有一些字段的注册表单,如这个bean中所述

 public class RegistrationEntity {
     private Long accountNumber;
     private String firstName;
     private String middleName;
     private String lastName;
     private Long phoneNumber;
     private String emailId;
     private Long communicationHouseNo;
     private String communicationStreet;
     private Long communicationPincode;
     private Long communicationLandLine;
     private String communicationLandmark;
     private Long permenantHouseNo;
     private String permenantStreet;
     private Long permenantPincode;
     private Long permenantLandLine;
     private String permenantLandmark;
 }
以及由本公司设计的组件

 RegistrationEntity bean = new RegistrationEntity();
 BeanItem<RegistrationEntity> item = new BeanItem<RegistrationEntity>(bean);

 fieldGroup =   new FieldGroup(item);

 firstName = new TextField("First Name");
 firstName.setRequired(true);
 firstName.setWidth(COMMON_FIELD_WIDTH);
 fieldGroup.bind(firstName, "firstName");


 lastName = new TextField("Last Name");
 lastName.setRequired(true);
 lastName.setWidth(COMMON_FIELD_WIDTH);
 fieldGroup.bind(lastName, "lastName");

 dateOfBirth = new DateField("Date of birth");
 dateOfBirth.setRequired(true);
 dateOfBirth.setWidth(COMMON_FIELD_WIDTH);
 fieldGroup.bind(dateOfBirth, "dateOfBirth");

 mothersMaidenName = new TextField("Mother's Maiden name;");
 mothersMaidenName.setRequired(true);
 mothersMaidenName.setWidth(COMMON_FIELD_WIDTH);
 fieldGroup.bind(mothersMaidenName, "motherName");

 email = new TextField("User:");
 email.setRequired(true);
 email.setInputPrompt("Your username (eg. joe@email.com)");
 email.addValidator(new EmailValidator(
            "Username must be an email address"));
 email.setInvalidAllowed(false);
 email.setWidth(COMMON_FIELD_WIDTH);
 fieldGroup.bind(email, "emailId");

 panNo = new TextField("PAN:");
 panNo.setRequired(true);
 panNo.setWidth(COMMON_FIELD_WIDTH);
 fieldGroup.bind(panNo, "panNumber");
RegistrationEntity bean=newRegistrationEntity();
BeanItem项=新的BeanItem(bean);
fieldGroup=新的fieldGroup(项目);
firstName=新文本字段(“firstName”);
firstName.setRequired(true);
firstName.setWidth(公共字段宽度);
fieldGroup.bind(firstName,“firstName”);
lastName=新文本字段(“姓氏”);
lastName.setRequired(true);
lastName.setWidth(公共字段宽度);
绑定(lastName,“lastName”);
dateOfBirth=新的日期字段(“出生日期”);
需要设置出生日期(true);
出生日期设置宽度(公共字段宽度);
绑定(dateOfBirth,“dateOfBirth”);
mothersMaidenName=新文本字段(“母亲的娘家姓;”);
mothersMaidenName.setRequired(true);
设置宽度(公共字段宽度);
fieldGroup.bind(mothersMaidenName,“motherName”);
电子邮件=新文本字段(“用户:”);
email.setRequired(true);
setInputPrompt(“您的用户名(例如。joe@email.com)");
email.addValidator(新的EmailValidator)(
“用户名必须是电子邮件地址”);
email.setInvalidAllowed(false);
email.setWidth(公共字段宽度);
fieldGroup.bind(电子邮件,“emailId”);
panNo=新文本字段(“PAN:”);
panNo.setRequired(true);
panNo.setWidth(公共字段宽度);
fieldGroup.bind(panNo,“panNumber”);
这将在初始化时使用空值绑定组件
但是我希望组件显示空值,而不是null

当用户单击某个特定按钮时,只有值应该绑定到bean,该bean稍后可用于持久化

您可以使用setNullRepresentation()实现此目的

这样,当值为空时,您可以告诉文本字段显示什么

setNullRepresentation(“”)

例如:

firstName.setNullRepresentation(“”)


尝试这种方式,以便在尝试注册时不会显示空值。

这不是我想要的。。。我最初不想要任何值,点击一个按钮,它应该给Bean赋值,除了NULL以外,什么都不是?也许您可以在用户单击时调用各种xxx.bind(…)。我不能完全肯定我理解你想做什么。新条目的正常使用情况是,当用户单击“保存”或“处理”时,有一个空bean(绑定到字段),验证通过后,您可以对bean值执行任何操作。。。。