Gravar dados pela modal. Me ajudem por favor!

6 respostas
html5jspboostrapjavamvc
A

Boa tarde,

Preciso de uma ajuda, estou criando um sistema que em determinada situação eu faço uma consulta de um cadastro e redireciono as informações para outra página. Nessa nova página tenho uma modal onde vou inserir algumas informações, porém não consigo entrar no if que irá fazer isso.

Podem me ajudar, oque estou fazendo de errado?

Minha Controller
      if (request.getParameter("operacao").equals("consultar")) {
                //busca por id
                String op = request.getParameter("escolhe");
                if (op.equals("suv")) {

                    caderneta.setId_suv(paciente);
                    caderneta = cadDao.buscarPorId(Integer.parseInt(request.getParameter("buscaCaderneta")));
                    request.setAttribute("caderneta", caderneta);
//Listando dados para modal
                    List<Vacina> listaVacinas = vacdao.buscarTudo();
                    request.setAttribute("listaVacinas", listaVacinas);

                    List<Dosagem> dosagens = dosedao.buscarTudo();
                    request.setAttribute("dosagens", dosagens);

                    List<Ubs> ubss = ubsdao.buscarTudo();
                    request.setAttribute("ubss", ubss);

                    List<CadernetaVacina> vcads = vcaddao.buscarTudo();
                    request.setAttribute("vcads", vcads);
//If para inserção de dados da modal
                    if (request.getParameter("operacao").equals("vacinar")) {

                        vcad.getId_caderneta().setId(Integer.parseInt(request.getParameter("caderneta")));
                        vcad.getId_ubs().setId(Integer.parseInt(request.getParameter("ubs")));
                        vcad.getId_dose().setId(Integer.parseInt(request.getParameter("dose")));
                        vcad.setVacinador(request.getParameter("vacinador"));
                        vcad.setDt_aplicacao(Date.valueOf(request.getParameter("dt_aplicacao")));
                        vcad.setDt_retorno(Date.valueOf(request.getParameter("dt_retorno")));

                        vcaddao.inserir(vcad);
                        response.sendRedirect("admin/caderneta.jsp");

                    }

                    request.getRequestDispatcher("admin/caderneta.jsp").forward(request, response);

                    try {

                    } catch (NumberFormatException nfe) {
                    }

                }

            }

JSP com a Modal


