Problemas na linha em JSTL e uma(s) outra(s) duvida(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> 

SilverHawk,

Como está o StackTrace e o adminBean?

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?

Isso.

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;
    }
    
}

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.

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.

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 :?

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

bom… agora tenho outra duvida…

tenho este código

[code]<%@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”%>

Inscrição ao Evento

Matrícula


    <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>
[/code]

e gostaria de neste trecho:

[code]
<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>[/code]

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?

por favor alguma dica?

:shock: