标签: hibernate-validator

使用Hibernate Validator在错误消息中包含字段名称

我正在使用Hibernate Validator 4.2.0.Final,我正在寻找在我的错误消息中包含类字段名称的最简单方法.

我找到的是以下线程使用自定义ResourceBundle和Hibernate Validator.根据这个,我应该为每个约束注释创建我的自定义注释,为每个约束注释添加一个属性.

有没有更清洁的方法来实现这一目标?

以下代码:

@Size(max = 5)
private String myField;
Run Code Online (Sandbox Code Playgroud)

产生默认错误:大小必须介于0和5之间.

我希望它是:myField大小必须介于0和5之间.

提前致谢.

java spring hibernate hibernate-validator

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

控制验证注释顺序?

我有一个具有两个验证注释的字段

@NotEmpty
@Length(min=3,max=100)
String firstName;
Run Code Online (Sandbox Code Playgroud)

我只是想知道hibernate如何指定首先执行验证注释的顺序,以及是否可以自定义?

我问的原因是,如果我将该字段留空,有时显示的第一个验证消息是非空的,有时如果我将其留空,则获得长度注释的验证消息.

提前致谢.

spring hibernate spring-mvc hibernate-validator

14
推荐指数
2
解决办法
1万
查看次数

如何验证地图中的集合

@Valid对JSR-303 的注释有问题.在注释工作正常,正常列表或及组合,但我试图验证的地图,其中包含列表,即

@Valid
HashMap<String, ArrayList<Object1>> map;
Run Code Online (Sandbox Code Playgroud)

在这种情况下,Object1不验证类的实例.是否有一种方便的方法来递归执行此操作,而无需迭代每个对象并手动验证它?

java validation hibernate-validator

14
推荐指数
1
解决办法
8116
查看次数

使用HibernateValidator进行交叉字段验证不会显示任何错误消息

我正在使用此答案中HibernateValidator指定的表格上的两个字段"password"和"confirmPassword"进行验证.以下是约束描述符(验证器接口).

package constraintdescriptor;

import constraintvalidator.FieldMatchValidator;
import javax.validation.Constraint;
import javax.validation.Payload;
import java.lang.annotation.Documented;
import static java.lang.annotation.ElementType.ANNOTATION_TYPE;
import static java.lang.annotation.ElementType.TYPE;
import java.lang.annotation.Retention;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
import java.lang.annotation.Target;

@Target({TYPE, ANNOTATION_TYPE})
@Retention(RUNTIME)
@Constraint(validatedBy = FieldMatchValidator.class)
@Documented
public @interface FieldMatch
{
    String message() default "{constraintdescriptor.fieldmatch}";
    Class<?>[] groups() default {};
    Class<? extends Payload>[] payload() default {};

    /**
     * @return The first field
     */
    String first();

    /**
     * @return The second field
     */
    String second();

