É o seguinte: Quando eu estou editando o “montador” e quero atualizar, ele simplesmente regarrega a página (na verdade está executando o método editar, que carrega os dados do montador.
Segue abaixo o código fonte:
package br.com.indados.mvmontagem.controller;
import java.util.Date;
import java.util.List;
import java.util.Map;
import javax.annotation.PostConstruct;
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.indados.inguard.domain.SessaoUsuario;
import br.com.indados.mvmontagem.entity.Funcionario;
import br.com.indados.mvmontagem.entity.Montador;
import br.com.indados.mvmontagem.entity.Montadora;
import br.com.indados.mvmontagem.entity.StatusMontador;
import br.com.indados.mvmontagem.entity.StatusMontadora;
import br.com.indados.mvmontagem.repository.MontadorRepository;
import br.com.indados.mvmontagem.repository.MontadoraRepository;
import br.com.indados.mvmontagem.util.MvmontagemUtil;
import br.com.indados.mvmontagem.web.DisplayTag;
import br.com.indados.mvmontagem.web.DisplayTagComponent;
@Resource
public class MontadorController {
private Result result;
private SessaoUsuario sessaoUsuario;
private MontadorRepository montadorRepository;
private DisplayTagComponent displayTag;
private MontadoraRepository montadoraRepository;
public MontadorController(
Result result,
SessaoUsuario sessaoUsuario,
MontadorRepository montadorRepository,
DisplayTagComponent displayTagComponent,
MontadoraRepository montadoraRepository) {
this.result = result;
this.sessaoUsuario = sessaoUsuario;
this.montadorRepository = montadorRepository;
this.displayTag = displayTagComponent;
this.montadoraRepository = montadoraRepository;
}
@PostConstruct
public void init() {
this.result.include("statusMontadorList",StatusMontador.values());
this.result.include("montadoraList", montadoraRepository.obter(new Montadora(StatusMontadora.ATIVO)));
Map<String, Object> map = this.result.included();
Montador montador = (Montador) map.get("montador");
if (montador == null) {
montador = new Montador();
}
boolean admin = MvmontagemUtil.hasPapelAdmin(this.sessaoUsuario.getUsuarioLogado());
if (!admin) {
montador.setMontadora(new Montadora(102L));
}
this.result.include("montador", montador);
this.result.include("disabledMontadoraCombo", admin ? "": "disabled" );
}
@Get
@Path("/montador/")
public void form() {
}
@Get
@Path("/montador/pesquisa/")
@DisplayTag("montadorTable")
public void pesquisar(Montador montador, Integer page) {
List<Montador> montadorList = this.montadorRepository.obter(montador, this.displayTag.begin(page), this.displayTag.end(page));
Integer montadorListSize = this.montadorRepository.obterCount(montador);
this.result.include("montadorList", montadorList);
this.result.include("montadorListSize", montadorListSize);
this.result.include("statusMontadorList",StatusMontador.values());
this.result.include("montadoraList", montadoraRepository.obter(new Montadora(StatusMontadora.ATIVO)));
this.result.forwardTo(MontadorController.class).form();
}
@Get
@Path(value="/montador/novo/")
public void editar() {
this.result.include("disabledCodigo", "disabled" );
this.result.include("method", "POST");
}
@Get
@Path(value="/montador/{id}/")
public void editar(Long id) {
System.out.println("editar");
Montador montador = this.montadorRepository.obterUnico(new Montador(id));
this.result.include("montador", montador);
this.result.include("method", "PUT");
}
@Post
@Path(value="/montador/")
public void inserir(Montador montador) {
montador.setFuncionarioCadastro(new Funcionario(this.sessaoUsuario.getUsuarioLogado().getCodigo()));
montador.setDtCadastro(new Date());
this.montadorRepository.inserir(montador);
this.result.forwardTo(MontadorController.class).form();
}
@Put
@Path(value="/montador/{montador.id}/")
public void atualizar(Montador montador) {
System.out.println("atualizar");
montador.setFuncionarioAtualizacao(new Funcionario(this.sessaoUsuario.getUsuarioLogado().getCodigo()));
montador.setDtAtualizacao(new Date());
this.montadorRepository.atualizar(montador);
this.result.forwardTo(MontadorController.class).form();
}
@Delete
@Path(value="/montador/{montador.id}/")
public void excluir(Montador montador) {
System.out.println("excluir");
this.montadorRepository.excluir(montador);
this.result.forwardTo(MontadorController.class).form();
}
}
editar.jsp
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib uri="http://displaytag.sf.net" prefix="display"%>
<body>
<form id="pesquisaForm" action="<c:url value="/montador/${montador.id}" />" method="POST">
<table>
<c:if test="${method eq 'PUT'}">
<tr>
<td><label for="montador.id">Código:</label></td>
<td><input type="text" name="montador.id" id="montador.id" value="${montador.id}" readonly="readonly"/></td>
</tr>
</c:if>
<tr>
<td><label for="montador.cpf">Cpf:</label></td>
<td><input type="text" name="montador.cpf" id="montador.cpf" value="${montador.cpf}" /></td>
</tr>
<tr>
<td><label for="montador.nome">Nome:</label></td>
<td><input type="text" name="montador.nome" id="montador.nome" value="${montador.nome}" /></td>
</tr>
<tr>
<td><label for="montador.status">Status:</label></td>
<td>
<select name="montador.status" id="montador.status">
<option label="Selecione" value=""/>
<c:forEach items="${statusMontadorList}" var="status">
<option label="${status.descricao}" value="${status.id}" ${status.id eq montador.status.id ? 'selected':''}/>
</c:forEach>
</select>
</td>
</tr>
<tr>
<td><label for="montador.montadora.combo">Montadora:</label></td>
<td>
<select id="montador.montadora.combo"
onchange="javascript: document.getElementById('montador.montadora.id').value = this.value;" ${disabledMontadoraCombo}>
<option label="Selecione" value=""/>
<c:forEach items="${montadoraList}" var="montadora">
<option label="${montadora.descricao}" value="${montadora.id}" ${montadora.id eq montador.montadora.id ? 'selected':''}/>
</c:forEach>
</select>
<input type="hidden" id="montador.montadora.id" name="montador.montadora.id" value="${montador.montadora.id}" />
</td>
</tr>
</table>
<input type="hidden" id="_method" name="_method" value="${method}" />
<input type="submit" value="Salvar" />
</form>
</body>
Aparentemente esse lance dos method não está funfando. Já testei no IE, Chrome e FF e nada. Alguem pode me ajudar!?