我一直在试用Vaadin 7。首先,我必须说明我对Vaadin是个安静的呆子,对JAVA Perstression不是很熟悉。因此,我试图学习bean验证以及如何使用它。我已经学习了几个教程,但是很难确定哪一个是Vaadin7的最新和正确的教程。尽管如此,我尝试下载并使用JPA容器和BeanValidator,但无法使其工作。下面是我正在使用的代码:
package com.example.firstvaadin;
import java.io.Serializable;
import org.hibernate.validator.constraints.Email;
import javax.validation.constraints.*;
public class RegisterBean implements Serializable{
public RegisterBean(String email){
this.email = email;
}
@Size(min = 5, max = 50)
private String email;
public void setEmail(String email) {
this.email = email;
}
public String getEmail() {
return email;
}
}
而且
RegisterBean rbean = new RegisterBean("");
BeanItem<RegisterBean> item = new BeanItem<RegisterBean>(rbean);
TextField email = new TextField("email",item.getItemProperty("email"));
email.setImmediate(true);
layout.addComponent(email);
email.setNullRepresentation("");
The exception is:
aused by: com.vaadin.event.ListenerMethod$MethodException: Invocation of method buttonClick in com.example.firstvaadin.LoginView$1 failed.
at com.vaadin.event.ListenerMethod.receiveEvent(ListenerMethod.java:528)
at com.vaadin.event.EventRouter.fireEvent(EventRouter.java:167)
at com.vaadin.server.AbstractClientConnector.fireEvent(AbstractClientConnector.java:984)
at com.vaadin.ui.Button.fireClick(Button.java:367)
at com.vaadin.ui.Button$1.click(Button.java:56)
... 28 more
Caused by: java.lang.NoClassDefFoundError: javax/validation/MessageInterpolator$Context
at com.example.firstvaadin.RegisterView.<init>(RegisterView.java:55)
at com.example.firstvaadin.LoginView$1.buttonClick(LoginView.java:63)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.vaadin.event.ListenerMethod.receiveEvent(ListenerMethod.java:508)
... 32 more
Caused by: java.lang.ClassNotFoundException: javax.validation.MessageInterpolator$Context
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1713)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1558)
... 39 more
classmate-0.8.0.jar
hibernate-jpa-2.0-api-1.0.1.Final.jar
hibernate-search-engine-4.3.0.Alpha1.jar
hibernate-search-orm-4.3.0.Alpha1.jar
hibernate-validator-5.0.0.Final.jar
hibernate-validator-annotation-processor-5.0.0.Final.jar
hibernate-validator-cdi-5.0.0.Final.jar
javax.el-2.2.4.jar
javax.el-api-2.2.4.jar
jboss-logging-3.1.1.GA.jar
joda-time-2.1.jar
jsoup-1.7.1.jar
log4j-1.2.17.jar
mysql-connector-java-5.1.22-bin.jar
vaadin-sqlcontainer-1.1.0.jar
validation-api-1.0.0.GA.jar
validation-api-1.1.0.Final.jar
classnotfound异常已消失,但现在有了一个新异常:
您不需要hibernate-validator-annotation-processor-5.0.0.final.jar作为运行时依赖项。这是一个有助于避免在开发过程中错误放置约束的开发库。
关于validation-api,删除validation-api-1.0.0.ga.jar是可行的,因为您要添加同一个库的两个不同版本。validation-api-1.0.0.ga.jar是Bean验证1.0的API版本。这与Hibernate Validator4.3兼容。
validation-api-1.1.0.final.jar是Bean Validation1.1API,它与Hibernate Validator5.x保持一致。由于使用后者,因此需要Bean Validation1.1 API。就这么简单。
问题内容: 我在我的JSF项目中使用Bean验证。现在,我遇到了一种情况,在这种情况下,仅当验证先前的方法时,我才想验证方法。 我举一个例子: 由于我将收到每个参数的激活码,因此我想先对其进行验证。如果无效,将导致违规。如果是这样,我什至无法检查它是否已被激活(因为代码无效)。因此,是否有可能实现如上所述的任何功能(if语句的功能,我确实知道这是行不通的,但是它表明了我要完成的工作)。 提前致谢
我的bean中有两个字段 当字段key=“A”,“value”应该跟在其他“key”的特定Regex后面时,它可以是任何内容。 如何根据键定义此值验证。
我使用gradle和以下libs:
环境 Glassfish 3.1.2内置Hibernate-Validator 4.2。
我正在尝试使用自定义Bean验证来验证应该大于零的数值,但问题是使用如下单个自定义验证器来验证任何数值:整数、浮点数、双......: 整数int; @PositiveNumber双倍双; 这可能吗?
我们使用的是spring core+struts(没有spring MVC)