Boa tarde a todos…
Gostaria de uma ajuda… tenho um método de alteração de formolario, anotado como PUT, só que o programa não está conseguindo encontrá-lo…
Quando eu chamo o método clicando no meu botão “Alterar”, ele retorna um 404… ja olhei a documentação e vi em apostilas da Caelum, e não estou encontrando o erro, pelo menos parece que estou fazendo certo… será que alguém pode me ajudar?
Segue abaixo os códigos:
JSP:
<%@page contentType="text/html" pageEncoding="ISO-8859-1"%>
<%@page import="java.text.SimpleDateFormat,java.util.Date "%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<link href="<c:url value="/javascripts/jquery.autocomplete.css"/>"
rel="stylesheet" type="text/css" media="screen" />
<script type="text/javascript"
src="<c:url value="/javascripts/jquery-1.3.2.min.js"/>"></script>
<script type="text/javascript"
src="<c:url value="/javascripts/jquery.validate.min.js"/>"></script>
<script type="text/javascript"
src="<c:url value="/javascripts/jquery.autocomplete.min.js"/>"></script>
<script type="text/javascript"
src="<c:url value="/javascripts/jquery.puts.js"/>"></script>
<fmt:setLocale value="pt_br" />
<form action="<c:url value="/temposDiarios/${temposDiarios.id}"/>" method="POST">
<table>
<thead>
<tr>
<th>Dia</th>
<th>Mes</th>
<th>Ano</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<label for="dia"></label>
<input id="dia" name="tempoDiario.dia" value="${tempoDiario.dia}" maxlength="2" style=" width : 76px;"></input>
</td>
<td>
<label for="mes"></label>
<input id="mes" type="text" name="tempoDiario.mes" value="${tempoDiario.mes}" maxlength="2" style=" width : 76px;"></input>
</td>
<td>
<label for="ano"></label>
<input id="ano" type="text" name="tempoDiario.ano" value="${tempoDiario.ano}" maxlength="4" style=" width : 76px;"></input>
</td>
</tr>
</tbody>
</table>
<table>
<thead>
<tr>
<th>Entrada</th>
<th>Saida</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<label for="entrada1"></label>
<input id="entrada1" type="text" name="tempoDiario.entrada1" value="${tempoDiario.entrada1}" maxlength="4" />
</td>
<td>
<label for="saida1"></label>
<input id="saida1" type="text" name="tempoDiario.saida1" value="${tempoDiario.saida1}" maxlength="4"/>
</td>
</tr>
<tr>
<td>
<label for="entrada2"></label>
<input id="entrada2" type="text" name="tempoDiario.entrada2" value="${tempoDiario.entrada2}" maxlength="4"/>
</td>
<td>
<label for="saida2"></label>
<input id="saida2" type="text" name="tempoDiario.saida2" value="${tempoDiario.saida2}" maxlength="4"/>
</td>
</tr>
<tr>
<td>
<label for="entrada3"></label>
<input id="entrada3" type="text" name="tempoDiario.entrada3" value="${tempoDiario.entrada3}" maxlength="4"/>
</td>
<td>
<label for="saida3"></label>
<input id="saida3" type="text" name="tempoDiario.saida3" value="${tempoDiario.saida3}"maxlength="4"/>
</td>
</tr>
</tbody>
</table>
<table>
<thead>
<tr>Observações:</tr>
</thead>
<tbody>
<tr>
<td><label for="obs"></label>
</tr>
</tbody>
</table>
<table>
<thead>
<tr>
<th></th>
<th>Saldo:</th>
</tr>
</thead>
<tbody>
<tr>
<td><label for="sinal" ></label>
<input id="sinal" border="none" readonly="readonly" type="text" name="tempoDiario.sinal" value="${tempoDiario.sinal }" maxlength="1" style=" width : 14px;"/>
</td>
<td><label for="saldo"></label>
<input id="saldo" readonly="readonly" type="text" name="tempoDiario.saldo" value="${tempoDiario.saldo }" style=" width : 136px;"/>
</td>
</tr>
</tbody>
</table>
<button type="submit" name="_method" value="PUT">Alterar</button>
</form>
Controller:
import static br.com.caelum.vraptor.view.Results.page;
import java.util.GregorianCalendar;
import java.util.List;
import br.com.caelum.vraptor.Delete;
import br.com.caelum.vraptor.Get;
import br.com.caelum.vraptor.Path;
import br.com.caelum.vraptor.Post;
import br.com.caelum.vraptor.Put;
import br.com.caelum.vraptor.Resource;
import br.com.caelum.vraptor.Result;
import br.com.caelum.vraptor.Validator;
import br.com.caelum.vraptor.validator.Validations;
import br.com.metha.registroDiario.dao.TempoDiarioDAO;
import br.com.metha.registroDiario.modelo.Colaborador;
import br.com.metha.registroDiario.modelo.TempoDiario;
@Resource
public class TemposDiariosController {
private final TempoDiarioDAO dao;
private final Result result;
private final Validator validator;
public TemposDiariosController(TempoDiarioDAO dao, Result result, Validator validator){
this.dao = dao;
this.result = result;
this.validator = validator;
}
public List<TempoDiario> lista(){
//Colaborador colaborador = new Colaborador();
//colaborador.setId(999);
return dao.listaTudo();
}
@Post @Path("/temposDiarios")
public void adiciona(final TempoDiario tempoDiario){
tempoDiario.setUltimaAtualizacao(new GregorianCalendar().getTime());
tempoDiario.setColaborador(999);
Colaborador colaborador = new Colaborador();
colaborador.setId(999);
tempoDiario.setCodColaborador(colaborador);
tempoDiario.setCodDia(1.0);
tempoDiario.setDataInclusao(new GregorianCalendar().getTime());
tempoDiario.setResponsavelInclusao(999);
tempoDiario.setSaldo(tempoDiario.calcularSaldo());
tempoDiario.setTotal(tempoDiario.getTempoTrabalhado());
validator.checking(new Validations(){{
that(tempoDiario.getEntrada1().length() == 4 || tempoDiario.getEntrada1().length() == 0,
"Entrada 1","entrada1.obrigatorio");
that(tempoDiario.getEntrada2().length() == 4 || tempoDiario.getEntrada2().length() == 0,
"Entrada 2","entrada2.obrigatorio");
that(tempoDiario.getEntrada3().length() == 4 || tempoDiario.getEntrada3().length() == 0,
"Entrada 3","entrada3.obrigatorio");
that(tempoDiario.getSaida1().length() == 4 || tempoDiario.getSaida1().length() == 0,
"Saida 1","saida1.obrigatorio");
that(tempoDiario.getSaida2().length() == 4 || tempoDiario.getSaida2().length() == 0,
"Saida 2","saida2.obrigatorio");
that(tempoDiario.getSaida3().length() == 4 || tempoDiario.getSaida3().length() == 0,
"Saida 3","saida3.obrigatorio");
}});
validator.onErrorUse(page()).of(TemposDiariosController.class).formulario();
dao.salva(tempoDiario);
result.redirectTo(TemposDiariosController.class).adicionado();
}
public void adicionado(){
}
public void formulario(){
}
public void buscador(){
}
@Get @Path("/temposDiarios/{id}")
public TempoDiario visualiza(Integer id){
return dao.carrega(id);
}
@Put @Path("/temposDiarios/{tempoDiario.id}")
public void altera(TempoDiario tempoDiario){
tempoDiario.setColaborador(999);
dao.atualiza(tempoDiario);
result.redirectTo(TemposDiariosController.class).lista();
}
@Get @Path("/temposDiarios/{id}/editar")
public TempoDiario edita(Integer id){
return dao.carrega(id);
}
@Delete @Path("/temposDiarios/{id}")
public void remove(Integer id){
TempoDiario tempoDiario = dao.carrega(id);
dao.remove(tempoDiario);
result.redirectTo(TemposDiariosController.class).lista();
System.out.println(id);
}
@Get @Path("/temposDiarios/{id}/cadastraAtividade")
public void cadastraAtividade(Integer id){
TempoDiario tempoDiario = dao.carrega(id);
result.redirectTo(AtividadesDiariasController.class).formulario(tempoDiario);
System.out.println(id);
}
public List<TempoDiario> buscaRD(final Integer colaborador){
return dao.buscaRD(colaborador);
}
}