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.

MultipleValidationErrors.java 2.8KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. package com.vaadin.tests.fieldgroup;
  2. import org.apache.commons.lang.StringEscapeUtils;
  3. import com.vaadin.server.AbstractErrorMessage;
  4. import com.vaadin.server.VaadinRequest;
  5. import com.vaadin.tests.components.AbstractReindeerTestUI;
  6. import com.vaadin.ui.Label;
  7. import com.vaadin.v7.data.Validator;
  8. import com.vaadin.v7.data.fieldgroup.FieldGroup;
  9. import com.vaadin.v7.data.util.BeanItem;
  10. import com.vaadin.v7.data.validator.BeanValidator;
  11. import com.vaadin.v7.ui.TextField;
  12. public class MultipleValidationErrors extends AbstractReindeerTestUI {
  13. public static final String FIRST_NAME_NOT_NULL_VALIDATION_MESSAGE = "first name is null";
  14. public static final String LAST_NAME_NOT_NULL_VALIDATION_MESSAGE = "last name is null";
  15. public static final String FIRST_NAME_NOT_EMPTY_VALIDATION_MESSAGE = "first name is empty";
  16. public static final String LAST_NAME_NOT_EMPTY_VALIDATION_MESSAGE = "last name is empty";
  17. @Override
  18. protected void setup(VaadinRequest request) {
  19. BeanItem<PersonBeanWithValidationAnnotations> item = new BeanItem<>(
  20. new PersonBeanWithValidationAnnotations());
  21. final FieldGroup fieldGroup = new FieldGroup(item);
  22. bindTextField(item, fieldGroup, "First Name", "firstName");
  23. bindTextField(item, fieldGroup, "Last Name", "lastName");
  24. final Label validationErrors = new Label();
  25. validationErrors.setId("validationErrors");
  26. addComponent(validationErrors);
  27. addButton("Submit", event -> {
  28. validationErrors.setValue("");
  29. try {
  30. fieldGroup.commit();
  31. } catch (FieldGroup.CommitException e) {
  32. if (e.getCause() != null && e
  33. .getCause() instanceof Validator.InvalidValueException) {
  34. validationErrors.setValue(
  35. StringEscapeUtils.unescapeHtml(AbstractErrorMessage
  36. .getErrorMessageForException(e.getCause())
  37. .getFormattedHtmlMessage()));
  38. }
  39. }
  40. });
  41. }
  42. private void bindTextField(
  43. BeanItem<PersonBeanWithValidationAnnotations> item,
  44. FieldGroup fieldGroup, String caption, String propertyId) {
  45. TextField textfield = new TextField(caption,
  46. item.getItemProperty(propertyId));
  47. textfield.addValidator(new BeanValidator(
  48. PersonBeanWithValidationAnnotations.class, propertyId));
  49. fieldGroup.bind(textfield, propertyId);
  50. addComponent(textfield);
  51. }
  52. @Override
  53. protected Integer getTicketNumber() {
  54. return 14742;
  55. }
  56. @Override
  57. protected String getTestDescription() {
  58. return "All validation errors should be included when committing a field group.";
  59. }
  60. }