Atualização de dados em um formulario

14 views
Skip to first unread message

Daniel Pinheiro do Nascimento

unread,
Jul 4, 2019, 8:46:40 AM7/4/19
to caelum-vraptor

 Estou tentando a um tempo e ainda não consegui, queria pegar os dados de um cliente do campo lista ou busca e passar para um formulario para fazer a edição do mesmo, ja pesquisei e nao achei nada.

busca.jsp

           
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
           
<c:import url="/WEB-INF/jsp/header.jsp"/>
           
<div id="tamanho_lista">
           
<a class="btn btn-secondary btn-lg" href="${linkTo[ClienteController].form()}">Novo cliente</a>

           
<table class="table table-hover">
               
<thead>
                   
<tr>
                       
<th>NOME</th>
                       
<th>CPF</th>
                       
<th>RG</th>
                       
<th>EMAIL</th>
                       
<th>RUA</th>
                       
<th>BAIRRO</th>
                       
<th>CEP</th>
                       
<th>CIDADE</th>
                       
<th>Editar</th>
                       
<th>Excluir</th>
                   
</tr>
               
</thead>
               
<tbody>
                   
<c:forEach items="${clienteList}" var="cliente">
                       
<tr>
                           
<td>${cliente.nome}</td>
                           
<td>${cliente.cpf}</td>
                           
<td>${cliente.rg}</td>
                           
<td>${cliente.email}</td>
                           
<td>${cliente.rua}</td>
                           
<td>${cliente.bairro}</td>
                           
<td>${cliente.cep}</td>
                           
<td>${cliente.email}</td>
                           
<td>
                               <form action="
<c:url  value='/cliente/form_att'/>" method="post">
                                   
<input type="hidden" name="_method" value="PUT">
                                   
<input type="hidden" name="cliente.cpf" value="${cliente.cpf}">
                                   
<input type="submit" value="Editar">
                               
</form>
                           
</td>
                           
<td>
                                <form action="
<c:url  value='/cliente/remove'/>" method="post">
                                   
<input type="hidden" name="_method" value="DELETE">
                                   
<input type="hidden" name="cliente.cpf" value="${cliente.cpf}">
                                   
<input type="submit" value="Excluir">
                               
</form>
                           
</td>
                       
</tr>
                   
</c:forEach>
               
</tbody>
           
</table>
           
</div>
           
<c:import url="/WEB-INF/jsp/footer.jsp"/>



clientedao

   
package br.com.wvs.dao;


   
import java.util.List;
   
import javax.enterprise.context.RequestScoped;
   
import javax.inject.Inject;
   
import javax.persistence.EntityManager;
   
import javax.persistence.TypedQuery;
   
import javax.persistence.criteria.CriteriaBuilder;
   
import javax.persistence.criteria.CriteriaQuery;
   
import javax.persistence.criteria.Path;
   
import javax.persistence.criteria.Predicate;
   
import javax.persistence.criteria.Root;
   
import br.com.wvs.model.Cliente;

   
@RequestScoped
   
public class ClienteDao {


       
private EntityManager manager;
       
       
       
       
@Inject
       
public ClienteDao(EntityManager manager ) {
           
this.manager = manager;
       
}
       
       
public ClienteDao() {};
       
       
public void adiciona (Cliente cliente) {
            manager
.getTransaction().begin();
            manager
.persist(cliente);
            manager
.getTransaction().commit();
       
}
       
       
public void atualiza(Cliente cliente) {
            manager
.getTransaction().begin();
            manager
.merge(cliente);
            manager
.getTransaction().commit();
       
}
       

       
public List<Cliente> lista(){
           
TypedQuery<Cliente> query = manager.createQuery("Select r from Cliente r", Cliente.class);
           
return query.getResultList();
       
}

       
public List<Cliente> busca(String nome) {    
            manager
.getTransaction().begin();
           
           
CriteriaBuilder criteria = manager.getCriteriaBuilder();
           
CriteriaQuery<Cliente> query = criteria.createQuery(Cliente.class);
           
Root<Cliente> root = query.from(Cliente.class);
           
           
Path<String> nmPath = root.<String>get("nome");        

               
Predicate nomeIgual = criteria.like(nmPath,"%" + nome + "%");
                query
.where(nomeIgual);

           
TypedQuery<Cliente> tQuery = manager.createQuery(query);
            manager
.getTransaction().commit();
           
           
return tQuery.getResultList();

               
       
}
       
       
       
public Cliente find(Cliente cliente) {
           
return manager.find(Cliente.class, cliente.getCpf());
       
}

       
public void remove(Cliente cliente) {
            manager
.getTransaction().begin();
            cliente
= find(cliente);
            manager
.remove(cliente);
            manager
.getTransaction().commit();
           
       
}

       
   
}




clientecontroller

   
package br.com.wvs.controller;

   
import java.util.List;

   
import javax.inject.Inject;
   
import javax.validation.Valid;

   
import br.com.caelum.vraptor.Controller;
   
import br.com.caelum.vraptor.Delete;
   
import br.com.caelum.vraptor.Put;
   
import br.com.caelum.vraptor.Result;
   
import br.com.caelum.vraptor.interceptor.IncludeParameters;
   
import br.com.caelum.vraptor.validator.Validator;
   
import br.com.wvs.dao.ClienteDao;
   
import br.com.wvs.model.Cliente;

   
@Controller
   
