标签: hibernate-validator

是否有使用带注释的方法参数启用JSR 303 Bean验证的标准方法

我一直在寻找一段时间没有运气.我没有使用Spring MVC,但仍想使用它@javax.validation.Valid来启用方法参数的验证.举个例子

public class EventServiceImpl implements IEventService {
    @Override
    public void invite(@Valid Event event, @Valid User user) { ... }
}
Run Code Online (Sandbox Code Playgroud)

使用MVC,这对带@Controller注释的bean的启用很简单<mvc:annotation-driven/>(参见5.7.4.3配置JSR-303验证器供Spring MVC使用).

使用AOP应该是非常简单的.不过,我怀疑有一些标准的方法可以做到这一点.因此,问题是:对于非MVC应用程序和非控制器bean,是否存在类似的事情,以便为带注释的bean启用输入验证?

java aop spring hibernate-validator bean-validation

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

Hibernate Validator,自定义ResourceBundleLocator和Spring

我试图在hibernate验证4.1中覆盖默认的ResourceBundleLocator.到目前为止,它完美地运行,但其使用的唯一示例包括用于实例化ValidationFactory的Java代码.

当使用具有spring hibernate的web应用程序时,会自动配置验证(只应存在合适的hibernate验证*.jar文件并自动使用).如何在该场景中替换ResourceBundleLocator?我没有看到在任何属性或applicationContext.xml文件中规划我的自定义ResourceBundleLocator的方法.

java spring hibernate-validator

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

@Max和@DecimalMax(以及@Min和@DecimalMin)之间的区别

什么之间的区别@Max@DecimalMax,和@Min@DecimalMin在Hibernate验证?

看看Javadocs,他们似乎正在执行相同的约束.

hibernate hibernate-validator

9
推荐指数
1
解决办法
9338
查看次数

使用注释进行Spring验证与Hibernate验证

我正在使用spring mvc 3.0创建一个演示应用程序.我必须在屏幕上应用验证.我在网上搜索并发现该应用程序主要使用两种类型的验证: -

  1. 使用验证Api的Spring验证
  2. 使用hibernate验证进行Hibernate验证

希望有人给我一个建议,在应用程序中实现哪一个是好的.

validation spring spring-mvc hibernate-validator

9
推荐指数
1
解决办法
8513
查看次数

Bean验证组序列不起作用

我在我的项目中使用spring 4.1,hibernate验证器5.1.3.我一直试图让GroupSequence从最近2天开始工作.我已经参考了验证文档,博客和stackoverflow上发布的一些问题.

请看下面的课程.当我从注释中删除GroupSequence和groups时,所有验证消息都会出现在一起,即对名称和其他字段的所有检查都会一起触发.让我们说对于名称字段 - 我希望首先验证@NotBlank和@Size,然后名称应该与模式匹配,最后应该检查@UniqueName,因为数据库调用.

为此,我按照文档和答案的建议创建了GroupSequence.但是当激活验证时,只会为名称触发@NotBlank和@Size.当我从剩余的注释中删除组值时,它们开始工作但是所有错误消息都会立即显示,这是我不想要的.

我希望使用组指定的注释First.class在Second.class验证之前一起触发.我不明白为什么用组指定的验证没有被解雇.

有人可以指导我.


@GroupSequence({MyForm.class, OrderedChecks.class})
public class MyForm {

  @NotBlank
  @Size(min = 2, max = 40)
  @Pattern(regexp = "^[\\p{Alnum} ]+$", groups = First.class)
  @UniqueName(groups = Second.class)//Custom validation
  private String name;

  @NotBlank
  @Size(min = 2, max = 40)
  private String url;

  @NotBlank
  @Size(max = 100)
  private String imagePath;

  //Custom Validation
  @CheckContent(acceptedType = <someString>, allowedSize=<someval>, dimensions=<someval> groups = Second.class)
  private MultipartFile image

...
}

@GroupSequence(value = {Default.class, First.class, Second.class})
public interface OrderedChecks {}

@Controller
@RequestMapping(value = "/myForm") …
Run Code Online (Sandbox Code Playgroud)

java spring-mvc hibernate-validator bean-validation

9
推荐指数
1
解决办法
3648
查看次数

@Valid没有使用Spring Boot使用JAX-RS

我无法获得验证工作.我有这个简单的端点,它是Spring Boot应用程序的一部分:

@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Response create(@Valid UserDTO userDTO, @Context UriInfo uriInfo) {
    User user = UserParser.parse(userDTO);
    userService.save(user);
    final URI uri = uriInfo.getAbsolutePathBuilder().path(String.valueOf(user.getId())).build();
    return Response.created(uri).build();
}
Run Code Online (Sandbox Code Playgroud)

然后,UserDTO验证:

@Getter
@Setter
@JsonInclude(JsonInclude.Include.NON_NULL)
public class UserDTO {

    private Long id;

    // redundant validations, for testing
    @NotNull
    @Size(min = 5, max = 80, message = "First name too short")
    @NotBlank(message = "First name blank")
    @NotEmpty(message = "First name empty")
    private String firstName;

