Erro javax.el.PropertyNotFoundException. Aplicação Spring MVC + JSTL
19 respostas
jspjpahibernatespringjava
T
thiago.antunes
Boa tarde pessoal, preciso de uma ajuda com este problema. Estou seguindo o ebook da Casa do Código, Spring MVC.
O erro acontece quando tento cadastrar um novo Product. Salva todos os campos, menos o BookType.
Segue códigos utilizados:
Segue a tela em JSP: Tela de Cadastro de Product <c:forEach items="${types}" var="bookType" varStatus="status"> <div> <label for="price_${bookType}">${bookType}</label> <input type="text" name="prices[${status.index}].value" id="price_${bookType}"/> <input type="hidden" name="prices[${status.index}].bookType" value="${bookType}"/> </div> </c:forEach>
O problema está no mapeamento de um Enum, pois em JPA um Enum deve ter a anotação javax.persistence.Enumerated, então a classe Price ficaria dessa maneira.
@emanuelbatista
Apesar de o meu código estar exatamente igual ao do ebook, eu também já fiz esta alteração (inclusive especificando ORDINAL ou STRING) e o problema continua, o value é salvo e o campo bookType é salvo com null.
Tente remover todas as tabelas, reinicie a aplicações e teste novamente.
pode ser problema de mapeamento.
T
thiago.antunes
@emanuelbatista
Então, eu já tentei isso.
Olhei e tornei a olhar o código e não vejo nada de errado. O problema ainda persiste.
E
emanuelbatista
Você debugou o código?
T
thiago.antunes
Já sim, aparentemente não está setando o valor da variável booType, porém eu não consegui identificar o motivo, pois os métodos get e set existem. Aparentemente as expressões na página JSP estão corretas também, não vi nada de errado.
E
emanuelbatista
mande o código do controller para ver se tem algum error.
out17,20163:58:53PMorg.apache.catalina.core.StandardWrapperValveinvokeGRAVE:Servlet.service()forservlet[dispatcher]incontextwithpath[/casadocodigo]threwexception[javax.el.PropertyNotFoundException: Property ‘bookType’ not found on type br.com.casadocodigo.loja.models.Price]withrootcausejavax.el.PropertyNotFoundException:Property‘bookType’notfoundontypebr.com.casadocodigo.loja.models.Priceatjavax.el.BeanELResolver$BeanProperties.get(BeanELResolver.java:268)atjavax.el.BeanELResolver$BeanProperties.access$300(BeanELResolver.java:221)atjavax.el.BeanELResolver.property(BeanELResolver.java:355)atjavax.el.BeanELResolver.getValue(BeanELResolver.java:95)atorg.apache.jasper.el.JasperELResolver.getValue(JasperELResolver.java:110)atorg.apache.el.parser.AstValue.getValue(AstValue.java:169)atorg.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:184)atorg.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:943)atorg.apache.jsp.WEB_002dINF.views.products.list_jsp._jspx_meth_c_005fforEach_005f1(list_jsp.java:232)atorg.apache.jsp.WEB_002dINF.views.products.list_jsp._jspx_meth_c_005fforEach_005f0(list_jsp.java:184)atorg.apache.jsp.WEB_002dINF.views.products.list_jsp._jspService(list_jsp.java:135)atorg.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)atjavax.servlet.http.HttpServlet.service(HttpServlet.java:729)atorg.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:438)atorg.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396)atorg.apache.jasper.servlet.JspServlet.service(JspServlet.java:340)atjavax.servlet.http.HttpServlet.service(HttpServlet.java:729)atorg.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292)atorg.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)atorg.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)atorg.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)atorg.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)atorg.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:720)atorg.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:466)atorg.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:391)atorg.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:318)atorg.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:172)atorg.springframework.web.servlet.view.AbstractView.render(AbstractView.java:303)atorg.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1228)atorg.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1011)atorg.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:955)atorg.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:877)atorg.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:961)atorg.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:852)atjavax.servlet.http.HttpServlet.service(HttpServlet.java:622)atorg.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837)atjavax.servlet.http.HttpServlet.service(HttpServlet.java:729)atorg.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292)atorg.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)atorg.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)atorg.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)atorg.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)atorg.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)atorg.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)atorg.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)atorg.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)atorg.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)atorg.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)atorg.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)atorg.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:528)atorg.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1099)atorg.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:670)atorg.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1520)atorg.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1476)atjava.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)atjava.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)atorg.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)atjava.lang.Thread.run(Thread.java:745)`
E
emanuelbatista
Duas coisas.
No banco esse valor do bookType é preenchido.
E se por favor mande o código da página de listagem para que posso ver algum error.