Как отправить ключ messages.properties для исключения, выдаваемого в контроллере? - PullRequest
0 голосов
/ 19 апреля 2019

Я пытаюсь реализовать пользовательские сообщения на другом языке в моем приложении, созданном с помощью Spring Boot 2. До сих пор я реализовал его для полей сущностей, используя ключи, установленные в messages_br.properties.Теперь я пытаюсь сделать то же самое с сообщениями об исключениях, которые выдают в контроллеры, но я не понимаю, как это сделать.Примеры показывают слишком много вещей, которые я считаю не тем, что мне нужно.

Чтобы настроить файл, это в моих Application.java:

@Bean
public MessageSource messageSource() {
    ReloadableResourceBundleMessageSource bundleMessageSource = new ReloadableResourceBundleMessageSource();
    bundleMessageSource.setBasename("classpath:messages_br");
    bundleMessageSource.setDefaultEncoding("UTF-8");

    return bundleMessageSource;
}

@Bean
public LocalValidatorFactoryBean getValidator() {
    LocalValidatorFactoryBean bean = new LocalValidatorFactoryBean();
    bean.setValidationMessageSource(messageSource());

    return bean;
}

В аннотациях над каждым полем яможно указать что-то вроде этого:

@NotEmpty(message = "{beneficiary.name.notEmpty}")
private String name;

Но тот же формат в сгенерированном исключении печатает только:

throw new InsufficientBalanceException("${user.balance.insufficientBalance}");

Я почти уверен, что при изучении того, как реализовать исключения, я виделпохожий пример, но теперь я больше не могу его найти и не помню, как это делается.

1 Ответ

3 голосов
/ 19 апреля 2019

Вы можете создать свойство для сообщения об ошибке с помощью @Value,

@Value("${user.balance.insufficientBalance}")
private String insufficientBalance;

А затем используйте его в исключении,

throw new InsufficientBalanceException(insufficientBalance);

Если вы не хотите создавать дополнительные свойства, вы можете использовать Environment

@Configuration
@PropertySource("file:messages_br.properties")
public class ApplicationConfiguration {
    @Autowired
    private Environment env;
    public void getErrorMessage() {
        env.getProperty("insufficientBalance");
    }
    //then use getErrorMessage
    throw new InsufficientBalanceException(getErrorMessage);
   }
} 

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...