View ( JSTL ) + VRaptor3

6 respostas
gabrielmassote

Tudo bem Pessoal?

Estou começando a estudar um pouco sobre o VRaptor3, uma vez que já tive contato com o VRaptor2. Só que estou tendo algumas dificuldades com as novas formas de fazer o link entre o view e o vraptor. Consegui acessar informações vindas do vraptor a partir de metodos get, mas em um processo em que adiciono algo, nao consigo enviar dados para minha aplicação.

Segue meu código.

View

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>Documentos</title>
</head>
<body>

<form action="/document">
      Nome: <input type="text" name="document.name" /><br/>
      <input type="submit" />
</form>

</body>
</html>

Controller

package controller;

import java.util.ArrayList;
import java.util.Collection;

import bean.Document;
import br.com.caelum.vraptor.Path;
import br.com.caelum.vraptor.Post;
import br.com.caelum.vraptor.Resource;

@Resource
public class DocumentController {

	private Collection	array = new ArrayList();
	
	@Path("/document")
	public void document() {
		System.out.println(">> page \"document.jsp\" opened");
	}
	
	@Post
	@Path("/document")
	public void add(Document d) {
		array.add(d);
	}
	
	public Collection getDocuments() {
		return array;
	}
	
}

grato pela atenção de vocês. Se tiverem algumas dicas também ficarei grato.
Abraços.

6 Respostas

jonasabreu

@gabrielmassote

A forma de disponibilizar objetos para a view mudou. Não usamos mais getters. Se você só vai disponibilizar um objeto, você pode simplesmente devolve-lo no metodo.

public Collection add(Document d) {

array.add(d);

return array;

}

Ele será disponibilado com o nome collection.

A outra forma de fazer isso é criar um construtor que recebe br.com.caelum.vraptor.Result e usar esse result para disponibilizar os valores para a view:

result.include(“seuArray”, array);

Será disponibilizado na view a seu objeto array com o nome seuArray.

gabrielmassote

Blzura jonas, disponibilizar os dados na view eu consegui. O que não consegui foi passar dados de um formulário para o controller. : /

abraços e obrigado pela ajuda.

jonasabreu

@gabrielmassote

No seu exemplo você precisa adicionar method=“POST” no seu formulário, que daí ele chamaria o seu método add (o padrão de form é usar GET).
Também precisa no seu input colocar d.name (o vraptor usa o nome do parametro agora).

Lucas_Cavalcanti

Gabriel, você tem 2 lógicas que respondem ao @Path("/documents"), uma com o @Post e outra sem nada…

Quando você não coloca nada o vraptor aceita qualquer método… então pra isso funcionar, vc tem que colocar
@Get no outro método que tá sem nada (ou outro método, se for pertinente)

[]'s

gabrielmassote

Ok pessoal,
estou na faculdade e mais tarde em casa vou fazer as modificações.

Posto aqui sobre novidades.

obrigado novamente e abraços.

gabrielmassote

valeu pessoal, consegui fazer a navegacao entre as paginas e tals…estou progredindo…

uma outra duvida que nao consegui encontrar é quando preciso fazer um upload…pro meu metodo add eu passo um Documento e um UploadFile…

so que nao sei como setar esse uploadfile no jsp…os dados para setar os dados do documento ta tranquilo.

abracos

Criado 26 de agosto de 2009
Ultima resposta 4 de set. de 2009
Respostas 6
Participantes 3