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

ERROR ao selecionar Editar - 500

Acabei de ver o cap4 de: O comportamento Lazy e OpenEntityManagerInView.

Ao tentar executar aparece esse erro:

Type Exception Report

Message org.apache.jasper.el.JspPropertyNotFoundException: /WEB-INF/views/produto/form.jsp(64,6) '${produto.categorias}' Property [categorias] not found on type [br.com.caelum.model.Produto]

Description The server encountered an unexpected condition that prevented it from fulfilling the request.

Exception

org.apache.jasper.JasperException: org.apache.jasper.el.JspPropertyNotFoundException: /WEB-INF/views/produto/form.jsp(64,6) '${produto.categorias}' Property [categorias] not found on type [br.com.caelum.model.Produto]
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:565)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:481)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:385)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:329)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:168)
    org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:303)
    org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1244)
    org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1027)
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:971)
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893)
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966)
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:857)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:635)
    org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
Root Cause

org.apache.jasper.el.JspPropertyNotFoundException: /WEB-INF/views/produto/form.jsp(64,6) '${produto.categorias}' Property [categorias] not found on type [br.com.caelum.model.Produto]
    org.apache.jasper.el.JspValueExpression.getValue(JspValueExpression.java:120)
    org.apache.jsp.WEB_002dINF.views.produto.form_jsp._jspx_meth_c_005fforEach_005f2(form_jsp.java:692)
    org.apache.jsp.WEB_002dINF.views.produto.form_jsp._jspx_meth_c_005fforEach_005f1(form_jsp.java:624)
    org.apache.jsp.WEB_002dINF.views.produto.form_jsp._jspService(form_jsp.java:321)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:443)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:385)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:329)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:168)
    org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:303)
    org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1244)
    org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1027)
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:971)
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893)
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966)
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:857)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:635)
    org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
Note The full stack trace of the root cause is available in the server logs.
3 respostas

Diogo, a mensagem diz:

Property [categorias] not found on type [br.com.caelum.model.Produto]

Como está a classe Produto?

Mesmo erro acontecendo aqui.


package br.com.caelum.model;

import java.util.ArrayList;
import java.util.List;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.validation.Valid;
import javax.validation.constraints.Min;

import org.hibernate.validator.constraints.NotEmpty;

@Entity
public class Produto {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;

    @NotEmpty
    private String nome;

    @NotEmpty
    private String linkDaFoto;

    @NotEmpty
    @Column(columnDefinition="TEXT")
    private String descricao;

    @Min(20)
    private double preco;

    @ManyToMany
    private List<Categoria> categorias = new ArrayList<>();

^^^ olha a categorias aqui! continua

    @Valid
    @ManyToOne
    private Loja loja;


    public String getDescricao() {
        return descricao;
    }

    public void setDescricao(String descricao) {
        this.descricao = descricao;
    }

    //método auxiliar para associar categorias com o produto
    //se funcionar apos ter definido o relacionamento entre produto e categoria
    public void adicionarCategorias(Categoria... categorias) {
        for (Categoria categoria : categorias) {
            this.categorias.add(categoria);
        }
    }

    public String getLinkDaFoto() {
        return linkDaFoto;
    }

    public double getPreco() {
        return preco;
    }

    public void setPreco(double preco) {
        this.preco = preco;
    }

    public void setLinkDaFoto(String linkDaFoto) {
        this.linkDaFoto = linkDaFoto;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public Integer getId() {
        return id;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public void setLoja(Loja loja) {
        this.loja = loja;
    }

    public Loja getLoja() {
        return loja;
    }

}
solução!

O erro já foi solucionado em outra dúvida.

Acrescentar na classe Produto

    public List<Categoria> getCategorias(){
        return this.categorias;
    }