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 ?
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!
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 ?
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
}
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 ? ?