2
respostas

Login e comprar não funcionam

 Eu já terminei os cursos de spring mvc faz um tempo, mas eu estava com um problema
de csrf e por isso não conseguia fazer algumas coisas como cadastrar produtos e eventualmente
compra-los, fazendo outros cursos e pesquisando eu decidi cuidar da parte de login
na mão, invés de deixar o spring cuidar disso, sem sucesso eu desabilitei o csrf só pra teste
e percebi que não conseguia fazer mais login para acessar algumas urls protegidas,
decidi então cadastrar um produto direto pelo banco de dados, mas quando tento 
compra-lo aparece esse erro:

...
GRAVE: Servlet.service() for servlet [SpringDispatcher] in context with path [/CasadoCodigo] threw exception [javax.servlet.ServletException: javax.servlet.jsp.JspException: javax.el.ELException: Error reading [preço] on type [homecode.CasadoCodigo.models.ItemCart]] with root cause
java.util.NoSuchElementException: No value present
    at java.util.Optional.get(Optional.java:135)
    at homecode.CasadoCodigo.models.Product.getPriceTo(Product.java:109)
    at homecode.CasadoCodigo.models.ItemCart.getPreço(ItemCart.java:18)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at javax.el.BeanELResolver.getValue(BeanELResolver.java:97)
... 

Link para o meu projeto -> https://drive.google.com/file/d/1fNhYU2xjWO8unkknVULCsTr6GQ5AvaAp/view?usp=sharing

Observação: Nas páginas de login, lista e cadastro(form) eu tentei colocar
umas animações com .js (um preloader e uso de data attribute que vi num alura+
-> https://youtu.be/ri-xkk9PuDU?t=1
e também um carousel de imagens (tentei bootstrap, na mão e outros)
e nenhum funcionou até agora, se puder dar uma olhada nisso também, agradeço. 
2 respostas

Fala Murilo, tudo bem?

Você está tentando acessar um Optional sem valor:

    public BigDecimal getPriceTo(TypePrice tp) {
        return preços.stream().filter(preço -> preço.getTipo().equals(tp))
                .findFirst().get().getValor();
    }

Possível alteração:

    public BigDecimal getPriceTo(TypePrice tp) {
        Optional<Preço> preco = preços.stream().filter(preço -> preço.getTipo().equals(tp)).findFirst();
        return preco.isPresent() ? preco.get().getValor() : BigDecimal.ZERO;
    }
Fiz a alteração que sugeriu, o erro antigo parou, mas esse é o novo:

GRAVE: Servlet.service() for servlet [SpringDispatcher] in context with path [/CasadoCodigo] threw exception [javax.servlet.ServletException: javax.servlet.jsp.JspException: javax.el.PropertyNotFoundException: Property [tprice] not found on type [homecode.CasadoCodigo.models.ItemCart]] with root cause
javax.el.PropertyNotFoundException: Property [tprice] not found on type [homecode.CasadoCodigo.models.ItemCart]

No erro antigo, não estava encontrando um valor, agora uma propriedade, só não entendo por que não está encontrando o que deveria estar lá. 

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software