Re:VRaptor - Validation + Result.Include [Erro na exibição de result.include] RESOLVIDO

5 respostas
robertouba

Bom galera… Novamente eu aqui… e, esse erro, não sei se é a maneira certa de fazer, mas… acredito que eu tenha feito errado!
Bom, tenho uma classe formulário que vai incluir os grupos… mas quando acontece um erro no validator do VRaptor e retorna para essa mesma classe formulario, os includes os quais eram importantes para o formulário não ocorrem, apenas exibindo os errors do Validator.

Segue código:

@Get
	@Path("/contato/novo")
	public void formulario() {
		result.include("grupos", gDao.listar());
	}

	@Post
	@Path("/contato")
	public void adiciona(final Contato contato) {

		if (contato.getNome().length() == 0) {
			validator.add(new ValidationMessage("Digite o Nome", "usuario.nome"));
		}

		validator.onErrorUsePageOf(ContatoController.class).formulario();
		
		dao.add(contato);
		result.redirectTo(ContatoController.class).lista();
	}

Bom… eu sei que poderia retornar no método um List<Grupo> entretanto, no formulário de edição, poderia me dar um erro sendo que eu retorno na edição um tipo Contato…
Qual seria a melhor maneira de corrigir esse erro?

5 Respostas

yorgan

Não sei se entendi, mas se você quer que, ao retornar p/ o método formulario() o formulário da tela fique preenchido, você precisa adicionar o contato ao request.
Algo +/- assim:

@Post
	@Path("/contato")
	public void adiciona(final Contato contato) {

		if (contato.getNome().length() == 0) {
			validator.add(new ValidationMessage("Digite o Nome", "usuario.nome"));
			result.include("contato", contato)
		}

		validator.onErrorUsePageOf(ContatoController.class).formulario();
		
		dao.add(contato);
		result.redirectTo(ContatoController.class).lista();
	}

E nos input’s do JSP, preencher os atributos VALUE com o contato.seuAtributo.

<html>
.....
<body>
Atributo:  <input type="text" name="contato.seuAtributo" value="${contato.seuAtributo}"/>
Atributo2: <input type="text" name="contato.seuAtributo2" value="${contato.seuAtributo2}"/>
</body>
</html>

[]'s
Daniel

Lucas_Cavalcanti

não precisa incluir o contato, o vraptor faz isso automaticamente…

se o problema é que a variavel grupos não está setada no jsp, troque o onErrorUsePageOf por onErrorForwardTo que vai funcionar…

o pageOf não executa o método, só vai direto pro jsp

robertouba

Pois é lucas, mas no JSP está mostrando normalmente antes de retornar pelo erro, entende?
ainda não testei as infos que o Dan passou, mas, bom, … fiquei meio pasmo com isso!

Lucas_Cavalcanti

como eu falei, o onErrorUsePageOf não executa o método formulario, só vai direto pra jsp, por isso que não vai mostrar direito

troque pra onErrorForwardTo

robertouba

Resolvido de ambas as maneiras!

Criado 27 de maio de 2011
Ultima resposta 2 de jul. de 2011
Respostas 5
Participantes 3