8
respostas

Duvida com o forEach

Boa noite. Realizei todos os procedimentos do video 1 do capítulo 3 do curso sobre Spring MVC 1, porem, as três divs do que deveriam aprecer dentro do forEach, não apareceram. Segue abaixo o meu código do jsp. Se alguém puder ajudar, fico grato!

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <!DOCTYPE html>

Titulo
Descrição
Páginas
${tipoPreco}
8 respostas

Boa noite, Raphael! Como vai?

O seu código ficou totalmente sem formatação! Cole aqui o código novamente para que possamos te ajudar. Mas, dessa vez, use o botão "inserir código" e coloque o código no lugar indicado.

Segue o código

<%@ page language="java" contentType="text/html; charset=UTF-8"  pageEncoding="UTF-8" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Livro Java</title>
</head>
<body>
    <form action="/casadocodigo/produtos" method="POST">
        <div>
            <label>Titulo</label>
            <input type="text" name="titulo">
        </div>
        <div>
            <label>Descrição</label>
            <textarea rows="10" cols="20" name="descricao"></textarea>
        </div>
        <div>
            <label>Páginas</label>
            <input type="text" name="paginas">
        </div>
            <c:forEach  items="${tipos}" var="tipoPreco" varStatus="status">
                <div>
                    <label>${tipoPreco}</label>
                    <input type="text" name="precos[${status.index}].valor">
                    <input type="hidden" name="precos[${status.index}].tipo" value="${tipoPreco}">
                </div>
            </c:forEach>
        <button type="submit">Cadastrar</button>
    </form>

</body>
</html>

Aparentemente o seu código JSP está correto! Mas se as divs não aparecem meu palpite é que a coleção passada à propriedade items do forEach está vazia. Cole aqui o código da action que retorna essa página.

Outra coisa, no console do Eclipse aparece algum erro? Se sim, qual?

Na console tanto do eclipse, quanto do chrome não aparece nenhum erro. Segue os códigos abaixo da Controller e do Enum

@Controller
public class ProdutosController {

    @Autowired
    private ProdutoDAO produtoDao;

    @RequestMapping("produtos/form")
    public ModelAndView form(){
        ModelAndView modelAndView = new ModelAndView("produtos/form");
        modelAndView.addObject("tipos", TipoPreco.values());

        return modelAndView;
    }

    @RequestMapping("/produtos")
    public String gravar(Produto produto){
        System.out.println(produto);
        produtoDao.gravar(produto);

        return "produtos/ok";
    }

}
public enum TipoPreco {
    EBOOK,IMPRESSO,COMBO;
}

Raphael, eu percebi que depois da palavra forEach aparentemente vc dá dois espaços até items. Só pra garantir que o Tomcat não está se atrapalhando e desencargo de consciência, tira eles e deixa somente um espaço.

Outra coisa, coloca um breakpoint na linha modelAndView.addObject("tipos", TipoPreco.values()), roda o Tomcat em modo debug e inspeciona se TipoPreco.values() está retornando a lista correta do seu enum.

Um outro teste pra fazer é no JSP escrever na tela o tamanho da sua coleção tipos para ver se ela está chegando com o tamanho correto no JSP.

Ola Gabriel. obrigado pelo retorno. Tirei um dos espaços do forEach, mas também não deu certo. O teste de debugar na Controller eu já havia feito e ele está passando os valores do enum no parâmetro TipoPreco.values(). Acredito que possa ser algum problema na passagem da Controller para o .jsp, mas não sei o que possa ser

Um outro teste pra fazer é no JSP escrever na tela o tamanho da sua coleção tipos para ver se ela está chegando com o tamanho correto no JSP.

Vc chegou a fazer esse teste? Se sim, o que foi exibido?

Fiz, mas ele parece não reconhecer a chave tipos. No lugar dos resultados da lista, aparece na tela ${tipos} ou então a variável ${tipoPreco}, como está no código

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