Estou estudando useBean e criei a página abaixo, que não está funcionando.
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ page import="java.util.*, DAO.*, classes.*" %>
<jsp:useBean id="prodDaoBean" class="DAO.ProdDao" scope="session" />
<jsp:useBean id="prodBean" class="classes.Prod" scope="session" />
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Consulta Produtos </title>
</head>
<body>
<table>
<tr>
<th> Código do produto</th>
<th> descrição do produto</th>
</tr>
<%
for (Prod prod : prodDaoBean.consultaTodos()) {
%>
<tr>
<td> <jsp:getProperty property="codigo" name="prodBean"/> </td>
<td> <jsp:getProperty property="descricao" name="prodBean"/> </td>
</tr>
<% }%>
</table>
</body>
</html>
assim funciona:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ page import="java.util.*, DAO.*, classes.*" %>
<jsp:useBean id="prodDaoBean" class="DAO.ProdDao" scope="session" />
<jsp:useBean id="prodBean" class="classes.Prod" scope="session" />
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Consulta produto</title>
</head>
<body>
<table>
<tr>
<th> Código do produto</th>
<th> descrição do produto</th>
</tr>
<%
for Prod prod : prodDaoBean.consultaTodos()) {
%>
<tr>
<td> <%=prod.getCodigo()%> </a> </td>
<td> <%=prod.getDescricao()%> </td>
</tr>
<% }%>
</table>
</body>
</html>
Vmaia
Maio 17, 2010, 12:11pm
#2
Olá,
No caso que não funciona, provavelmente, é pelo fato do teu bean “prodBean” não conter nada, pois pelo que dá para entender é que no FOR ele não esta sendo populado.
Tente algo parecido com isso…
<%
for (prodBean : prodDaoBean.consultaTodos()) {
%>
<tr>
<td> <jsp:getProperty property="codigo" name="prodBean"/> </td>
<td> <jsp:getProperty property="descricao" name="prodBean"/> </td>
</tr>
<% }%>
ou isso
<%
for (Prod prod : prodDaoBean.consultaTodos()) {
%>
<tr>
<td> <jsp:getProperty property="codigo" name="prod "/> </td>
<td> <jsp:getProperty property="descricao" name="prod "/> </td>
</tr>
<% }%>
acredito que um desses dois códigos irá te levar a solução. [acredito, pois não consegui testar nada aqui :)].
Abrçs.
Não funciona
Se eu colocar prod aparece o seguinte erro:
jsp:getProperty for bean with name ‘prod’. Name was not previously introduced as per JSP.5.3
<%
for (Prod prod : prodDaoBean.consultaTodos()) {
%>
<tr>
<td> <jsp:getProperty property="codigo" name="prod"/> </td>
<td> <jsp:getProperty property="descricao" name="prod"/> </td>
</tr>
<% }%>
Vmaia
Maio 17, 2010, 12:19pm
#4
[quote=rsaforuns]Não funciona
Se eu colocar prod aparece o seguinte erro:
jsp:getProperty for bean with name ‘prod’. Name was not previously introduced as per JSP.5.3
<%
for (Prod prod : prodDaoBean.consultaTodos()) {
%>
<tr>
<td> <jsp:getProperty property="codigo" name="prod"/> </td>
<td> <jsp:getProperty property="descricao" name="prod"/> </td>
</tr>
<% }%>
[/quote]
e o outro ?
obs.:por curiosidade, vc está usando JSTL ?
dica:http://www.caelum.com.br/curso/fj-21-java-web/
Não estou usando JSTL.
Mas o outro exemplo também não dá. Aparece erro no for:
Syntax error on token “prodBean”, Identifier expected after this token
<%
for (prodBean : prodDaoBean.consulta_Todos()) {
%>
<tr>
<td> <jsp:getProperty property="codigo" name="prodBean"/> </td>
<td> <jsp:getProperty property="descricao" name="prodBean" /> </td>
</tr>
<% }%>
Vmaia
Maio 17, 2010, 12:45pm
#6
OK … tente algo assim…
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<jsp:useBean id="prodDaoBean" class="DAO.ProdDao" scope="session" />
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Consulta Produtos </title>
</head>
<body>
<table>
<tr>
<th> Código do produto</th>
<th> descrição do produto</th>
</tr>
<c:forEach var="prod" items="${prodDaoBean.consultaTodos}">
<tr>
<td>${prod.codigo}</td>
<td>${prod.descricao}</td>
</tr>
</c:forEach>
</table>
</body>
</html>
Tente tbm evitar scriptlet… e a apostila do fj21 da caelum é muito boa… de uma lida nela.
Está apresentando um aviso: Invalid attribute (items).
<c:forEach var=“prod” items="${prodDaoBean.consultaTodos}">
Esta consulta, funciona em outro jsp, sem usar o useBean / JSTL, fazendo um for comum.
Na classe DAO:
public List<Produtos> consulta_geral() throws SQLException {
try {
lista_prod = new ArrayList<Produtos>();
stm = ConectaBD.getConnection().createStatement();
PreparedStatement pstmt = stm.getConnection().prepareStatement("select * from produtos order by descricao");
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
Produtos prod = new Produtos();
prod.setCodigo(rs.getInt("codigo"));
prod.setDescricao(rs.getString("descricao"));
lista_prod.add(prod);
}
} catch (SQLException ex) {
System.out.println("erro ao consultar geral");
}
stm.close();
return lista_prod;
}
Vmaia
Maio 17, 2010, 1:08pm
#8
vc está usando …struts , vraptor … ?
tente mudar o nome do método para o padrão do JavaBeans … tendo os getters e setters.
mude o nome do método consultaTodos() para getConsultaTodos() .
de uma olhada na apostila do fj21 … que vai esclarecer algumas formas de como utilizar as boas praticas entre outras cosias.
Mudei o método para getLista() no DAO
mas continua com o seguinte erro:
According to TLD or attribute directive in tag file, attribute items does not accept any expressions
<c:forEach var=“prod” items="${prodDaoBean.lista}">
já tentei assim:
<c:forEach var=“prodBean” items="${prodDaoBean.lista}">
No var, tem que ser o id do useBean, ou pode ser outro nome?
<jsp:useBean id=“prodBean” class=“classes.Produtos” scope=“session” />
Mudei para core_rt e funcionou
Vmaia
Maio 17, 2010, 3:08pm
#11
você esta usando que tipo de ambiente de desenvolvimento ?
Tom-cat … vraptor …struts , quais frames … o que tanto ?
E legal que funcionou :D, parabens!
estou usando o tomcat e o eclipse
Qual a diferença entre o core e o core_rt?
Vmaia
Maio 17, 2010, 3:23pm
#13
[quote=rsaforuns]estou usando o tomcat e o eclipse
Qual a diferença entre o core e o core_rt?
[/quote]
você deve estar com alguma outro biblioteca do jstl… mas eu não sei dizer o que tanto este core_rt tem … tem que googlear