【问题标题】:Maven with Vaadin Bean Validation?Maven 与 Vaadin Bean 验证?
【发布时间】:2014-12-09 00:06:56
【问题描述】:

我正在尝试使用 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);
     }
}

我添加了休眠验证器作为依赖项,但仍然无法正常工作。在 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

【问题讨论】:

    标签: java maven vaadin vaadin7


    【解决方案1】:

    它应该在您调用 binder.commit() 时验证。检查类路径上是否有 javax.validation.Validation 类。

    如果不是这样,请在BeanFieldGroup 上调试isBeanValidationImplementationAvailable() 静态方法并发布您发现的任何进一步的详细信息。

    【讨论】:

    • 我正在尝试将 isBeanValidationImplementationAvailable() 方法与活页夹一起使用,但不返回 Eclipse 的自动完成功能。我正在使用 Vaadin7
    • 因为它受到保护。您应该检查源代码并在方法中放置一个断点。如果看不到源代码,请转到 Settings -> Maven 并选中 Download Artifact Sources + Download Artifact JavaDoc 复选框。
    • ...我为一个类移动了方法,方法返回True
    【解决方案2】:

    您需要使用随 Vaadin Bean Validation 插件一起提供的 BeanValidationForm 和 BeanValidationValidator。 您可以在 svn 找到此插件的一些演示代码。

    【讨论】:

      【解决方案3】:

      我有同样的问题,决定包含在依赖项&lt;artifactId&gt;javaee-api&lt;/artifactId&gt;

      【讨论】:

        猜你喜欢
        • 2013-04-16
        • 1970-01-01
        • 2012-12-31
        • 1970-01-01
        • 2023-03-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-04-25
        相关资源
        最近更新 更多