<%@page import="java.util.ArrayList"%>
<%@page import="model.Vacina"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@page import="java.util.List"%>
<%@page import="model.Caderneta"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <link rel="stylesheet" type="text/css" href="FolhadeEstilo.css"/>
        <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
        <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
        <title>JSP Page</title>
    </head>
    <body>
        <div class="navbar-fixed-top">
            <%--<c:import url="menu.jsp"></c:import>--%>
        </div>
        <div class="container">
            <div>
                <table>
                    <title>Dados Paciente</title>
                    <tr>
                        <th>Caderneta</th>
                        <td>${caderneta.id}</td>
                    </tr>
                    <tr>
                        <th>Nome</th>
                        <td>${caderneta.id_suv.nome}</td>
                    </tr>
                    <tr>
                        <th>Data de Nascimento</th>
                        <td>${caderneta.id_suv.dt_nascimento}</td>
                    </tr>
                </table>
            </div>
            <br>

            <button type="button" class="btn btn-info btn-lg" data-toggle="modal" data-target="#Vacinar" name="operacao" value="vacinar">Vacinar</button>
            <form action="<c:url value="/CadernetaController"/>" method="get">

                <div class="modal fade" id="Vacinar" role="dialog">
                    <div class="modal-dialog">
                        <div class="modal-content">
                            <div class="modal-header">
                                <h4 class="modal-title">Hora de Vacinar</h4>
                            </div>
                            <div class="modal-body">

                                <fieldset>
                                    <div class="form-group">
                                        <label class="col-sm-2 control-label" for="textinput">Vacina:</label>
                                        <div class="col-sm-10">
                                            <select  class="form-control" name="listaVacinas">
                                                <c:forEach var="vacina" items="${listaVacinas}">
                                                    <option value="${vacina.id}">${vacina.nome_vacina}</option>
                                                </c:forEach>
                                            </select>
                                        </div>
                                    </div>
                                    <div class="form-group">
                                        <label class="col-sm-2 control-label" for="textinput">Dose:</label>
                                        <div class="col-sm-10">
                                            <select  class="form-control" name="dosagens">
                                                <c:forEach var="dose" items="${dosagens}">
                                                    <option value="${dose.id}">${dose.dosagem}</option>
                                                </c:forEach>
                                            </select>
                                        </div>
                                    </div>
                                    <div class="form-group">
                                        <label class="col-sm-2 control-label" for="textinput">Ubs:</label>
                                        <div class="col-sm-10">
                                            <select  class="form-control" name="ubss">
                                                <c:forEach var="ubs" items="${ubss}">
                                                    <option value="${ubs.id}">${ubs.nome_ubs}</option>
                                                </c:forEach>
                                            </select>
                                        </div>
                                    </div>
                                    <div class="form-group">
                                        <label class="col-sm-2 control-label" for="textinput">Vacinador:</label>
                                        <div class="col-sm-10">
                                            <input type="text" name="vacinador" class="form-control">
                                        </div>
                                    </div>
                                    <div class="form-group">
                                        <label class="col-sm-2 control-label" for="textinput">Data de Vacinação:</label>
                                        <div class="col-sm-4">
                                            <input type="date" name="dt_vacinacao" class="form-control">
                                        </div>
                                    </div>
                                    <div class="form-group">
                                        <label class="col-sm-2 control-label" for="textinput">Data de Retorno:</label>
                                        <div class="col-sm-4">
                                            <input type="date" value="dt_aplicacao" class="form-control">
                                        </div>
                                    </div>
                                </fieldset>
                                <div class="modal-footer">
                                    <div class="form-group">
                                        <div class="col-sm-offset-2 col-sm-10">
                                            <div class="pull-right">
                                                <button type="button" class="btn btn-default btn-lg" data-dismiss="modal">Fechar</button>
                                                <button type="submit" class="btn btn-info btn-lg" name="operacao" value="vacinar">Salvar</button>
                                            </div>
                                        </div>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
            </form>
        </div>
    </body>
</html>

JSP de consulta
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@page import="java.util.List"%>
<%@page import="model.Caderneta"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
        <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
        <title>Lista de Carteirinha</title>
    </head>
    <body>
        <c:import url="menu.jsp"></c:import>
            <div class="container">
                <form action="<c:url value="/CadernetaController"/>" method="Post">
                <input type="hidden" name="operacao" value="consultar">
                <div class="modal-body" align="center">
                    <h4 class="modal-title"><fmt:message key="localiza.caderneta"/></h4> <br><br>
                    <input type="radio" name="escolhe" value="suv">SUV
                    <input type="radio" name="escolhe" value="nome">Nome do Paciente<br><br>
                    <input type="text" name="buscaCaderneta" value=""><br><br>                    
                    <input type="submit" name="busca" value="Busca"/>
                </div>
            </form>
           
        </div>
    </body>
</html>

6 Respostas

B

no parâmetro operação chega o que??

A

Não esta chegando nada, não estou conseguindo fazer chegar.

B

esse input está invisivel na tela, vc usa pra passar algum valor?

A

Sim, recupero na controller para entrar no meu if:

if (request.getParameter("operacao").equals("consultar")) {
         
    String op = request.getParameter("escolhe");
    if (op.equals("suv")) {

                caderneta.setId_suv(paciente);
                caderneta = cadDao.buscarPorId(Integer.parseInt(request.getParameter("buscaCaderneta")));
                request.setAttribute("caderneta", caderneta);

                List<Vacina> listaVacinas = vacdao.buscarTudo();
                request.setAttribute("listaVacinas", listaVacinas);

                List<Dosagem> dosagens = dosedao.buscarTudo();
                request.setAttribute("dosagens", dosagens);

                List<Ubs> ubss = ubsdao.buscarTudo();
                request.setAttribute("ubss", ubss);

                List<CadernetaVacina> vcads = vcaddao.buscarTudo();
                request.setAttribute("vcads", vcads);
//If para inserção de dados da modal
                if (request.getParameter("operacao").equals("vacinar")) {

                    vcad.getId_caderneta().setId(Integer.parseInt(request.getParameter("caderneta")));
                    vcad.getId_ubs().setId(Integer.parseInt(request.getParameter("ubs")));
                    vcad.getId_dose().setId(Integer.parseInt(request.getParameter("dose")));
                    vcad.setVacinador(request.getParameter("vacinador"));
                    vcad.setDt_aplicacao(Date.valueOf(request.getParameter("dt_aplicacao")));
                    vcad.setDt_retorno(Date.valueOf(request.getParameter("dt_retorno")));

                    vcaddao.inserir(vcad);
                    response.sendRedirect("admin/caderneta.jsp");
                }

                request.getRequestDispatcher("admin/caderneta.jsp").forward(request, response);

                try {

                } catch (NumberFormatException nfe) {
                }
            }

        }
A

Vamos lá, depois de debugar mais 300x mudei um pouco o código e o que esta acontecendo.

Quando realizo a busca ele entra no meu 1º if abaixo, traz minhas listas pra preencher o select certinho. Mas antes de eu preencher os dados da modal ele já esta indo para a 1ª linha do 2º If e trazendo um erro de NullPointerException. Preciso que ele entre no 2º If somente quando eu for inserir.

if (request.getParameter(operacao).equals(consultar)) {

//busca por id

String op = request.getParameter(escolhe);

if (op.equals(suv)) {
caderneta.setId_suv(paciente);
            caderneta = cadDao.buscarPorId(Integer.parseInt(request.getParameter("buscaCaderneta")));
            request.setAttribute("caderneta", caderneta);

            List<Vacina> listaVacinas = vacdao.buscarTudo();
            request.setAttribute("listaVacinas", listaVacinas);
          
            List<Dosagem> dosagens = dosedao.buscarTudo();
            request.setAttribute("dosagens", dosagens);
           
            List<Ubs> ubss = ubsdao.buscarTudo();
            request.setAttribute("ubss", ubss);
            request.getRequestDispatcher("admin/caderneta.jsp").forward(request, response);
            
            try {
                
            } catch (NumberFormatException nfe) {
            }
        }
        
    }
    
    if (request.getParameter("vac").equals("vacinar")) {
        vcad.getId_caderneta().setId(Integer.parseInt(request.getParameter("caderneta")));
        vcad.getId_ubs().setId(Integer.parseInt(request.getParameter("ubs")));
        vcad.getId_dose().setId(Integer.parseInt(request.getParameter("dose")));
        vcad.setVacinador(request.getParameter("vacinador"));
        vcad.setDt_aplicacao(Date.valueOf(request.getParameter("dt_aplicacao")));
        vcad.setDt_retorno(Date.valueOf(request.getParameter("dt_retorno")));
        
        try {
            vcad.setId(Integer.parseInt(request.getParameter("id")));
        } catch (NumberFormatException nfe) {
        }
        
        vcaddao.inserir(vcad);
        response.sendRedirect("admin/caderneta.jsp");
    }
J

Em qual campo ele está dando NullPointerException ?

Você já tentou verificar se algum request está preenchido ?

Esse request request.getParameter(“buscaCaderneta”) ele está te trazendo o esperado ?

Criado 22 de novembro de 2017
Ultima resposta 23 de nov. de 2017
Respostas 6
Participantes 3