    @NotNull
    @Size(min = 2, max = 80, message = "Last name …
Run Code Online (Sandbox Code Playgroud)

java validation jersey hibernate-validator spring-boot

9
推荐指数
1
解决办法
4235
查看次数

使用swagger&jboss进行javax验证

我正在尝试使用招摇来记录我的休息api,并且我已经取得了一些成功,但是当涉及到约束资源参数时,我正在碰壁.我正在使用JBoss RESTEasy与hibernate验证器提供程序和Jackson 2.x注释POJO.我遇到的问题是遇到@ DecimalMin/@ DecimalMax注释时我得到了一个

java.lang.NoSuchMethodError: javax.validation.constraints.DecimalMin.inclusive()Z 
Run Code Online (Sandbox Code Playgroud)

似乎swagger正在尝试使用更新版本的javax.validation.constraints.*(v1.1.0.Final)库,而jboss正在使用旧版本(v1.0.0.GA).我已经尝试了所有我能想到的东西,包括适当的库无济于事.

环境是JBoss EAP 6.4.0.GA

我的招摇条目(pom.xml):

<dependency>
    <groupId>io.swagger</groupId>
    <artifactId>swagger-jaxrs</artifactId>
    <version>1.5.8</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

示例POJO代码段:

...
import javax.validation.constraints.DecimalMax;
import javax.validation.constraints.DecimalMin;
...
@JsonInclude(JsonInclude.Include.NON_NULL)
@Generated("org.jsonschema2pojo")
@JsonPropertyOrder({
    "altM",
    "altDatum"
 })
public class Altitude {
@JsonProperty("altM")
@DecimalMin("-2000")
@DecimalMax("10000")
@NotNull
private Double altM;
...
Run Code Online (Sandbox Code Playgroud)

我已经尝试了很多东西,但是我学到的东西越多,我相信以下是我理解依赖关系的两个最相关的尝试:

尝试1:从hibernate验证器中排除javax.validation并让swagger包含它:

<dependency>
    <groupId>org.jboss.resteasy</groupId>
    <artifactId>resteasy-hibernatevalidator-provider</artifactId>
    <version>3.0.16.Final</version>
    <exclusions>
        <exclusion>
            <groupId>javax.validation</groupId>
            <artifactId>validation-api</artifactId>
        </exclusion>
    </exclusions>
</dependency>
Run Code Online (Sandbox Code Playgroud)

尝试2:显式包含javax.validation v1.1.0.Final:

<dependency>
    <groupId>javax.validation</groupId>
    <artifactId>validation-api</artifactId>
    <version>1.1.0.Final</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

Maven依赖树(尝试1):

[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @     MissionPlanningService ---
[INFO] mil.army.cerdec.cpi.mcas:MissionPlanningService:war:0.0.2-SNAPSHOT
[INFO] +- org.jboss.resteasy:resteasy-jaxrs:jar:3.0.16.Final:compile
[INFO] |  +- org.jboss.spec.javax.ws.rs:jboss-jaxrs-api_2.0_spec:jar:1.0.0.Final:compile
[INFO] …
Run Code Online (Sandbox Code Playgroud)

jboss java-ee hibernate-validator maven swagger

9
推荐指数
1
解决办法
774
查看次数

Scala中的嵌套注释列表

救命,

我如何在Scala中执行以下操作?

import org.hibernate.validator.constraints.ScriptAssert

@ScriptAssert.List({
    @ScriptAssert(script = "...", lang = "javascript"),
    @ScriptAssert(script = "...", lang = "javascript")})
Run Code Online (Sandbox Code Playgroud)

annotations scala hibernate-validator scala-2.8 bean-validation

8
推荐指数
1
解决办法
1453
查看次数

如何对嵌套列表对象进行Hibernate验证?

我需要验证存储在表单bean对象列表中的对象.

下面是我的表单bean对象.

public class Role implements java.io.Serializable {

    // Fields    
    private int roleId;

    @NotBlank
    private String roleName;

    private boolean active;

    @Valid
    private List<Module> modules;

    // getters anfd setters
}
Run Code Online (Sandbox Code Playgroud)

以下是我的主要表单bean对象列表中的对象

public class Module implements Serializable {

    private int id;

    @NotBlank
    private String moduleName;

    // other properties and getters and setters
}
Run Code Online (Sandbox Code Playgroud)

下面是我的属性文件

# -- Role form -- 
NotBlank.role.roleName=Role Name can not be blank.
NotBlank.module.moduleName=Module Name can not be blank.
Run Code Online (Sandbox Code Playgroud)

下面是My JSP页面,该表单由角色名称和可添加到角色的模块组成.

    <table border="0" class="section_tbl2">
    <tr>
        <td width="150px" valign="top">
            <spring:message code="dmx.role.form.label.name"/> …
Run Code Online (Sandbox Code Playgroud)

spring-mvc hibernate-validator nested-attributes

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

Spring Boot REST 验证错误响应

控制器方法:

public Mission createMission(final @Valid @RequestBody Mission mission) {

    //save..

    return mission;
}
Run Code Online (Sandbox Code Playgroud)

我想将所有验证错误消息枚举为 json 并返回。

我可以通过创建一个新的异常类来做到这一点,在控制器方法参数中添加 BindingResult,当绑定结果有错误时抛出新的异常并在 @ControllerAdvice 类中处理异常。

if (bindingResult.hasErrors()) {
        throw new InvalidRequestException("Fix input and try again", bindingResult);
    }
Run Code Online (Sandbox Code Playgroud)

但我想避免在每个控制器方法中检查 BindingResult,而是全局处理。如果我可以处理异常,我可以做到这一点:org.springframework.web.bind.MethodArgumentNotValidException。但不幸的是 Spring Boot 不允许

@ExceptionHandler(MethodArgumentNotValidException.class)
Run Code Online (Sandbox Code Playgroud)

它显示了不明确的异常处理程序,因为处理了相同的异常 ResponseEntityExceptionHandler,并且我无法覆盖 handleException,因为它是最终的。我尝试通过捕获 Exception.class 来覆盖受保护的 ResponseEntity handleMethodArgumentNotValid(),但这根本没有被调用。

有没有办法实现这个目标?对于一个简单的任务来说,这似乎有很多事情:(

java validation spring hibernate-validator spring-boot

8
推荐指数
2
解决办法
7445
查看次数