标签: hibernate-validator

使用Hibernate Validator进行交叉字段验证(JSR 303)

在Hibernate Validator 4.x中是否有(或第三方实现)交叉字段验证的实现?如果不是,那么实现交叉字段验证器的最简洁方法是什么?

例如,如何使用API​​来验证两个bean属性是否相等(例如验证密码字段是否与密码验证字段匹配).

在注释中,我希望有类似的东西:

public class MyBean {
  @Size(min=6, max=50)
  private String pass;

  @Equals(property="pass")
  private String passVerify;
}
Run Code Online (Sandbox Code Playgroud)

validation hibernate-validator bean-validation

228
推荐指数
8
解决办法
15万
查看次数

javax.validation.ValidationException:HV000183:无法加载'javax.el.E​​xpressionFactory'

我尝试使用hibernate验证器编写非常简单的应用程序:

我的步骤:

在pom.xml中添加以下依赖项:

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>5.1.1.Final</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

写代码:

class Configuration {
    Range(min=1,max=100)
    int threadNumber;
    //...

    public static void main(String[] args) {
        ValidatorFactory factory = Validation.buildDefaultValidatorFactory();

        Validator validator = factory.getValidator();

        Configuration configuration = new Configuration();
        configuration.threadNumber = 12;
            //...

        Set<ConstraintViolation<Configuration>> constraintViolations = validator.validate(configuration);
        System.out.println(constraintViolations);

    }
}
Run Code Online (Sandbox Code Playgroud)

我得到以下stacktrace:

Exception in thread "main" javax.validation.ValidationException: Unable to instantiate Configuration.
    at javax.validation.Validation$GenericBootstrapImpl.configure(Validation.java:279)
    at javax.validation.Validation.buildDefaultValidatorFactory(Validation.java:110)
    ...
    at org.hibernate.validator.internal.engine.ConfigurationImpl.<init>(ConfigurationImpl.java:110)
    at org.hibernate.validator.internal.engine.ConfigurationImpl.<init>(ConfigurationImpl.java:86)
    at org.hibernate.validator.HibernateValidator.createGenericConfiguration(HibernateValidator.java:41)
    at javax.validation.Validation$GenericBootstrapImpl.configure(Validation.java:276)
    ... 2 more
Run Code Online (Sandbox Code Playgroud)

我错了什么?

java validation hibernate hibernate-validator maven

94
推荐指数
8
解决办法
9万
查看次数

Hibernate验证器:@Email接受要求@ stackoverflow有效吗?

我正在使用@Email注释来验证电子邮件地址.我遇到的问题是它接受像ask@stackoverflow有效的电子邮件地址这样的东西.我想这是因为他们想要支持内部网地址,但我似乎找不到一个标志,所以它检查扩展.

我是否真的需要切换到@Pattern(以及任何灵活的电子邮件模式的建议)或者我错过了什么?

validation hibernate spring-mvc hibernate-validator

49
推荐指数
5
解决办法
5万
查看次数

JSR 303:如何验证带注释的对象的集合?

是否可以验证JSR 303中的对象集合 - Jave Bean Validation,其中集合本身没有任何注释,但包含的元素是什么?

例如,由于第二个人的名称为空,是否可能导致约束违规:

List<Person> people = new ArrayList<Person>();
people.add(new Person("dave"));
people.add(new Person(null));

Validator validator = Validation.buildDefaultValidatorFactory().getValidator();
Set<ConstraintViolation<List<Person>>> validation = validator.validate(people);
Run Code Online (Sandbox Code Playgroud)

java jsr hibernate-validator bean-validation

45
推荐指数
2
解决办法
4万
查看次数

在Tomcat 6中部署Spring 4.0的AbstractMethodError

我在Tomcat 6.0.37中部署Spring 4.0.1应用程序时遇到异常:

