1

我有一个使用有效负载执行某些操作的控制器,但现在我想在执行任何操作之前对其进行验证。有效负载被转换为byte[]然后读入一个名为 AuthorizationServer 的类,该类具有一些验证注释 - @NotNull、@NotBlank 等。

这是 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 类中声明的注释来验证授权服务器。我在春季4。有人可以指导我吗?谢谢!

4

1 回答 1

0

为什么不让 Spring 为您解组 AuthorizationServer 类?然后你只需用 @Valid 注释它并查看 BindingResult 对象是否有错误:

@RequestMapping(value = "/somUrl", method = RequestMethod.POST)
@ResponseBody
public void doSomething(@RequestBody @Valid AuthorizationServer authorizationServer, BindingResult bindingResult) throws Exception {
        if (bindingResult.hasErrors()) {
           //do something
        }

更新:

尝试此代码以编程方式验证:

ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
Validator validator = factory.getValidator();
Set<ConstraintViolation<AuthorizationServer>> errors = validator.validate(authorizationServer);

更新 2:

那这个呢:

@Valid
AuthorizationServer authorizationServer = mapper.readValue(bytes, AuthorizationServer.class);
于 2014-05-12T22:51:59.683 回答