【问题标题】:Custom parameter validator in spring bootSpring Boot 中的自定义参数验证器
【发布时间】:2019-05-22 20:44:57
【问题描述】:

我创建了一个自定义验证器来验证传递给转换器中函数的字符串。但是,没有调用自定义验证器。我错过了什么吗?

OperationParameter.java

@Documented
@Constraint(validatedBy = OperationParameterValidation.class)
@Target( { ElementType.PARAMETER
        })
@Retention(RetentionPolicy.RUNTIME)
public @interface OperationParameter {
    String message() default "Operation Parameter Invalid";

    Class<?>[] groups() default { };

    Class<? extends Payload>[] payload() default { };
}

OperationParameterValidation.java

public class OperationParameterValidation implements ConstraintValidator<OperationParameter, String> {

    @Override
    public boolean isValid(String value, ConstraintValidatorContext context) {
       System.out.println("Validator called");
        // validation process
        // return true / false;
    }

}

converter.java

@Component
public class StringToOperation implements Converter<String, Operation> {

    @Override
    public Operation convert(@Valid @OperationParameter String source) {
         // Even I pass wrong String this function is executed successfully, and no print from validator
    }
}

Service.java

public class Service {

    @Autowired
    ConversionService conversionService;

    public void action() {

        String action = "";
        Operation addInsertOperation = conversionService.convert(action, Operation.class);
    }

}

【问题讨论】:

  • 您是否可以将StringToOperation 标记为@Component?然后将进行 Spring 的验证
  • 我试过了,但仍然没有调用验证。
  • 你也可以用你创建/注入StringToOperation转换器的部分显示ConversionService类吗?
  • org.springframework.core.convert.ConversionService 是自动装配的,它会根据参数自动调用。
  • 我认为ConversionServiceStringToOperation 不是一回事。论据也不合适。我假设您使用@AutowiredStringToOperation 注入ConversionService。但是你能把这段代码放在这里吗?只是为了交叉检查

标签: java spring-boot customvalidator


【解决方案1】:

在验证器类上设置@SupportedValidationTarget(ValidationTarget.PARAMETERS)

【讨论】:

  • 如果您的意思是将上述注释放在我的 OperationParameterValidator 类上,那么这不起作用。不过,我的 isValid(...) 函数没有被调用。
猜你喜欢
  • 2020-04-12
  • 2021-09-05
  • 1970-01-01
  • 1970-01-01
  • 2016-12-04
  • 2022-07-21
  • 2021-04-21
  • 2016-06-30
  • 1970-01-01
相关资源
最近更新 更多