    /**
     * Defines several <code>@FieldMatch</code> annotations on the …
Run Code Online (Sandbox Code Playgroud)

spring jsp spring-mvc hibernate-validator bean-validation

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

Spring MVC使用hibernate Validator来验证单个基本类型

下面是我遇到问题的映射方法,无论我传递给它的值是什么,验证都返回"通过验证".

@RequestMapping(value = "test", method = RequestMethod.POST)
@ResponseBody
public String getTest(@RequestBody @Valid @Max(32) long longValue, BindingResult result) {
  if (result.hasErrors()) {
    return "failed validation";
  } else {
    return "passed validation";
  }
}
Run Code Online (Sandbox Code Playgroud)

我知道@Max适用于我的应用程序,因为我将它用于验证自定义对象,这些对象将大量数据返回给控制器.在这种情况下我只调用@Valid和方法参数中对象的验证类型,它才会运行验证.

hibernate-validator不允许这样做吗?

我希望不必定义一个只包含长值的对象,以便我可以对其进行验证.

java spring-mvc hibernate-validator

14
推荐指数
1
解决办法
711
查看次数

确定字段是否使用给定注释进行注释

我不知道你是否能够从标题中弄清楚我想要做什么,所以我会尝试用例子来解释

让我们假设我已经创建了自己的注释 @VerifySomething

我已经为该注释创建了测试类,以确保它的工作原理.

现在让我们假设我有一个带有注释的SomeClass字段的类something@VerifySomething

class SomeClass {
    @VerifySomething
    String something;
}
Run Code Online (Sandbox Code Playgroud)

到目前为止一切都那么好,但是现在我想test class为我创建SomeClass但是我没有看到任何关于验证所有测试用例的内容,因为我已经检查@VerifySomething过它在应用于测试该注释的类中应该工作,但是我需要确保该字段实际上有一个@VerifySomething注释没有复制粘贴所有这些测试用例.

所以我的问题是,有没有办法检查某个字段是否有一个或多个必需的注释,而不编写我已经在注释测试类中编写的测试用例,以确保它按预期工作.

java hibernate-validator

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

如何以编程方式在Spring中使用@Valid参数调用在@RequestMethod方法上运行的相同验证器?

我在一些字段上有一个带有hibernate验证注释的类(例如@NotNull@Size(min = 4, max = 50)等...)

public class MyClass {

    Long id;

    @NotEmpty
    @Size(min = 4, max = 50)
    String machineName;

    @NotEmpty
    @Size(min = 4, max = 50)
    String humanName;

    // Getters, setters, etc…
}
Run Code Online (Sandbox Code Playgroud)

我还有一个充当JSON API的自定义控制器,以及一个在调用API方法时创建MyClass对象的JSON反序列化器.在我的自定义控制器中,我有一个方法来创建该类型的新对象:

@RequestMapping(method = RequestMethod.POST)
public long createMyObject(@RequestBody @Valid MyClass newObj) {
    // Create the object in the database
    return newObj.getId();
}
Run Code Online (Sandbox Code Playgroud)

和另一种更新现有对象的方法

@RequestMapping(method = RequestMethod.PUT)
public void updateMyObject(@RequestBody MyClass updatedObj) {
    MyClass existingObj = // Get existing obj from DB …
Run Code Online (Sandbox Code Playgroud)

java spring hibernate-validator spring-validator

13
推荐指数
1
解决办法
9314
查看次数

如何在@RequestMapping参数中检查请求参数是否为空?

在我的控制器中,我有String参数,包含一些id,不应该是空字符串的null.我想知道,有没有办法检查它是不是@RequestMapping params中的空字符串?我试图在某些方面解决它

@RequestMapping(value = someURL, params = {"id"})
public SomeResponse doSomething(@RequestParam(required = true) String id)

@RequestMapping(value = someURL, params = {"!id="})
public SomeResponse doSomething(@RequestParam(required = true) String id)

@RequestMapping(value = someURL, params = {"!id=\"\""})
public SomeResponse doSomething(@RequestParam(required = true) String id)
Run Code Online (Sandbox Code Playgroud)

没有成功.据我了解,双方params = {"id"}@RequestParam(required = true)只能检查参数id呈现在请求(!= NULL).

我很可能必须使用控制器boby中的代码检查它,例如

if (id == null || id.isEmpty()) {
    return someErrorResponse;
}
Run Code Online (Sandbox Code Playgroud)

但如果我错了,请纠正我.提前致谢.

PS我的应用程序在Apache Tomcat 7.0.62容器中的Java 1.7 SE上运行

java spring spring-mvc hibernate-validator spring-annotations

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

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

我在堆栈溢出中找到了三个条目:

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

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

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

并且所有三个人都说将hibernate验证器添加到类路径中.当我这样做并仍然得到相同的错误时我该怎么办?

1301 [main] ERROR org.springframework.web.servlet.DispatcherServlet - Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in ServletContext resource [/WEB-INF/db.xml]: Invocation of init method failed; nested exception is org.hibernate.HibernateException: Unable to get the default Bean Validation factory
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1455)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:567)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:913)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:464)
    at org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:631)
    at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:588)
    at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:645)
    at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:508)
    at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:449)
    at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:133)
    at javax.servlet.GenericServlet.init(GenericServlet.java:241) …
Run Code Online (Sandbox Code Playgroud)

java spring hibernate-validator

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

Spring验证与Hibernate验证

我现在很困惑.我知道Hibernate Validator 6是Bean Validation 2.0规范的参考实现.它支持分组,错误消息的国际化,自定义方法验证等.问题是Spring 5是否支持这些功能,还是我只剩下Hibernate Validator 6?

为什么我应该使用Hibernate Validator和我的Sprig Boot项目而不是提供的Spring Validation.我的公司需要使用任何第三方库的理由.

所有在线参考示例都建议使用Hibernate Validator,并且在Spring验证中没有发现任何内容,请建议或指向其他链接.

java validation spring hibernate-validator

12
推荐指数
2
解决办法
7233
查看次数