Formulário JSP e JSTl com framework Bootstrap

08/06/2017

11

Bom dia.

Estou usando Bootstrap para o front-end de um formulário de cadastro em JSP e quero que ao usuário informar os dados,caso digite algo errado,o mesmo retorne com os campos já preenchidos novamente. E então ele vai preencher só o que ficou faltando ou digitado errado anteriormente. Mas não estou conseguindo fazer isso, eu entendi que tenho que fazer alterações no Servlet Cliente e no formulário que aparece p o usuário o formCliente tenho que usar taglib"$" dentro do form... Estou com dificuldades não tenho domínio sobre Servlet e nem JSTL.
Por favor,alguém poderia me orientar em como posso fazer para que funcione?

No trecho da Servlet eu sei que deve funcionar assim:


String pws = request.getParameter("pws2");
// request.setAttribute("pws2", pws); mas só que isso é senha e não deve retornar preenchida não sei como implementar essas condição em todos os demais campos...

Desde já,obrigada.

Abaixo o trecho JSTL em que tenho que incluir esse tratamento


<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

        <c:if test="${not empty erros}">
            <div class="alert alert-danger">
                <h2> Erros Encontrados: </h2> $
            </div>
        </c:if>
        <c:if test="${not empty avisos}">
            <div class="alert alert-success">
                <h2> $ </h2>
            </div>
        </c:if>



E o trecho da Servelet abaixo:

protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        try {
            Endereco endereco = new Endereco();
            endereco.setCep(request.getParameter("cep"));
            endereco.setLogradouro(request.getParameter("logradouro"));
            endereco.setBairro(request.getParameter("bairro"));
            endereco.setCidade(request.getParameter("cidade"));
            endereco.setUf(request.getParameter("uf"));
            
            Cliente cliente = new Cliente(endereco);
            cliente.setNome(request.getParameter("nome"));
            cliente.setEmail(request.getParameter("email"));
            cliente.setCpf(request.getParameter("cpf"));
            cliente.setPws(request.getParameter("pws1"));
            cliente.setNumero(request.getParameter("numero"));
            cliente.setComplemento(request.getParameter("complemento"));
            
            if (request.getParameter("ativo").equals("1")) {
                cliente.setAtivo(true);
            } else {
                cliente.setAtivo(false);
            }
            Date dt = new Date();
            System.err.println("Data: " + dt);
            cliente.setDataCadastro(dt);
            
            String pws = request.getParameter("pws2");
           // request.setAttribute("pws2", pws);
            
            CtrlCliente ctrlCliente = new CtrlCliente();
            String erros = ctrlCliente.valida(cliente, pws);
            if (erros.equals("")){
                request.setAttribute("avisos", "Cadastrado");
                
            } else {
                request.setAttribute("erros", erros);
            }
            
            RequestDispatcher rd = request.getRequestDispatcher("index.jsp?p=formCliente");
            rd.forward(request, response);
            
        } catch (Exception erros) {
            
        }
    }

Responder

Posts

10/06/2017

Marcio Souza

Para fazer isso, precisa adicionar no request.setAttribute() para cada campo que deseja que volte preenchido no formulário.
Cliente cliente = new Cliente(endereco);
cliente.setEmail(request.getParameter("email"));
cliente.setCpf(request.getParameter("cpf"));

request.setAttribute("email", cliente.getEmail());
request.setAttribute("cpf", cliente.getCpf());

//na JSP
<input>$</input> 
//ou
<input value="$" />
Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários. Para saber mais sobre o uso de cookies,
consulte nossa política de privacidade. Ao continuar navegando em nosso site, você concorda com a nossa política.

Aceitar