Maven с проверкой Vaadin Bean?

Я пытаюсь создать приложение, используя Maven и Vaadin Bean Validation для проверки моих bean-компонентов, но теперь это не работает для меня.

Я пытаюсь это.

@Entity
public class Person{
    @Id
    @GeneratedValue
    private Integer id;

    @NotNull
    @NotEmpty
    @Size(min=5, max=50, message="insert first name")
    private String firstName;

    @NotNull
    @NotEmpty
    @Email
    private String email;

}

//my app
public class LoginView extends VerticalLayout{
     private TextField firstName, email;
     private BeanFieldGroup<Person> binder;
     private FormLayout form;

     public LoginView(){
         form = new FormLayout();
         binder = new BeanFieldGroup<Person>(Person.class);
         Field<?> field = null;

         field = binder.buildAndBind("Firstname", "firstName");
         firstName = (TextField)binder.getField("firstName");
         form.addComponent(firstName);

         field = binder.buildAndBind("Email", "email");
         email = (TextField)binder.getField("email");
         form.addComponent(email);

         this.addComponent(form);
     }
}

Я добавил hibernate-validator в качестве зависимости, но все равно не работает. В документах валидатора vaadin bean говорится об использовании Hibernate Validator или agimatec-validation.

введите здесь описание изображения

Какую зависимость мне нужно добавить для этой работы?

Метод isBeanValidationImplementationAvailable() возвращает true, отладка ниже.

11:26:54,112 DEBUG [org.hibernate.validator.internal.engine.resolver.DefaultTraversableResolver] - Found javax.persistence.Persistence on classpath containing 'getPersistenceUtil'. Assuming JPA 2 environment. Trying to instantiate JPA aware TraversableResolver
11:26:54,113 DEBUG [org.hibernate.validator.internal.engine.resolver.DefaultTraversableResolver] - Instantiated JPA aware TraversableResolver of type org.hibernate.validator.internal.engine.resolver.JPATraversableResolver.
11:26:54,113 DEBUG [org.hibernate.validator.internal.xml.ValidationXmlParser] - Trying to load META-INF/validation.xml for XML based Validator configuration.
11:26:54,113 DEBUG [org.hibernate.validator.internal.xml.ValidationXmlParser] - No META-INF/validation.xml found. Using annotation based configuration only.
Is bean validation implementation available: true

person FernandoPaiva    schedule 04.04.2014    source источник


Ответы (3)


Он должен проверяться при вызове binder.commit(). Проверьте, есть ли у вас класс javax.validation.Validation в пути к классам.

Если это не так, отладьте статический метод isBeanValidationImplementationAvailable() на BeanFieldGroup и опубликуйте все подробности, которые вы узнали.

person acsadam0404    schedule 07.04.2014
comment
Я пытаюсь использовать метод isBeanValidationImplementationAvailable() со связующим, но не возвращает автозаполнение eclipse. Я использую Ваадин7 - person FernandoPaiva; 07.04.2014
comment
Потому что он защищен. Вы должны проверить исходный код и поставить точку останова в методе. Если вы не видите исходный код, перейдите в «Настройки» -> «Maven» и установите флажки «Загрузить источники артефактов» + «Загрузить артефакт JavaDoc». - person acsadam0404; 07.04.2014
comment
...Я переместил метод для класса, метод возвращает True - person FernandoPaiva; 07.04.2014

Вам нужно использовать BeanValidationForm и BeanValidationValidator, которые поставляются вместе с надстройкой Vaadin Bean Validation. Вы найдете демонстрационный код по адресу svn для этого дополнения.

person Gabriel Ruiu    schedule 04.04.2014

У меня была такая же проблема, решил включить в зависимости <artifactId>javaee-api</artifactId>

person BioQwer    schedule 08.12.2014