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 3.0KB

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