【问题标题】:How do I use @Valid to validate local variables?如何使用@Valid 验证局部变量?
【发布时间】:2015-06-25 15:59:24
【问题描述】:

这是问题here 的后续内容。如何将@Valid 添加到局部变量中?

这是来自AuthorizationServer类的代码:

@NotBlank
private String authorizationServerId;

@Property
@Indexed(unique = true)
@NotBlank
private String authorizationUrl;

@Property(policy = PojomaticPolicy.TO_STRING)
@NotBlank
private String clientAuthorizationUrl;

@NotBlank
private String deviceRootCert;

这是控制器:

byte[] bytes = IOUtils.toByteArray(request.getInputStream());
        String signature = authorization.split(":")[1];

        ObjectMapper mapper = objectMapper();
        AuthorizationServer authorizationServer = mapper.readValue(bytes, 
        AuthorizationServer.class);

如何根据AuthorizationServer 类中声明的注释验证authorizationServer

当我尝试时

@Valid
AuthorizationServer authorizationServer = mapper.readValue(bytes, AuthorizationServer.class);

我收到了错误@Valid not applicable to local variable

【问题讨论】:

  • 你得到答案了吗?

标签: java hibernate validation hibernate-validator


【解决方案1】:

我认为例外说明了一切。 Bean Validation 不允许验证局部变量。这完全是关于通过属性验证来验证类状态,或者您可以进行方法验证。没有局部变量验证之类的东西。

【讨论】:

    【解决方案2】:

    确实,Bean Validation 不允许对局部变量进行验证。但是,您可以执行以下操作:

    @javax.validation.executable.ValidateOnExecution    
    AuthorizationServer getAuthorizationServer(ObjectMapper mapper){
        return mapper.readValue(bytes, AuthorizationServer.class);
    }
    

    【讨论】:

      猜你喜欢
      • 2015-01-04
      • 2014-01-10
      • 1970-01-01
      • 2021-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-17
      相关资源
      最近更新 更多