Saudações amigos!
Seguindo a orientação do site do VRaptor http://vraptor.caelum.com.br/pt/docs/resources-rest-pt implementei os métodos remove e update com REST no meu AgendaController:
@Resource
public class AgendaController {
private AgendaDao dao;
private Result result;
public AgendaController(AgendaDao dao, Result result) {
this.dao = dao;
this.result = result;
}
@Put("/agenda")
public void update(final Agenda agenda) {
dao.update(agenda);
result.redirectTo(AgendaController.class).list();
}
@Delete("/agenda")
public void remove(Agenda agenda) {
Agenda a2 = dao.search(agenda.getId());
dao.remove(a2);
result.redirectTo(AgendaController.class).list();
}
}
No list.jsp tenho o botão delete. Quando clico direciona novamente para a listagem sem deletar o registro:
<c:forEach items="${agendaList}" var="agenda" varStatus="id">
<tr bgcolor="#${id.count % 2 == 0 ? 'ddd' : 'fff'}">
<td>
<form action="<c:url value="/agenda"/>" method="post">
<input name="agenda.id" value="${agenda.id}" type="hidden" />
<button type="submit" name="_method" value="DELETE"> Remove </button>
</form>
No meu edit.jsp tenho o botão salvar no formulário (obs. omiti campos para simplificar).
<form id="agendaEditForm" action="<c:url value="/agenda}"/>" method="Post">
<fieldset>
<legend>EDITAR AGENDA</legend>
<table border="0">
<tr>
<td>
<label for="siteDestino">Site Destino</label>
</td>
<td>
<input id="siteDestino" class="required" minlength="20"
type="text" size="60" name="agenda.siteDestino" value="${agenda.siteDestino}"/>
</td>
</tr>
<tr>
<td>
</td>
<td>
<input id="agenda.id" name="agenda.id" value="${agenda.id}" type="hidden" />
<button type="submit" name="_method" value="Put">SALVAR</button>
</td>
</tr>
</table>
</fieldset>
</form>
Segue saida no tomcat para o update do botão salvar:
HTTP Status 404 - /etracking/agenda%7D
type Status report
message /etracking/agenda%7D
description The requested resource (/etracking/agenda%7D) is not available.
Apache Tomcat/7.0.14
Estou batendo cabeça com o REST e ainda não entendi como funciona. :?
