Não consigo encontrar isso explicitamente declarado em nenhuma documentação para validação de bean JSR303/JSR380 ( Jakarta Validation ), mas todos os campos aos quais você aplica validações precisam ser "essencialmente" tipos de dados simples e antigos (POD), como Strings, ints, Longs e outros?
Tentei aplicar um validador de expressão regular a um campo UUID, e tive um NoProviderFoundException
problema. Eu contornei isso apenas alterando esse campo para a String
e colocando o ônus de converter o campo em a no UUID
(s) consumidor(es) dessa classe, mas há alguma maneira de criar um "provedor de validação de bean" personalizado mapeado para uma classe não-POD arbitrária para casos em que implementar uma solução alternativa não é tão simples?
Observação: java.util.UUID é uma classe serializável e, portanto, perfeitamente válida para incluir em um Bean.
A validação de bean funciona para tipos, desde que a anotação de restrição tenha um ConstraintValidator correspondente definido para ela. Não acho que você possa adicionar suporte para tipos extras para as anotações prontas para uso, mas se você criar sua própria anotação personalizada, poderá oferecer suporte a todos os tipos que desejar.
Um exemplo rápido e prático baseado em
@Pattern
: