[Resolvido] Problema com POST - vRaptor

5 respostas
F

Boa tarde,

Estou começando estudar o vRaptor, e estou com problema ao chamar o metodo adiciona. Segue os códigos:

@Resource
public class PessoasController {

	private final PessoaDAO dao;
	private final Result result;
	private final Validator validator;

	public PessoasController(PessoaDAO dao, Result result, Validator validator) {
		this.dao = dao;
		this.result = result;
		this.validator = validator;
	}

	@Get @Path("/pessoas")
	public List<Pessoa> lista() {
        return new ArrayList<Pessoa>();
    }
	
	public void form() {
		System.out.println("Entrou no form()");
    }
	
	@Path("/pessoas")
	@Post
    public void adiciona(Pessoa pessoa) {
//    	validator.checking(new Validations() {{
//            that(!pessoa.getNome().isEmpty(), "pessoa.nome", "nome.vazio");
////            that(!pessoa.getCpfCnpj().isEmpty(), "cpfCnpj.preco", "cpf.invalido");
//        }});
//        validator.onErrorUsePageOf(PessoasController.class).form();
    	dao.adiciona(pessoa);
    	result.redirectTo(PessoasController.class).lista();
    }

}

E no form.jsp tenho:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<title>Manutenção de pessoas</title>
	</head>
	<body>
	
		<form action="<c:url value="/pessoas/adiciona"/>">
		    Nome: <input type="text" name="pessoa.nome" /><br/>
		    <input type="submit" value="Salvar" />
		</form>
	
	</body>
</html>

Contudo ao clicar em Salvar, o formulario não chega até a camada de controle.

A URL fica da seguinte maneira: http://localhost:8080/Imoveis/pessoas/%3Cc:url%20value=?pessoa.nome=teste
e no console aparece:
12:44:41,921 DEBUG [VRaptor ] VRaptor received a new request
12:44:41,939 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor ResourceLookupInterceptor
12:44:41,939 DEBUG [DefaultResourceTranslator] trying to access /pessoas/%3Cc:url%20value=
12:44:41,939 DEBUG [VRaptor ] VRaptor ended the request

Alguem poderia me ajudar? Obrigado!

5 Respostas

Rafael_Guerreiro

Na tag form, quando não informamos o method, ele manda com o default, que é get.

Então, mude sua tag form para:

&lt;form action="&lt;c:url value="/pessoas"/&gt;" method="post"&gt;

E, no método adiciona, você definiu que a url seria “/pessoas”, então, mude a url também.

F

Rafael Guerreiro:
Na tag form, quando não informamos o method, ele manda com o default, que é get.

Então, mude sua tag form para:

&lt;form action="&lt;c:url value="/pessoas"/&gt;" method="post"&gt;

E, no método adiciona, você definiu que a url seria "/pessoas", então, mude a url também.

Fiz as alterações que você disse Rafael, porém o problema continua o mesmo. Achei estranho que no browser aparece o seguinte, junto com o input:
" method="post"> Nome:
ao inves de aparecer apenas Nome:
como se o jsp estive-se se perdendo nos abre e fecha aspas e tags… mas olhando o codigo parece estar certinho

Rafael_Guerreiro

Faltou você importar a taglib core:
Adicione isso no começo de todas as suas JSPs que usam as tags <c:…

&lt;%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%&gt;
F

Rafael Guerreiro:
Faltou você importar a taglib core:
Adicione isso no começo de todas as suas JSPs que usam as tags <c:…

&lt;%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%&gt;

Muito obrigado Rafael. Funcionou agora =))

Rafael_Guerreiro

Lembre que toda vez que aparecer parte do código HTML na view, tem grandes chances de ser falta do import de taglibs…

Edita o primeiro post e coloca um “[Resolvido]” la no assunto e assim, quem tiver um problema parecido com o seu já vai conseguir resolver.

Criado 31 de março de 2012
Ultima resposta 31 de mar. de 2012
Respostas 5
Participantes 2