public class ClienteController {
       
       
private ClienteDao clienteDao;
       
private Result result;
       
private Validator validator;
       
       
@Inject
       
public ClienteController(ClienteDao clienteDao, Result result, Validator validator) {
           
this.clienteDao = clienteDao;
           
this.result = result;
           
this.validator = validator;
       
}
       
       
public ClienteController() {};
       
       
public void form() {};
       
public void form_att() {};
       
       
       
@IncludeParameters
       
public void adiciona (@Valid Cliente cliente) {
            validator
.onErrorRedirectTo(this).form();
            clienteDao
.adiciona(cliente);
            result
.redirectTo(this).lista();
       
}
       
       
       
@Put
       
public void atualiza(Cliente cliente) {        
            cliente
= clienteDao.find(cliente);        
            clienteDao
.atualiza(cliente);
            result
.redirectTo(this).lista();
       
}
       

       
       
       
public void lista() {
           
List<Cliente> clientes = clienteDao.lista();
            result
.include("clientes", clientes);
       
};
       
       
@Delete
       
public void remove (Cliente cliente) {
            clienteDao
.remove(cliente);
            result
.redirectTo(this).lista();
       
}
       
       
       
public List<Cliente> busca(String nome){
            result
.include("nome", nome);
           
return clienteDao.busca(nome);
       
}

   
}



formulario para receber e atualizar os dados

   
<%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix="c" %>
   
<%@ taglib tagdir = "/WEB-INF/tags" prefix="t" %>

   
<c:import url="/WEB-INF/jsp/header.jsp"></c:import>

   
<div id="tamanho_form">


    <form action="
<c:url value="/cliente/atualiza"/>" method="POST" id="cad_cliente">
       
       
<div class="form-row">
       
<div class="form-group col-md-6">
       
<label for="nome">NOME:</label>
       
<input type="text" name="cliente.nome" id="nome" class="form-control" value="${cliente.nome}"/>
         
<%--<t:validationMessage name="cliente.nome"></t:validationMessage>--%>
       
</div>
       
       
<div class="form-group col-md-6">
       
<label for="cpf">CPF:</label>
       
<input type="text" name="cliente.cpf" id="cpf" class="form-control" value="${cliente.cpf}" placeholder="000.000.000-00"/>
         
<%--<t:validationMessage name="cliente.cpf"></t:validationMessage>--%>
       
</div>
       
       
<div class="form-group col-md-6">
       
<label for="email">E-MAIL:</label>
       
<input type="text" name="cliente.email" id="email" class="form-control" value="${cliente.email}"/>
         
<%--<t:validationMessage name="cliente.email"></t:validationMessage>--%>
       
</div>
       
       
<div class="form-group col-md-6">
       
<label for="rg">RG:</label>
       
<input type="text" name="cliente.rg" id="rg" class="form-control" value="${cliente.rg}" placeholder="00.000.000-0"/>
         
<%--<t:validationMessage name="cliente.rg"></t:validationMessage>--%>
       
</div>
       
       
<div class="form-group col-md-6">
       
<label for="rua">RUA:</label>
       
<input type="text" name="cliente.rua" id="rua" class="form-control" value="${cliente.rua}"/>
         
<%--<t:validationMessage name="cliente.rua"></t:validationMessage>--%>
       
</div>
       
       
<div class="form-group col-md-6">
       
<label for="bairro">BAIRRO:</label>
       
<input type="text" name="cliente.bairro" id="bairro" class="form-control" value="${cliente.bairro}"/>
         
<%--<t:validationMessage name="cliente.bairro"></t:validationMessage>--%>
       
</div>
       
       
<div class="form-group col-md-6">
       
<label for="cep">CEP:</label>
       
<input type="text" name="cliente.cep" id="cep" class="form-control" value="${cliente.cep}" placeholder="00000-000"/>
         
<%--<t:validationMessage name="cliente.cep"></t:validationMessage>--%>
       
</div>
       
       
<div class="form-group col-md-6">
       
<label for="cidade">CIDADE:</label>
       
<input type="text" name="cliente.cidade" id="cidade" class="form-control" value="${cliente.cidade}"/>
         
<%--<t:validationMessage name="cliente.cidade"></t:validationMessage>--%>
       
</div>    
       
       
<input type="submit" value="Atualizar" class="btn btn-dark"/>
       
</div>
       
       
   
</form>

   
</div>


   
<c:import url="/WEB-INF/jsp/footer.jsp"></c:import>



Emanuel Canuto

unread,
Jul 4, 2019, 12:43:24 PM7/4/19
to caelum-...@googlegroups.com


na verdade, vc precisa criar um tag <a href="cliente/${cliente.id}">... na página de busca, esse vai acessar o método que ira buscar os dados do cliente no db e redirecionar para a tela de edit.

troca isso pela tag <a>
 <form action="<c:url  value='/cliente/form_att'/>" method="post">
                                    
<input type="hidden" name="_method" value="PUT">
                                    
<input type="hidden" name="cliente.cpf" value="${cliente.cpf}">
                                    
<input type="submit" value="Editar">
                                
</form>

cria um método no controller para buscar o cliente e depois redirecionar para view
 


--
Você recebeu essa mensagem porque está inscrito no grupo "caelum-vraptor" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para caelum-vrapto...@googlegroups.com.
Para postar nesse grupo, envie um e-mail para caelum-...@googlegroups.com.
Acesse esse grupo em https://groups.google.com/group/caelum-vraptor.
Para ver essa discussão na Web, acesse https://groups.google.com/d/msgid/caelum-vraptor/c2e168ec-f151-447c-acda-5e5985ec5db1%40googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.
Reply all
Reply to author
Forward
0 new messages