C:catch - funcionamento?

1 resposta
SPWilson


Pessoal, seguinte estou com uma duvida em relação ao funcionamento desta tag, quanto eu causo um erro mudando no nome da classe por exemplo para wilson.ContatoDA ele não trata o erro, mas se eu apenas mudar o nome do metodo para um inexistente ele trata, resumindo por que ele nao trata se o nome da classe tive errada?

Vlw ae galera!

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

Tratando erro com c:catch

<c:catch var=“error”>
<jsp:useBean id=“dao” class=“wilson.ContatoDAO”/>

<c:forEach var=“contato” items="${dao.lista}" varStatus=“contador”>

  • Contador: ${contador.count}, - ${contato.nome}, ${contato.email}, ${contato.endereco}
  • </c:catch>
    
    <c:if test="${not empty error}">
    
    TESTE c:catch
    
    </c:if>
    

    [color=red]Pagina de ERRO quando altero o nome da classe:[/color]
    type Exception report

    message

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

    exception

    org.apache.jasper.JasperException: /testa-ccatch.jsp(9,0) The value for the useBean class attribute wilson.ContatoDA is invalid.
    
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:512)
    
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377)
    
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
    
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
    
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    

    root cause

    org.apache.jasper.JasperException: /testa-ccatch.jsp(9,0) The value for the useBean class attribute wilson.ContatoDA is invalid.
    
    org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:39)
    
    org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:405)
    
    org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:146)
    
    org.apache.jasper.compiler.Generator$GenerateVisitor.visit(Generator.java:1174)
    
    org.apache.jasper.compiler.Node$UseBean.accept(Node.java:1116)
    
    org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2163)
    
    org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2213)
    
    org.apache.jasper.compiler.Generator$GenerateVisitor.visit(Generator.java:1705)
    
    org.apache.jasper.compiler.Node$CustomTag.accept(Node.java:1441)
    
    org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2163)
    
    org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2213)
    
    org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2219)
    
    org.apache.jasper.compiler.Node$Root.accept(Node.java:456)
    
    org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2163)
    
    org.apache.jasper.compiler.Generator.generate(Generator.java:3320)
    
    org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:198)
    
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:295)
    
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:276)
    
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:264)
    
    org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:563)
    
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:305)
    
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
    
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
    
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    

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

    1 Resposta

    sergiolopes

    Porque alterando o nome da classe seu jsp deixa de compilar. O c:catch pega exceções. E para ocorrerem exceções, o código precisa ter sido compilado e depois executado.

    Parece que o nome da classe no jsp:useBean é verificado pelo compilador e a EL da chamada do método, não.

    Criado 5 de fevereiro de 2007
    Ultima resposta 5 de fev. de 2007
    Respostas 1
    Participantes 2