Não Funcionou taglib?

Oi pessoal peguei um exemplo em um pdf mas mostra nada. Quando chamo a teste.jsp o browser fica branco…

criei a seguinte estrutura:

Tenho uma Classe chamada --> “Cliente” --> que possui um metodo --> “consultarCliente()” --> retorna o nome cliente.

codigo:Classe:

public class Cliente implements ICliente{

public Vector listarCliente() throws ConectarException {
		Vector<Cliente> lista = new Vector<Cliente>();
		Conectar conn = new Conectar();
		StringBuffer sql = new StringBuffer();
		conn.getConnection();
		ResultSet rs = null;
		 
		try {

		sql.append("SELECT nome FROM cliente");
			rs = conn.executeQuery(sql.toString());

			while(rs.next()) {
				Cliente u = new Cliente(rs.getString("nome"));
				lista.addElement(u);
			} 

		} catch (SQLException e) {
			e.printStackTrace();
		}		

		return lista;
	}
}

Codigo JSP:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

    <table>  
       <c:forEach var="item" items="${listarCliente}">  
          <tr>  
           <td>${item.nome}</td>  
          </tr>  
       </c:forEach>  
   </table>  

vocês analizando este codigo: estou errando em algo…

Como vc esta fazendo a chamada do jsp ???
Poderia postar o codigo aqui tb ???

Você esta setando por request.setAttribute ?

Oi pessoal.

    no jsp so tem este codigo abaixo, eu não criei objeto não chamei a fachada, precisa????

[code]

<%@ taglib uri=“http://java.sun.com/jsp/jstl/core” prefix=“c” %>

<c:forEach var=“item” items="${listarCliente}">

</c:forEach>

${item.nome}
[/code]

Para usar valores do servlet no jsp você precisa ou colocar em session ou em request

Olá, vc pode também usar a tag jsp:useBean

um exemplo.

 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

    <jsp:useBean id="cliente" class="pacote.Cliente "/> 

    <table>  
       <c:forEach var="item" items="${cliente.lista}">  
          <tr>  
           <td>${item.nome}</td>  
          </tr>  
       </c:forEach>  
   </table> 

Neste caso a classe Cliente tem um método getLista()

Oi marcuscruz
tentei usar o seu exemplo mas ainda esta dando erro. Não conseguir entender onde estou errando.

codigo:

type Exception report

message 

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

exception 

org.apache.jasper.JasperException: /teste.jsp(4,3) The value for the useBean class attribute cadastro.cliente.ClienteDTO  is invalid.
	org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:40)
	org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:407)
	org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:148)
	org.apache.jasper.compiler.Generator$GenerateVisitor.visit(Generator.java:1200)
	org.apache.jasper.compiler.Node$UseBean.accept(Node.java:1155)
	org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2338)
	org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2388)
	org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2394)
	org.apache.jasper.compiler.Node$Root.accept(Node.java:489)
	org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2338)
	org.apache.jasper.compiler.Generator.generate(Generator.java:3374)
	org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:210)
	org.apache.jasper.compiler.Compiler.compile(Compiler.java:306)
	org.apache.jasper.compiler.Compiler.compile(Compiler.java:286)
	org.apache.jasper.compiler.Compiler.compile(Compiler.java:273)
	org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:566)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)


note The full stack trace of the root cause is available in the Apache Tomcat/6.0.14 logs.

codigo em jsp:

 
 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>  
  
   <jsp:useBean id="cliente" class="cadastro.cliente.Cliente "/>   
   
   <table>    
        <c:forEach var="item" items="${cliente.lista}">    
           <tr>    
          <td>${item.nome}</td>    
         </tr>    
        </c:forEach>    
   </table>   

codigo na classe:

public class Cliente implements ICliente {

@SuppressWarnings("unchecked")
	public Vector listarCliente() throws ConectarException {
		Vector<Cliente> lista = new Vector<Cliente>();
		Conectar conn = new Conectar();
		StringBuffer sql = new StringBuffer();
		conn.getConnection();
		ResultSet rs = null;
		 
		try {
		sql.append("SELECT nome FROM cliente");
			rs = conn.executeQuery(sql.toString());
			while(rs.next()) {
				Cliente u = new Cliente(rs.getString("nome"));
				lista.addElement(u);
			} 
		} catch (SQLException e) {
			e.printStackTrace();
		}		
		return lista;
	}
}

Este e meu codigo de teste… Sera que estou errando na classe ou metodo???

Pacote --> cadastro.cliente
classe --> Cliente
Metodo --> listarCliente()

obrigado pela ajuda…

mano.pp

Verifique se você está digitando o nome da sua classe(pacote e classe) corretamente no atributo class da tag useBean.

já no forEach sua classe cliente deve estar no padrão java beans
por exemplo:


<jsp:useBean id="cliente" class="pacote.Cliente "/> 

 <c:forEach var="item" items="${cliente.lista}">   

sua classe Cliente deve ter o método getLista

