Olá, pelo que foi ensinado aqui no Alura e pelo que andei lendo, devemos utilizar o verbo @Put quando queremos atualizar um recurso. Navegando pela internet encontrei um exemplo que um cara utiliza o verbo @Put com Vraptor de uma forma diferente da qual eu já tinha visto até agora. Então a pergunta, esta forma de utilizar o @Put é correta?
@Resource
public class UsuarioController {
private Result result;
private UsuarioDao usuarioDao;
public UsuarioController(Result result, UsuarioDao usuarioDao) {
this.result = result;
this.usuarioDao = usuarioDao;
}
@Get
@Path("/usuario/novo")
public void novo(Usuario usuario) {
result.include("usuario", usuario);
}
@Post
@Path("/usuario")
public void salvar(Usuario usuario) {
usuarioDao.salvar(usuario);
result
.include("usuarioList", usuarioDao.loadAll())
.forwardTo("WEB-INF/jsp/usuario/listagem.jsp");
// Poderia ser usado: result.redirectTo(this).listagem();
}
@Get
@Path("/usuario")
public List<Usuario> listagem() {
return usuarioDao.loadAll();
}
@Put
@Path("/usuario")
public void editar(Usuario usuario) {
Usuario entity = usuarioDao.loadById(usuario);
result.redirectTo(this).novo(entity);
}
@Delete
@Path("/usuario")
public void remover(Usuario usuario) {
usuarioDao.remover(usuario);
result.redirectTo(this).listagem();
}
}
e no jsp:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>http://wbotelhos.com.br</title>
</head>
<body>
<a href="<c:url value='/usuario/novo'/>">Adicionar</a><br/>
<table>
<thead>
<tr>
<th>Nome</th>
<th>Senha</th>
<th>E-mail</th>
</tr>
</thead>
<tbody>
<c:forEach items="${usuarioList}" var="item">
<tr>
<td>${item.nome}</td>
<td>${item.senha}</td>
<td>${item.email}</td>
<td>
<form action="<c:url value='/usuario'/>" method="post">
<input type='hidden' name='_method' value='put'/>
<input type='hidden' name='usuario.id' value='${item.id}'/>
<input type="submit" value="Editar"/>
</form>
</td>
<td>
<form action="<c:url value='/usuario'/>" method="post">
<input type='hidden' name='_method' value='delete'/>
<input type='hidden' name='usuario.id' value='${item.id}'/>
<input type="submit" value="Excluir"/>
</form>
</td>
</tr>
</c:forEach>
</tbody>
</table>
</body>
</html>