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

Dúvida no Ex. 4 da Aula 2 - Tomando decisões

O meu codico não compila, lança a seguinte exeption:

HTTP Status 500 - org.apache.jasper.JasperException: An exception occurred processing JSP page /WEB-INF/jsp/produto/lista.jsp at line 35


type Exception report

message org.apache.jasper.JasperException: An exception occurred processing JSP page /WEB-INF/jsp/produto/lista.jsp at line 35

description The server encountered an internal error that prevented it from fulfilling this request.

exception
br.com.caelum.vraptor.view.ResultException: org.apache.jasper.JasperException: An exception occurred processing JSP page /WEB-INF/jsp/produto/lista.jsp at line 35

32:             <td width="20%">Remover?</td>
33:         </tr>
34:         <c:forEach var="p" items="produtoList" varStatus="st">
35:             <tr id="produto${p.id}">
36:                 <td>${st.count}</td>
37:                 <td>${p.nome}</td>
38:                 <td>${p.preco }</td>


Stacktrace:
    br.com.caelum.vraptor.view.DefaultPageResult.forward(DefaultPageResult.java:69)
    br.com.caelum.vraptor.extra.ForwardToDefaultViewInterceptor.intercept(ForwardToDefaultViewInterceptor.java:59)

...
root cause
javax.el.PropertyNotFoundException: Property 'id' not found on type java.lang.String
    javax.el.BeanELResolver$BeanProperties.get(BeanELResolver.java:268)
    javax.el.BeanELResolver$BeanProperties.access$300(BeanELResolver.java:221)
    javax.el.BeanELResolver.property(BeanELResolver.java:355)
...

Aqui esta o código:

<%@page import="br.com.caelum.produtos.modelo.Produto"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<head>
<script type="text/javascript" src="<c:url value="/js/jquery.js"/>"></script>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
    <script type="text/javascript">
        function removeProduto(id){
            $("#mensagem").load('<c:url value="/produto/remove"/>' + '?produto.id=' + id);
            $("#produto" + id).remove();
        }
    </script>

    <h1>Produtos</h1>
    <div id="mensagem"></div>
    <table width="100%">
        <tr>
            <td>No.</td>
            <td width="20%">Nome</td>
            <td>Preco</td>
            <td>Descricao</td>
            <td>Data de Inicio da Venda</td>
            <td>Usado?</td>
            <td width="20%">Remover?</td>
        </tr>
        <c:forEach var="p" items="produtoList" varStatus="st">
            <tr id="produto${p.id}">
                <td>${st.count}</td>
                <td>${p.nome}</td>
                <td>${p.preco }</td>
                <td>${p.descricao}</td>
                <td>${p.dataInicioVenda.time}</td>

                <c:choose>
                    <c:when test="${p.usado}">
                        <td>Sim</td>
                    </c:when>
                    <c:otherwise>
                        <td>Nao</td>
                    </c:otherwise>
                </c:choose>
            </tr>

        </c:forEach>
    </table>

    <a href="/produtos/produto/formulario">Adicionar um produto</a>
</body>
</html>

Ainda nao sei qual é a solução!

2 respostas

Boa noite Cremildo,

Você esqueceu da EL em items, altere a linha

<c:forEach var="p" items="produtoList" varStatus="st">

para

<c:forEach var="p" items="${produtoList}" varStatus="st">
solução!

Oi Douglas!

Mais uma vez, obrigado pela prontidao no atendimento, era justamente esse o problema! Ja solucionei casos complexos, acredite, este ja tinha me encurralado!

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