Problemas na linha em JSTL e uma(s) outra(s) duvida(s)

10 respostas
S

aparece um erro de servidor do if de jstl e nao sei o que é

o erro é este “org.apache.jasper.JasperException: An exception occurred processing JSP page /admin.jsp at line 9”
que neste caso é na linha 5

<jsp:useBean id="adminBean" class="br.classes.Admin" scope="session"/>
<jsp:setProperty name="adminBean" property="nome" param="txtNome"/>
<jsp:setProperty name="adminBean" property="senha" param="pswSenha"/>
<jsp:setProperty name="adminBean" property="verificar" param="bOK"/>
<c:if test="${adminBean.logado}" >
    <jsp:forward page="menuAdmin.jsp"/>
</c:if>

10 Respostas

luiz_renato

SilverHawk,

Como está o StackTrace e o adminBean?

S

stacktrace:

Stacktrace:

org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:553)

org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:457)

org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:391)

org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)

javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)

e vc quer ver a classe adminBean?

luiz_renato

Isso.

S
package br.classes;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class Admin {
    
    private int codigo;
    private String nome;
    private String senha;
    private boolean logado;

    

    public Admin() {
        
        this.codigo = 0;
        this.nome = "";
        this.senha = "";
    }
    
    
    public Admin(int codigo, String nome, String senha) {
        this.codigo = codigo;
        this.nome = nome;
        this.senha = senha;
    }

    
    public boolean isLogado() {
        return logado;
    }
    
    
    public int getCodigo() {
        return codigo;
    }

    public void setCodigo(int codigo) {
        this.codigo = codigo;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getSenha() {
        return senha;
    }

    public void setSenha(String senha) {
        this.senha = senha;
    }
    
    public void setVerificar(String a){
        logado = getAutenticar(nome, senha);
    }
    
    public boolean getAutenticar(String usuario, String senha){
        Connection conn = Conexao.getConexao();
        String sql = "select * from administrador where adm_nome = '" + usuario + "' and adm_senha ='" + senha + "'";
        
        if (conn != null) {
            Statement st = null;
            ResultSet rs = null;
            try {
                st = conn.createStatement();
                rs = st.executeQuery(sql);
                if (rs.next()){
                    return true;
                }
            } catch (SQLException ex) {
            } finally {
                Conexao.fechaTudo(rs, st, conn);
            }
        }
        return false;
    }
    
}
luiz_renato

Algumas coisas p/ vc verificar:

em getAutenticar o seu try não tem ex.printStackTrace(), se houver erro ele fecha a conexao e vc nao sabe o que aconteceu .

Nesse trecho : &lt;jsp:setProperty name="adminBean" property="verificar" param="bOK"/&gt;
vc está passando como parâmetro bOk que suponho seja um Button ou submit , acredito que não funcione pq eles não sao passados como parametros da requisicao .
Vou dar mais uma olhada e te falo.

luiz_renato

SilverHawk,

Um conselho : jsp é só pra exibição de dados, não coloque lógica de negócios .

Crie um servlet pra receber os parametros e fazer a autenticação via objeto Admin.

Assim vc pode tratar esses parametros , redirecionar o usuario novamente pra pagina de login caso tenha sido digitado um dos campos vazio e redicrecionar p/ menuAdmin.jsp em caso de login com sucesso.

Além de poder tratar exception’s que possam ocorrer durante a autenticação e exibir uma mensagem pro usuario.
Enfim vc faz o que quizer e depois redireciona.

Se vc tiver dúvidas te explico melhor.

S

bom a respeito do servlet, nao sei como fazer…

e está funcionando, se nao me engano, faltou declarar o construtor sem parametros na classe e apareceu aquele erro que coloquei acima.
a classe que coloquei acima já estava consertada.
também estava com problema no banco e ao tentar acessar este trecho:

<jsp:setProperty name="adminBean" property="verificar" param="bOK"/>

aparecia um erro comentei e nao deu nenhum erro…

edit:

bom agora é meio maluco, pois tirei o comentario e funcionou :?

luiz_renato

Aprenda do jeito certo www.caelum.com.br/download/caelum-java-web-fj21.pdf, porque daí não aparecerem erros “malucos” …

S

bom.. agora tenho outra duvida..

tenho este código

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<jsp:useBean id="listaBean" class="classe.ListaCursos" scope="page" />
<jsp:useBean id="matBean" class="classe.matricula" scope="page" />

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>


<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Inscrição ao Evento</title>
    </head>
    <body>
        <h1>Matrícula</h1>
        <hr/>
        
        <label>Relação de Cursos e Palestras disponíveis</label>
        <br />
                
        <br />
        <form action="inscricao.jsp" method="post">
                <c:forEach var="cursos" items="${listaBean.lista}">
                   Codigo: ${cursos.codigo}  | 
                   Nome:  ${cursos.nome}     |
                   Tipo: ${cursos.tipo}      |
                   Vagas: ${cursos.nroVagas} |
                   
                  <input type="checkbox" name="opcao" value="op1"> 
                   
                    <br /> <br />
                </c:forEach>
        </form>
    </body>
</html>

e gostaria de neste trecho:

<form action="inscricao.jsp" method="post">
                <c:forEach var="cursos" items="${listaBean.lista}">
                   Codigo: ${cursos.codigo}  | 
                   Nome:  ${cursos.nome}     |
                   Tipo: ${cursos.tipo}      |
                   Vagas: ${cursos.nroVagas} |
                   
                  <input type="checkbox" name="opcao" value="op1"> 
                   
                    <br /> <br />
                </c:forEach>

quando o usuario clicar no chekbox, de alguma forma salvar o que ele clicou para exibir em outra pagina...
como faço isso?

editanto

se isso é mto nada a vê.. rsrs.. o que posso como uma outra alternativa?

S

por favor alguma dica?

:shock:

Criado 17 de novembro de 2011
Ultima resposta 23 de nov. de 2011
Respostas 10
Participantes 2