To create I used:
public void adiciona(Produto produto) {
em.getTransaction().begin();
em.persist(produto);
em.getTransaction().commit();
}
To remove I used:
public void remove(Produto produto) {
em.getTransaction().begin();
em.remove(produto);
em.getTransaction().commit();
}
and to update I'm using the code below in the dao:
public void atualiza(Produto produto) {
em.getTransaction().begin();
em.merge(produto);
em.getTransaction().commit();
}
and this method:
@Post
public void altera(@Valid Produto produto) {
validator.onErrorForwardTo(this).inicio();
dao.atualiza(produto);
result.include("message", "PRODUTO ALTERADO");
result.redirectTo(this).lista();
}
and this jsp:
<form action="<c:url value='/produto/altera'/>" method="POST">
<input type="hidden" name="produto.id" value="${produto.id}"/>
<div class="col s6">
NOME: <input type="text" name="produto.nome" value="${produto.nome}"/>
</div>
<div class="col s6">
DESCRIÇÃO: <input type="text" name="produto.descricao" value="${produto.descricao}"/>
</div>
<div class="col s4">
QUANTIDADE: <input type="number" name="produto.quanitdade" value="${produto.quantidade}"/>
</div>
<div class="col s4">
VALOR: <input type="number" name="produto.valor" value="${produto.valor}"/>
</div>
<div class="col s4">
VALOR DO FRETE: <input type="number" name="produto.valorFrete" value="${produto.valorFrete}"/>
</div>
<div class="col s9"></div>
<div class="col s3 right">
<input type="submit" class="btn waves-effect waves-light btn-large right" value="SALVAR"></input>
</div>
</form>
But it is entering the home page because of the validator, and if I remove it appears 500 error, that could not call the method changes.