Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

envio de formulario

Se eu tenho um atributo do tipo BigDecimal, qual a melhor forma de trabalhar com o envido de um formulário para "popular esse atributo".

Estava tentando com type="number" só que não deu certo, por que ?

4 respostas

Oi Julio, tudo bem ?

Cara, você está usando qual framework para trabalhar ?

O Spring já consegue fazer o binding automaticamente, por exemplo e o campo nem precisa tem um tipo especificado.

To usando Spring sim.

c ta falando que o melhor seria usar o form:input daquela taglib do spring ? ai se eu passo o path="" ele consegue se virar. Certo ?

Então, como você vai receber o objeto, o Spring vai mapear todos os campos com o atributo name e vai bater com o objeto recebido.

Algo do genero :

class Produto {
    String nome;
    BigDecimal preco;

}

E na sua jsp :

<!-- Restante -->
<form>
    <input name="nome"/>
    <input name="preco"/>
</form>

Ai no seu controller :


@PostMapping("salvaProduto")
public ModelAndView salva(Produto produto){
    // salva no banco e vai para uma tela de listagem
}
solução!

Na verdade descobri oq estava acontecendo, eu tinha um atributo date, e era ele que estava fazendo confusão no binding. Ai eu anotei o atributo com um @DateTimeFormat(pattern = "dd/MM/yyyy"), só que agora eu to tomando um null pointer na hora que eu tento salvar no banco.

escrevi um to string na classe para saber qual atributo esta vindo nulo:

Pedido [numeroPedido=505, data=java.util.GregorianCalendar[time=1465095600000,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="America/Sao_Paulo",offset=-10800000,dstSavings=3600000,useDaylight=true,transitions=129,lastRule=java.util.SimpleTimeZone[id=America/Sao_Paulo,offset=-10800000,dstSavings=3600000,useDaylight=true,startYear=0,startMode=3,startMonth=9,startDay=15,startDayOfWeek=1,startTime=0,startTimeMode=0,endMode=3,endMonth=1,endDay=15,endDayOfWeek=1,endTime=0,endTimeMode=0]],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2016,MONTH=5,WEEK_OF_YEAR=24,WEEK_OF_MONTH=2,DAY_OF_MONTH=5,DAY_OF_YEAR=157,DAY_OF_WEEK=1,DAY_OF_WEEK_IN_MONTH=1,AM_PM=0,HOUR=0,HOUR_OF_DAY=0,MINUTE=0,SECOND=0,MILLISECOND=0,ZONE_OFFSET=-10800000,DST_OFFSET=0], nomeProduto=Carga Pesada, valor=219, quantidade=30, codCliente=50]

esse nullpointer pode ser por causa dessa loucura que o calendar esta "fazendo", "recebendo", "interpretando" por que ele ta fazendo isso ? ?