You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

FieldBinderWithBeanValidation.java 2.9KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. package com.vaadin.tests.fieldgroup;
  2. import com.vaadin.tests.components.TestBase;
  3. import com.vaadin.tests.data.bean.Address;
  4. import com.vaadin.tests.data.bean.Country;
  5. import com.vaadin.tests.data.bean.PersonWithBeanValidationAnnotations;
  6. import com.vaadin.tests.data.bean.Sex;
  7. import com.vaadin.tests.util.Log;
  8. import com.vaadin.ui.Button;
  9. import com.vaadin.ui.Notification;
  10. import com.vaadin.v7.data.fieldgroup.BeanFieldGroup;
  11. import com.vaadin.v7.data.fieldgroup.FieldGroup;
  12. import com.vaadin.v7.data.fieldgroup.FieldGroup.CommitException;
  13. import com.vaadin.v7.data.util.BeanItem;
  14. import com.vaadin.v7.ui.Table;
  15. import com.vaadin.v7.ui.TextArea;
  16. import com.vaadin.v7.ui.TextField;
  17. public class FieldBinderWithBeanValidation extends TestBase {
  18. private Log log = new Log(5);
  19. private TextField firstName;
  20. private TextArea lastName;
  21. private TextField email;
  22. private TextField age;
  23. private Table sex;
  24. private TextField deceased;
  25. @Override
  26. protected void setup() {
  27. addComponent(log);
  28. final BeanFieldGroup<PersonWithBeanValidationAnnotations> fieldGroup = new BeanFieldGroup<>(
  29. PersonWithBeanValidationAnnotations.class);
  30. fieldGroup.buildAndBindMemberFields(this);
  31. addComponent(firstName);
  32. addComponent(lastName);
  33. addComponent(email);
  34. addComponent(age);
  35. addComponent(sex);
  36. addComponent(deceased);
  37. Button commitButton = new Button("Commit", event -> {
  38. String msg = "Commit succesful";
  39. try {
  40. fieldGroup.commit();
  41. } catch (CommitException e) {
  42. msg = "Commit failed: " + e.getMessage();
  43. }
  44. Notification.show(msg);
  45. log.log(msg);
  46. });
  47. Button discardButton = new Button("Discard", event -> {
  48. fieldGroup.discard();
  49. log.log("Discarded changes");
  50. });
  51. Button showBean = new Button("Show bean values",
  52. event -> log.log(getPerson(fieldGroup).toString()));
  53. addComponent(commitButton);
  54. addComponent(discardButton);
  55. addComponent(showBean);
  56. sex.setPageLength(0);
  57. PersonWithBeanValidationAnnotations p = new PersonWithBeanValidationAnnotations(
  58. "John", "Doe", "john@doe.com", 64, Sex.MALE,
  59. new Address("John street", 11223, "John's town", Country.USA));
  60. fieldGroup.setItemDataSource(new BeanItem<>(p));
  61. }
  62. public static PersonWithBeanValidationAnnotations getPerson(
  63. FieldGroup binder) {
  64. return ((BeanItem<PersonWithBeanValidationAnnotations>) binder
  65. .getItemDataSource()).getBean();
  66. }
  67. @Override
  68. protected String getDescription() {
  69. // TODO Auto-generated method stub
  70. return null;
  71. }
  72. @Override
  73. protected Integer getTicketNumber() {
  74. // TODO Auto-generated method stub
  75. return null;
  76. }
  77. }