Então, mas tipo eu tenho uma classe de validação que caso seja nulo ele deve retornar a mensagem da variavel indentada {}, veja:
import org.springframework.context.annotation.Configuration;
import java.util.Locale;
import org.springframework.context.MessageSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.support.ReloadableResourceBundleMessageSource;
import org.springframework.validation.beanvalidation.LocalValidatorFactoryBean;
@Configuration
public class InternacionalizacaoConfig {
@Bean
public MessageSource messageSource() {
ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
messageSource.setBasename("classpath:messages");
messageSource.setDefaultEncoding("ISO-8859-1");
messageSource.setDefaultLocale(Locale.getDefault());
return messageSource;
}
@Bean
public LocalValidatorFactoryBean localValidatorFactoryBean() {
LocalValidatorFactoryBean bean = new LocalValidatorFactoryBean();
bean.setValidationMessageSource(messageSource());
return bean;
}
}
Tem outra classe que trata essas mensagens também.
Sobre a tag @Valid, eu uso ela no meu controller, no post e put:
@PostMapping
@ResponseStatus(HttpStatus.CREATED)
public Cliente salvar(@RequestBody @Valid Cliente cliente) {
return repository.save(cliente);
}
Tanto que quand faço teste com um Integer, e tento passar um valor vázio, ele me retorna a mensagem de erro que quero validar, por exemplo: campo cpf é obrigatorio e quando coloca um CPF que não bate, ele me retorna um CPF Inválido, agora quando muda o Integer para Long ai a historia muda, no momento que mando a requisição para inserir ele da o erro do Long. Creio que esse @NotNull não suporta Long, nunca explicação, senão o Integer nem funcionaria. De qualquer maneira vou dar uma lida no material que você passou e adotar o String mesmo kkkkkkk Deixo meus agradecimentos !!!