Atualizacao de dados usando um formulario

8 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>



Reply all
Reply to author
Forward
0 new messages