SEVERE: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.validation.beanvalidation.OptionalValidatorFactoryBean#0': Invocation of init method failed; nested exception is java.lang.AbstractMethodError: org.hibernate.validator.internal.engine.ConfigurationImpl.getDefaultParameterNameProvider()Ljavax/validation/ParameterNameProvider;
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1553)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:539)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:475)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:304)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:228)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:300)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:195)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:700)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:760)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:482)
    at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:403)
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:306)
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:106)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4206)
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4705)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:799)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:779)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:601)
    at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:943)
    at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:778)
    at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:504)
    at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1317)
    at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:324)
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142) …
Run Code Online (Sandbox Code Playgroud)

spring tomcat tomcat6 hibernate-validator spring-4

40
推荐指数
1
解决办法
3万
查看次数

Hibernate验证原始集合

我希望能够做到这样的事情:

@Email
public List<String> getEmailAddresses()
{
   return this.emailAddresses;
}
Run Code Online (Sandbox Code Playgroud)

换句话说,我希望列表中的每个项目都被验证为电子邮件地址.当然,注释这样的集合是不可接受的.

有没有办法做到这一点?

java collections hibernate-validator bean-validation

36
推荐指数
3
解决办法
3万
查看次数

java.lang.NoSuchMethodException:userAuth.User.<init>()

我有一个验证类:

public class User {
    @Size(min=3, max=20, message="User name must be between 3 and 20 characters long")
    @Pattern(regexp="^[a-zA-Z0-9]+$", message="User name must be alphanumeric with no spaces")
    private String name;

    @Size(min=6, max=20, message="Password must be between 6 and 20 characters long")
    @Pattern(regexp="^(?=.*[0-9])(?=.*[a-zA-Z])([a-zA-Z0-9]+)$", message="Password must contains at least one number")
    private String password;

    public User(String _name, String _password){
        super();
        name = _name;
        password = _password;
    }

    public String getName(){
        return name;
    }

    public String getPassword(){
        return password;
    }

    public void setPassword(String newPassword){ …
Run Code Online (Sandbox Code Playgroud)

java validation spring hibernate-validator

35
推荐指数
4
解决办法
6万
查看次数

Spring MVC 3验证 - 无法找到默认提供程序

尝试设置Spring MVC验证时出错.

javax.validation.ValidationException: Unable to find a default provider
Run Code Online (Sandbox Code Playgroud)

我在文档中读到他们使用的默认提供程序是hibernate-validator.我是否需要包含此库才能使验证工作?即使我没有在我的项目中使用hibernate,也可以包含这个库吗?

java validation spring spring-mvc hibernate-validator

34
推荐指数
2
解决办法
4万
查看次数

javax.validation.ValidationException:无法找到默认提供程序

我目前正在使用Spring MVC Web应用程序并尝试使用@Valid注释挂钩验证.当我启动应用程序时,我得到以下异常:

javax.validation.ValidationException: Unable to find a default provider
Run Code Online (Sandbox Code Playgroud)

我在类路径上有Hibernate Validator 3.1.0.GA以及javax验证1.0.0.GA,Hibernate Core 3.3.1.GA和Hibernate Annotations 3.4.0.GA.

在那些我没有看到的版本中是否存在不兼容性,或者是否有人会想到为什么我仍然在类路径上使用Hibernate Validator获得此异常的原因?

干杯,

帽子

java spring hibernate-validator bean-validation

32
推荐指数
3
解决办法
9万
查看次数

javax.servlet.ServletException:HV000030:找不到类型的验证程序:java.lang.Integer

我必须更新数据库中的信息.

FacadePatient.java 班级代码:

public Patient update(Patient p) {

    Patient pat = em.find(Patient.class, p.getPatientId());
    p.setPatientPhone(pat.getPatientPhone());
    p.setPatientDateNaiss(pat.getPatientDateNaiss());
    p.setPatientEmail(pat.getPatientEmail());
    p.setPatientJob(pat.getPatientJob());
    p.setPatientSmoking(pat.getPatientSmoking());
    p.setPatientSize(pat.getPatientSize());
    em.merge(pat);
    return p;
}
Run Code Online (Sandbox Code Playgroud)

java-ee hibernate-validator bean-validation

32
推荐指数
2
解决办法
7万
查看次数