Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

Solucionado
(ver solução)
10
respostas

postar mensagem em ingles validacao

como faria para devolver isso em ingles ????

@ExceptionHandler(MethodArgumentNotValidException.class) public ResponseEntity<List> handle(MethodArgumentNotValidException exception) {

    List<ValidacaoDto> validacaoDtos = new ArrayList<>();
    List<FieldError> fieldErrors = exception.getBindingResult().getFieldErrors();

    fieldErrors.forEach(fieldError -> {
        String message = messageSource.getMessage(fieldError, LocaleContextHolder.getLocale());
        ValidacaoDto erro = new ValidacaoDto(fieldError.getField(), message);
        validacaoDtos.add(erro);
    });

    return ResponseEntity.badRequest().body(validacaoDtos);
}
10 respostas

Oi Rodrigo,

Você pode criar uma classe configurando o LocaleContextHolder:

@Configuration
public class LocaleConfiguration {

    @Bean
    public LocalResolver localeResolver() {
        AcceptHeaderLocaleResolver localeResolver = new AcceptHeaderLocaleResolver();
        localeResolver.setSupportedLocales(Arrays.asList(new Locale("en"), new Locale("pt")));
        localeResolver.setDefaultLocale(new Locale("pt"));
        return localeResolver;
    }

}

E para retornar em inglês basta adicionar um header na requisição: Accept-Language: en

está dando erro no retorno porque ele espera um LocalResolver eestou devolvendo esse AcceptHeaderLocaleResolver

Ah faltou uma letra e no retorno do método:

public LocaleResolver localeResolver() {

Essa classe LocaleResolver vem do pacote org.springframework.web.servlet.LocaleResolver

deu erro

Description:

The bean 'localeResolver', defined in class path resource [org/springframework/web/servlet/config/annotation/DelegatingWebMvcConfiguration.class], could not be registered. A bean with that name has already been defined in class path resource [br/com/b3/digitalassets/configuration/LocaleConfiguration.class] and overriding is disabled.

Action:

Consider renaming one of the beans or enabling overriding by setting spring.main.allow-bean-definition-overriding=true

Process finished with exit code 0

Adiciona no seu application.properties:

spring.main.allow-bean-definition-overriding=true

eu tirei a propriedade do postman para o ingles e coloquei no codigo como setDefault "en"

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Se eu coloco no postman ele devolve em ingles, mas se fosse uma aplicação real ele receberia em ingles?

solução!

Sim, desde que a aplicação frotend/mobile envie o cabeçalho na requisição.

entendi, obrigado!