Fiz a tela igual ao quer está no exercício, mas quando rodo e abro no navegador, o JSTL não está funcionando, pois não faz o laço para aparecer três campos de valores, pois aparece apenas um campo e com o label da seguinte forma: ${tipoPreco}
Fiz a tela igual ao quer está no exercício, mas quando rodo e abro no navegador, o JSTL não está funcionando, pois não faz o laço para aparecer três campos de valores, pois aparece apenas um campo e com o label da seguinte forma: ${tipoPreco}
Edson, posta aqui seus códigos.
Oi Edson,
Verifique se você importou a tag JSTL que está querendo usar. No caso do c:forEach
, você tem que colocar no início da página:
<%@ taglib prefix="c"
uri="http://java.sun.com/jsp/jstl/core" %>
Se não for isso, poste seu código para darmos uma olhada.
Controller e JSP
@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";
}
}
<%@ 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 PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta charset="UTF-8">
<title>Livros de String, Android, Java, JSF e muito mais - Casa do código</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 var="tipoPreco" items="${tipos}" 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>
Puts, não é só colocar o código entre backticks??
Descobri o problema, estava bem longe do controller e do JSP, o web.xm estava errado, ao invés de:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
<display-name>casadocodigo</display-name>
</web-app>
estava
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<display-name>Archetype Created Web Application</display-name>
</web-app>