Pq o dado selecionado não é passado para o proximo formulário?

2 respostas
M

Fiz um formulário onde o cliente vai selecionar o serviço, e dps de selecionado, e pagina vai redirecionar para outra jsp, que vai carregar o cpf do cliente e o serviço que ele selecionou, porem a pagina só carrega o cpf

DAO-------------

public Servico carregaPorIdServico(int idservico) throws Exception{
        Servico s = new Servico();
        String sql = "SELECT * FROM servico WHERE idservico=?";
        this.conectar();
        PreparedStatement pstm = conn.prepareStatement(sql);
        pstm.setInt(1, idservico);
        ResultSet rs = pstm.executeQuery();
        if (rs.next()) {
            s.setIdservico(rs.getInt("idservico"));
            s.setNome(rs.getString("nome"));
            s.setPreco(rs.getDouble("preco"));
        }
        this.desconectar();
        return s;
    }

Método--------------------

public void carregar() throws Exception{
        ServicoDAO sDAO = new ServicoDAO();
        this.nome = sDAO.carregaPorIdServico(this.idservico).getNome();
        this.preco = sDAO.carregaPorIdServico(this.idservico).getPreco();
    }

formulário para selecionar o serviço------------

<h1>Registrar Agendamento do Cliente</h1>
        <form action="form_registrar_agendamento2.jsp" method="post">
            <input type="hidden" name="cpf" value="<%=c.getCpf() %>"/>    
            Cpf :<%=c.getCpf() %> /
            Nome do Cliente:<%=c.getNome() %><br/>
            Selecione o Serviço Desejado:
            <select name="id_servico" size="1" required>
                <option value="">Selecione ...</option>
                <% for(Servico serv:lista2) { %>
                <option value="<%=serv.getIdservico() %>"><%=serv.getNome() %></option>
                <% } %> 
            </select>
            <input type="submit" value="próximo" /><br/>
            <br><br><br><br>
            <h2> Tabela de Serviços</h2>
            <table border="1">
            <tr>
                <th>NOME</th>
                <th>PREÇO</th>
            </tr>
            <%
            ArrayList<Servico> lista = new ArrayList<Servico>();
            try{
                Servico s = new Servico();
                lista = s.listar();
            }catch(Exception e){
                out.print("Erro: "+e);
            }      
            for(Servico sl:lista){
            %>
            <tr>
                <td><%=sl.getNome() %></td>
                <td><%=sl.getPreco()%></td>
            </tr>
            <%
            }           
            %>
        </table>
        </center>

formulario2------

<%
String cpf = request.getParameter("cpf");
Cliente c = new Cliente();
try{
   c.setCpf(cpf);
   c.carregar();
}catch(Exception e){
    out.print("Erro:"+e);
}

%>
<%
String idservico = request.getParameter("idservico");
Servico s = new Servico();
try{
   s.setIdservico(Integer.parseInt(idservico));
   s.carregar();
}catch(Exception e){
    out.print("Erro:"+e);
}

%>


<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
         <%@include file="menu.jsp" %>
        <center>
        <h1>Registrar Agendamento do Cliente</h1>
        <form action="form_registrar_agendamento2.jsp" method="post">
            <input type="hidden" name="cpf" value="<%=c.getCpf() %>"/>    
            
            Cpf :<%=c.getCpf() %> /
            Nome do Cliente:<%=c.getNome() %><br/>
            Servico: <%=s.getIdservico() %>
         
            </select><input type="submit" value="próximo" /><br/>
            <br><br><br><br>
            </center>
    </body>

Carreguei o idservico na jsp
e coloquei o getIdservico para ser mostrado na tela, dps que o cliente seleciona, porem o valor que mostra é zero e não o nome do serviço
Alguém pode me ajudar? Obrigado

2 Respostas

rafaelbortoletto

Olá,

Creio que o problema ocorra pois, no html , do formulario 1, você chamou o select option deste modo

<select name="id_servico" size="1" required>

No entanto, você solicita o parâmetro no segundo formulário como

request.getParameter(idservico);

Quando você usa o getParameter o nome do parâmetro deve ser o mesmo nome do elemento no HTML. Sendo assim, deixe os nomes iguais.

M

Fiz isso amigo e msm assim não funcionou, eu tenho que passar por um input
Usei esse

`<input type="hidden" name="idservico" value="<%=serv.getIdservico() %>"/>`

Porem com esse input os campos do select ficam fora da caixa, isso ocorre quando coloco esse input, mas sem ele os dados não vão pra outra jsp

Criado 20 de novembro de 2017
Ultima resposta 21 de nov. de 2017
Respostas 2
Participantes 2