estou aprendendo java agora pra web. Entam quando você falar metodo get, significar criar um metodo tipo :

public Vector getlistarCliente() throws ConectarException {

}

src
–> cadastro.cliente “pacote”
–> Cliente “classe”
–> listarCliente() “metodo”

é isto que você falar: e depois chama o metodo no jsp???

valeu marcuscruz…

Não no caso seria assim

public Vector getLista(){
...
}

Um bom material para vc seguir é apostila do curso fj-21 da caelum

valeu cara vou tenta assim… estou saindo agora mas volto pra da resposta da dica que você mim deu…

Oi marcuscruz,

   ainda não deu certo, mas valeu a força....

o erro que esta aparecendo agora e o seguinte:

type Exception report

message 

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

exception 

org.apache.jasper.JasperException: An exception occurred processing JSP page /teste.jsp at line 7

4: 
5: <jsp:useBean id="cliente" class="cadastro.ClienteDTO"/>      
6:    <table>    
7:         <c:forEach var="item" items="${cliente.getlista}">    
8:            <tr>    
9:           <td>${item.nome}</td>    
10:          </tr>    


Stacktrace:
	org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:524)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:435)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)


root cause 

javax.el.PropertyNotFoundException: Property 'getlista' not found on type cadastro.ClienteDTO
	javax.el.BeanELResolver$BeanProperties.get(BeanELResolver.java:193)
	javax.el.BeanELResolver$BeanProperties.access$400(BeanELResolver.java:170)
	javax.el.BeanELResolver.property(BeanELResolver.java:279)
	javax.el.BeanELResolver.getValue(BeanELResolver.java:60)
	javax.el.CompositeELResolver.getValue(CompositeELResolver.java:53)
	org.apache.el.parser.AstValue.getValue(AstValue.java:97)
	org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186)
	org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:923)
	org.apache.jsp.teste_jsp._jspx_meth_c_005fforEach_005f0(teste_jsp.java:99)
	org.apache.jsp.teste_jsp._jspService(teste_jsp.java:72)
	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)


note The full stack trace of the root cause is available in the Apache Tomcat/6.0.14 logs.

JSP esta assim:

 
 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>  
  

<jsp:useBean id="cliente" class="cadastro.Cliente"/>      
   <table>    
        <c:forEach var="item" items="${cliente.getlistaCliente}">        
           <tr>    
          <td>${item.nome}</td>    
         </tr>    
        </c:forEach>    
   </table>   

classe esta assim:

public class Cliente implements ICliente {
		
	public Cliente() {
		super();
		// TODO Auto-generated constructor stub
	}

 @SuppressWarnings("unchecked")  
     public Vector getlistarCliente() throws ConectarException {  
         Vector<Cliente> lista = new Vector<Cliente>();  
        Conectar conn = new Conectar();  
         StringBuffer sql = new StringBuffer();  
        conn.getConnection();  
         ResultSet rs = null;  
            
         try {  
         sql.append("SELECT nome FROM cliente");  
            rs = conn.executeQuery(sql.toString());  
             while(rs.next()) {  
                 Cliente u = new Cliente(rs.getString("nome"));  
                 lista.addElement(u);  
             }   
         } catch (SQLException e) {  
             e.printStackTrace();  
        }         
        return lista;  
     }  
 } 

:slight_smile: obrigado por mim da um força, pra me aprender como usar a JSTL.

Altere sua jsp para:

 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>  
  

<jsp:useBean id="cliente" class="cadastro.Cliente"/>      
   <table>    
        <c:forEach var="item" items="${cliente.listarCliente}">        
           <tr>    
          <td>${item.nome}</td>    
         </tr>    
        </c:forEach>    
   </table>   

lembrando que sua classe Cliente deve ter o método getNome()

Oi marcuscruz

    Depois varias postagem, conseguir roda o codigo jsp com "JSTL". Lógico com a sua ajuda.
    Percebi que tava faltando "r" no metodo listarCliente.. depois que você redigitou e postou o código JSP pra mim. 

obrigado mesmo pela força.
Agora posso continuar meu apredizado na linguagem java.

Sim!! e normal nas palavras acentuada aparecer isto: �

[quote]
Oi marcuscruz

Depois varias postagem, conseguir roda o codigo jsp com “JSTL”. Lógico com a sua ajuda.
Percebi que tava faltando “r” no metodo listarCliente… depois que você redigitou e postou o código JSP pra mim.

obrigado mesmo pela força.
Agora posso continuar meu apredizado na linguagem java.

Sim!! e normal nas palavras acentuada aparecer isto: �[/quote]

Esse problema com as palavras acentuadas ou outros caracteres pode estar ocorrendo devido ao encode da página, tente deixar assim a sua primeira linha da sua página jsp assim

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>  

Obrigado mas uma vez, caio como uma pena…

tenho que aprender muito ainda.

valeu marcuscruz, esta com acento todas as palavras…

brigado mas uma vez.