4
respostas

Formatação de valores (com decimais) no Spring Boot

Olá, Estou com dificuldades para receber um valor numérico formatado com casas decimais (ex: 1.500,02) com Spring Boot.

O meu atributo está declarado no model da seguinte maneira:

@NumberFormat(pattern = "#,###.00") @Column(columnDefinition = "decimal(10,2)") private float valorCusto;

Porém, a conversão, quando recebo os dados do formulário, está sendo feita para o formato "americano" (com ponto para separação de decimais) e não para o formato "brasileiro" (com vírgula para separação de decimais).

Como proceder?

Desde já agradeço a ajuda de todos.

4 respostas

Bom dia,

Você teria que fazer algo parecido com isso:

    Double valor = 100.; //Tipo, esse é o valor que quero converter.

    Locale localBrasil = new Locale("pt", "BR");
    String valorConvertido = NumberFormat.getCurrencyInstance(localBrasil).format(valor); //esse valor é passado aqui

    Fiz um exemplo bem simples para você ver como funciona:

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

Olá Sandro. Obrigado por responder.

Talvez eu tenha me expressado mal quanto ao problema.

Essa solução de conversão "manual" é inviável por dois motivos:

  1. Tenho vários campos desse tipo no meu modelo, daí teria que fazer várias conversões manuais.
  2. Perco a validação de dados a partir do model, que é feita pelo spring/jpa.

Estou precisando dizer ao springboot (se é que isso é possível) que ele respeite o formato de número de maneira adequada (formato brasileiro), entendeu?!

Opa Marcos,

Entendi agora sim... relamente tinha entendido errado... Vou ver se descubro aqui.

Abs

Valeu meu nobre. Tentando descobrir por aqui também. Chegando na solução posto por aqui.

Abs.