Boa Tarde.
Estou tentando utilizar o “redirectTo” do VRaptor, felizmente o redirecionamento para ouro arquivo JSP esta funcionando, mas infelizmente a variável (List) esta vazia.
Resolvi utilizar o “redirectTo” para evitar códigos duplicados em arquivos JSP’s, pois tenho 7 métodos que utilizam o mesmo código JSP, mas infelizmente quando estou utilizando o “redirectTo” a variável (List) esta retornando como vazia.
Um pequeno detalhe, quando estou realizando os testes locais o código com o “redirectTo” esta funcionando normalmente, assim que realizo o deploy no AppEngine é que a varável (List) fica com seu valor vazio.
Segue abaixo os códigos que estou utilizando.
[color=red]JSP - formCadastro:[/color]
[code]<form id=“equipamentoForm” action="<c:url value="/equipamentos" />" method=“post”>
Cadastro de Equipamentos
<label for="patrimonio">Patrimonio:</label>
<input id="patrimonio" type="text" name="equipamento.patrimonio" value="${equipamento.patrimonio}"/>
<br/>
<label for="serie">Serie:</label>
<input id="serie" type="text" name="equipamento.serie" value="${equipamento.serie}"/>
<br/>
<label for="name">Nome:</label>
<input id="nome" type="text" name="equipamento.nome" value="${equipamento.nome}"/>
<font size="2"><a id="nome" href="/nomeEquipamento/novo">Criar</a></font>
<c:forEach items="${errors}" var="error">
<c:if test="${error.category == 'equipamento.nome'}">
<br/>
<font size="2" color="red">${error.message}</font>
</c:if>
</c:forEach>
<br/>
<label for="marca">Marca:</label>
<input id="marca" type="text" name="equipamento.marca" value="${equipamento.marca}"/>
<font size="2"><a id="marca" href="/marcaEquipamento/novo">Criar</a></font>
<c:forEach items="${errors}" var="error">
<c:if test="${error.category == 'equipamento.marca'}">
<br/>
<font size="2" color ="red">${error.message}</font>
</c:if>
</c:forEach>
<br/>
<label for="modelo">Modelo:</label>
<input id="modelo" type="text" name="equipamento.modelo" value="${equipamento.modelo}"/>
<font size="2"><a id="modelo" href="/modeloEquipamento/novo">Criar</a></font>
<br/>
<label for="classificacao">Classificação:</label>
<input id="classificacao" type="text" name="equipamento.classificacao" value="${equipamento.classificacao}"/>
<font size="2"><a id="classificacao" href="/classificacaoEquipamento/novo">Criar</a></font>
<c:forEach items="${errors}" var="error">
<c:if test="${error.category == 'equipamento.classificacao'}">
<br/>
<font size="2" color="red">${error.message}</font>
</c:if>
</c:forEach>
<br/>
<label for="setor">Setor:</label>
<input id="modelo" type="text" name="equipamento.setor" value="${equipamento.setor}"/>
<font size="2"><a id="setor" href="/setorEquipamento/novo">Criar</a></font>
<c:forEach items="${errors}" var="error">
<c:if test="${error.category == 'equipamento.setor'}">
<br/>
<font size="2" color="red">${error.message}</font>
</c:if>
</c:forEach>
<br/>
<button type="submit">Salvar</button>
</fieldset>
[/code][color=red]Obs.:[/color] Verifique o Anexo "formCadastro".
[b][color=red]Classe - EquipamentoController:[/color][/b]
[code]@Resource
public class EquipamentoController {
private final EquipamentoDao daoEquipamento;
private final AgregacaoEquipamentoDao daoAgregacaoEquipamento;
private final MarcaEquipamentoDao daoMarcaEquipamento;
private final NomeEquipamentoDao daoNomeEquipamento;
private final ClassificacaoEquipamentoDao daoClassificacaoEquipamento;
private final SetorEquipamentoDao daoSetorEquipamento;
private final EquipamentoNomeDao daoEquipamentoNome;
private final EquipamentoMarcaDao daoEquipamentoMarca;
private final Result result;
private final Validator validator;
public EquipamentoController(EquipamentoDao daoEquipamento,
AgregacaoEquipamentoDao daoAgregacaoEquipamento,
MarcaEquipamentoDao daoMarcaEquipamento,
NomeEquipamentoDao daoNomeEquipamento,
ClassificacaoEquipamentoDao daoClassificacaoEquipamento,
SetorEquipamentoDao daoSetorEquipamento,
EquipamentoNomeDao daoEquipamentoNome,
EquipamentoMarcaDao daoEquipamentoMarca,
Result result, Validator validator) {
this.daoEquipamento = daoEquipamento;
this.daoAgregacaoEquipamento = daoAgregacaoEquipamento;
this.daoMarcaEquipamento = daoMarcaEquipamento;
this.daoNomeEquipamento = daoNomeEquipamento;
this.daoClassificacaoEquipamento = daoClassificacaoEquipamento;
this.daoSetorEquipamento = daoSetorEquipamento;
this.daoEquipamentoNome = daoEquipamentoNome;
this.daoEquipamentoMarca = daoEquipamentoMarca;
this.result = result;
this.validator = validator;
}
@Post
@Path("/equipamentos")
public void salvar(Equipamento equipamento) {
List<Equipamento> equipamentos = new ArrayList<Equipamento>();
//Validacao do Nome do Equipamento
if (equipamento.getNome() == "") {
this.validator.add(new ValidationMessage("Nome do Equipamento é obrigatório","equipamento.nome"));
}
if (this.daoNomeEquipamento.busca(equipamento.getNome()) == null && equipamento.getNome() != "") {
this.validator.add(new ValidationMessage("Por favor, crie o Nome do Equipamento","equipamento.nome"));
}
//Validacao da Marca do Equipamento
if (equipamento.getMarca() == "") {
this.validator.add(new ValidationMessage(
"Marca do Equipamento é obrigatório","equipamento.marca"));
}
if (this.daoMarcaEquipamento.busca(equipamento.getMarca()) == null && equipamento.getMarca() != "") {
this.validator.add(new ValidationMessage("Por favor, crie a Marca do Equipamento","equipamento.marca"));
}
//Validacao da Classificacao do Equipamento
if (equipamento.getClassificacao() == "") {
this.validator.add(new ValidationMessage("Classificação do Equipamento é obrigatório", "equipamento.classificacao"));
}
if (this.daoClassificacaoEquipamento.busca(equipamento.getClassificacao()) == null && equipamento.getClassificacao() != "") {
this.validator.add(new ValidationMessage("Por favor, crie a Classificação do Equipamento", "equipamento.classificacao"));
}
//Validacao do Setor do Equipamento
if (equipamento.getSetor() == "") {
this.validator.add(new ValidationMessage("Setor do Equipamento é obrigatório", "equipamento.setor"));
}
if (this.daoSetorEquipamento.busca(equipamento.getSetor()) == null && equipamento.getSetor() != "") {
this.validator.add(new ValidationMessage("Por favor, crie o Seotr do Equipamento", "equipamento.setor"));
}
this.validator.onErrorUsePageOf(this).formCadastro(equipamento);
equipamento.setNumeroSavitec(this.daoAgregacaoEquipamento.pegaNumeroSavitecESomaMaisUm());
this.daoEquipamentoMarca.salvar(equipamento);
this.daoEquipamentoNome.salvar(equipamento);
this.daoEquipamento.salvar(equipamento);
equipamentos.add(equipamento);
this.result.redirectTo(this).exibir(equipamentos);
}
@Get
@Path("/equipamentos/nome")
public List<Equipamento> exibir (List<Equipamento> equipamentos) {
return equipamentos;
}
}[/code]
[color=red]JSP - exibir:[/color]
[code]
| Numero Savitec | Patrimonio | Serie | Nome | Marca | Modelo | Classificação | Setor |
|---|---|---|---|---|---|---|---|
| ${equipamento.numeroSavitecPadronizadoENG} | ${equipamento.patrimonio} | ${equipamento.serie} | ${equipamento.nome} | ${equipamento.marca} | ${equipamento.modelo} | ${equipamento.classificacao} | ${equipamento.setor} |
Verifiquei que na documentação do VRaptor 3 tem um pequeno tópico sobre App Engine (http://vraptor.caelum.com.br/documentacao/google-app-engine/), só que infelizmente não consegui entender.
Sucesso!
Abraço!