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, Debug е по-долу.

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() с binder, но не връща автоматично довършване на eclipse. Използвам Vaadin7 - 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