Para mostrar mensagens personalizadas e específicas de localidade, podemos fornecer um espaço reservado conforme mencionado para a anotação @NotEmpty .
A propriedade email.notempty será resolvida a partir de um arquivo de propriedades pela configuração MessageSource:
public class LoginForm {
@NotEmpty(message = "{email.notempty}")
@Email
private String email;
@NotNull
private String password;
}
Para obter o texto, segue exemplo utilizado no resource:
@RestController
@RequestMapping(path = "/api/v1/dominios/localidades")
public class LocalidadeResource {
@Autowired
private MessageSource messageSource;
@GetMapping("/")
public ResponseEntity<?> findAll() {
List<Localidade> lst = serv.findAll();
System.out.println(messageSource.getMessage("contribuinte.cpfOuCnpjOuInscricao", null, "testando msg default", new Locale("en", "US")));
return (!lst.isEmpty() ? ResponseEntity.ok(lst) : ResponseEntity.notFound().build());
}
}
Para definir o Locale default:
Locale.getDefault()
ReloadableResourceBundleMessageSource é a implementação MessageSource mais comum que resolve mensagens de pacotes de recursos para diferentes localidades e é capaz de recarregar as definições de mensagens sem reiniciar a máquina virtual.
@Bean
public MessageSource messageSource() {
ReloadableResourceBundleMessageSource messageSource
= new ReloadableResourceBundleMessageSource();
messageSource.setBasename("classpath:messages");
messageSource.setDefaultEncoding("UTF-8");
return messageSource;
}
OBS: é importante fornecer o nome base, pois os nomes de arquivo específicos da localidade serão resolvidos com base no nome fornecido.
Será necessário criar um arquivo de propriedades no diretório src/main/resources com o nome fornecido no nome base:
Para a internacionalização das mensagens, se queremos mostrar mensagens para um usuário francês em seu idioma. Será necessário adicionar mais um arquivo de propriedade com o nome de messages_en_US.properties no mesmo local:
# messages_en_US.properties
email.notempty=Blue, red
É necessário incluir a dependência:
Para mostrar mensagens personalizadas e específicas de localidade, podemos fornecer um espaço reservado conforme mencionado para a anotação @NotEmpty .
A propriedade email.notempty será resolvida a partir de um arquivo de propriedades pela configuração MessageSource:
Para obter o texto, segue exemplo utilizado no resource:
Para definir o Locale default:
Locale.getDefault()
ReloadableResourceBundleMessageSource é a implementação MessageSource mais comum que resolve mensagens de pacotes de recursos para diferentes localidades e é capaz de recarregar as definições de mensagens sem reiniciar a máquina virtual.
OBS: é importante fornecer o nome base, pois os nomes de arquivo específicos da localidade serão resolvidos com base no nome fornecido.
Será necessário criar um arquivo de propriedades no diretório src/main/resources com o nome fornecido no nome base:
Para a internacionalização das mensagens, se queremos mostrar mensagens para um usuário francês em seu idioma. Será necessário adicionar mais um arquivo de propriedade com o nome de messages_en_US.properties no mesmo local:
Referência: https://zetcode.com/spring/messagesource/
Rerefência: https://www.baeldung.com/spring-custom-validation-message-source
Rerefência: https://www.baeldung.com/spring-boot-bean-validation