Je travaille avec l'internationalisation de printemps J'ai 3 fichiers de propriétés de messages iam utilisant MessageSource pour lire les valeurs par clé comme l'exemple suivant.
String value = messageSource.getMessage("key", null,LocaleContextHolder.getLocale());
mais je veux lire la clé par une valeur spécifique est-il une solution.
Vous pouvez exposer les propriétés en créant:
public class ExposedResourceBundleMessageSource extends
ReloadableResourceBundleMessageSource {
public Properties getMessages(Locale locale) {
return getMergedProperties(locale).getProperties();
}
}
Déclarez-le ensuite dans votre configuration:
@Bean
public ExposedResourceBundleMessageSource messageSource() {
ExposedResourceBundleMessageSource source = new ExposedResourceBundleMessageSource();
source.setBasename("classpath:messages");
source.setCacheSeconds(0);
source.setDefaultEncoding("UTF-8");
return source;
}
Autowire it avec:
@Autowired
private ExposedResourceBundleMessageSource messageSource;
Ensuite, vous pouvez rechercher par valeur:
String searchTerm = "foo";
Entry<Object, Object> entry = messageSource.getMessages(LocaleContextHolder.getLocale()).entrySet().stream().filter(
e -> ((String) e.getValue()).equals(searchTerm)).findFirst().orElse(null);
String key = (String) entry.getKey();
Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.
En caso de infracción, por favor [email protected] Eliminar
Déjame decir algunas palabras