Olá ! Gostaria de saber qual é o fluxo do Controle e JSP para alterar um registro, nos cursos não fala nada, estou tentando resolver esse problema, mais ainda não conseguir.
Poderia me passar algum exemplo, algum artigo que fala sobre?
Olá ! Gostaria de saber qual é o fluxo do Controle e JSP para alterar um registro, nos cursos não fala nada, estou tentando resolver esse problema, mais ainda não conseguir.
Poderia me passar algum exemplo, algum artigo que fala sobre?
Olá eu implementei a edição aqui com base na apostila :
public class ProdutoDao {
private final EntityManager em;
@Inject
public ProdutoDao(EntityManager em) {
this.em = em;
}
public ProdutoDao() {
this(null);
}
public void adiciona(Produto produto) {
em.getTransaction().begin();
em.persist(produto);
em.getTransaction().commit();
}
public void remove(Produto produto) {
em.getTransaction().begin();
em.remove(busca(produto));
em.getTransaction().commit();
}
public Produto carrega(Long id) {
return em.find(Produto.class, id);
}
public Produto busca(Produto produto) {
return em.find(Produto.class, produto.getId());
}
@SuppressWarnings("unchecked")
public List<Produto> lista() {
return em.createQuery("select p from Produto p").getResultList();
}
public void atualiza(Produto produto) {
em.getTransaction().begin();
em.merge(produto);
em.getTransaction().commit();
}
}
@Controller
public class ProdutoController {
private final Result result;
private ProdutoDao dao;
private Validator validator;
public ProdutoController() {
this(null,null,null);
}
@Inject
public ProdutoController(Result result, ProdutoDao dao, Validator validator) {
this.result = result;
this.dao = dao;
this.validator = validator;
}
@Get("/")
public void inicio() {
}
@Get
public void formulario(){
System.out.println("formulario");
}
@Get
public List<Produto> lista() {
// EntityManager em = JPAUtil.criaEntityManager();
// ProdutoDao dao = new ProdutoDao(em);
return dao.lista();
}
@Post
public void adiciona(@Valid Produto produto) {
//EntityManager em = JPAUtil.criaEntityManager();
// em.getTransaction().begin();
//ProdutoDao dao = new ProdutoDao(em);
validator.onErrorUsePageOf(this).formulario();
dao.adiciona(produto);
// em.getTransaction().commit();
result.include("mensagem", "Produto adicionado com sucesso!");
result.redirectTo(this).lista();
}
@Delete
@Path("/produto")
public void remove(Produto produto){
// EntityManager em = JPAUtil.criaEntityManager();
// em.getTransaction().begin();
// Produto produtoToRemove = em.find(Produto.class,produto.getId());
// em.remove(produtoToRemove);
// em.getTransaction().commit();
Produto produtoToRemove = dao.busca(produto);
dao.remove(produtoToRemove);
result.redirectTo(this).lista();
}
@Get("/produto/{id}")
public Produto edita(Long id) {
return dao.carrega(id);
}
@Put("/produto/{produto.id}")
public void altera(@Valid Produto produto) {
System.out.println("antes atualizar");
validator.onErrorUsePageOf(this).formulario();
dao.atualiza(produto);
result.redirectTo(this).lista();
}
}
e por fim a jsp de edição: edita.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<head>
<title>Insert title here</title>
<link rel="stylesheet" type="text/css" href="../bootstrap/css/bootstrap.css">
<link rel="stylesheet" type="text/css" href="../base.css">
</head>
<body>
<div class="container">
<h1>Alterar Produto</h1>
<c:if test="${not empty errors}">
<div class="alert alert-danger">
<c:forEach var="error" items="${errors}">
${error.category} - ${error.message}<br />
</c:forEach>
</div>
</c:if>
<form action="<c:url value="/produto/${produto.id}"/>" method="post">
<%-- <input type="hidden" name="produto.id"
value="${produto.id }" /> --%>
<label for="nome">Nome:</label>
<input id="nome" type="text" name="produto.nome" class="form-control"
value="${produto.nome}"/>
<label for="valor">Valor:</label>
<input type="text" id="valor" name="produto.valor" class="form-control" value="${produto.valor}"/>
<label for="quantidade">Quantidade:</label>
<input id="quantidade" type="text" name="produto.quantidade" class="form-control"
value="${produto.quantidade}"/>
<button type="submit" class="btn btn-primary" name="_method" value="PUT">Enviar</button>
</form>
</div>
</body>
</html>