Duvida com VRaptor, adicionar e listar na mesma página [RESOLVIDO]

Pessoal estou com uma duvida boba, porem nao estou conseguindo fazer adicionar e listar na mesma pagina.

meu codigo esta assim.

o controller

package br.com.iw.simi.controller;

import java.util.List;
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.Resource;
import br.com.caelum.vraptor.Result;
import br.com.iw.simi.DAO.TerrenoDAO;
import br.com.iw.simi.modelo.Terreno;

@Resource
public class TerrenosController {

	private final Result result;
	private final TerrenoDAO dao;

	public TerrenosController(TerrenoDAO dao, Result result) {
		this.dao = dao;
		this.result = result;

	}

	@Post
	@Path("/terrenos")
	public void adiciona(Terreno terreno) {

		dao.adiciona(terreno);
		result.redirectTo(TerrenosController.class).adiciona();
	}

	@Delete
	@Path("/terreno/{id}")
	public void remove(Integer id) {
		Terreno terrenoParaRemover = dao.busca(id);
		dao.remove(terrenoParaRemover);

		result.redirectTo(TerrenosController.class).lista();
	}

	@Get
	@Path("/terrenos/{id}")
	public Terreno edita(Integer id) {
		return dao.busca(id);
	}

	@Get
	@Path("/terrenos/novo")
	public void adiciona() {

	}

	@Get
	@Path("/terrenos")
	public List<Terreno> lista() {
		return dao.lista();
	}

}

e o jsp

<form id="form-terrenos" action="<c:url value="/terrenos" />" method="POST">
	<fieldset>
		<legend>Adicionar Terreno</legend>
		
		<table>
			<tr>
				<td><label for = "terrenoM2">Área do terreno M2:</label></td>
				<td><input id = "terrenoM2" class="required" minlength="0.1" type="text" name="terreno.terrenoM2" /></td>
			</tr>
			
			<tr>
				<td><label for = "testadaMts">Testada Mts:</label></td>
				<td><input id = "testadaMts" class="required" minlength="0.1" type="text" name="terreno.testadaMts" /></td>
			</tr>
		
		<tr>
			<td><label for="usoTerreno">Uso do terreno:</label></td>
			<td>
				<select id="usoTerreno" class="required" name="terreno.usoTerreno">
  					<option value="1">Vago</option>
 					<option value="2">Construido</option>
  					<option value="3">Const. em and.</option>
 					<option value="4">Const. paralisada</option>
 					<option value="5">Outros</option>
 				</select>
 			</td>		
		</tr>
		
		<tr>
			<td><label for="benfeitorias">Benfeitorias:</label></td>
			<td>
				<select id="benfeitorias" class="required" name="terreno.benfeitorias">
  					<option value="1">Muro e calçada</option>
 					<option value="2">Só muro</option>
  					<option value="3">Só calçada</option>
 					<option value="4">Sem benfeitorias</option>
				</select>
			</td>	
		</tr>
		
		<tr>
			<td><label for="tipoPropriedade">Tipo de Propriedade:</label></td>
			<td>
				<select id="tipoPropriedade" class="required" name="terreno.tipoPropriedade">
  					<option value="1">Particular</option>
 					<option value="2">Municipal</option>
  					<option value="3">Estadual</option>
 					<option value="4">Federal</option>
 					<option value="5">Religioso</option>
 					<option value="6">Outros</option>
				</select>
			</td>
		</tr>
		
		<tr>
			<td><label for="superficie">Superfície:</label></td>
			<td>
				<select id="superficie" class="required" name="terreno.superficie">
  					<option value="1">Normal</option>
 					<option value="2">Inundável</option>
  					<option value="3">Brejoso</option>
 					<option value="4">Sujeito a desmoronamento</option>
				</select>
			</td>
		</tr>
		
		<tr>
			<td><label for="situacao">Situação:</label></td>
			<td>
				<select id="situacao" class="required" name="terreno.situacao">
  					<option value="1">Meio de quadra</option>
 					<option value="2">Esquina / + 1 Frente</option>
  					<option value="3">Encravado</option>
 					<option value="4">Vila / Servidão</option>
 					<option value="5">Beira de rio</option>
				</select>
			</td>
		</tr>
		
		<tr>
			<td><label for="topografia">Topografia:</label></td>
			<td>
				<select id="topografia" class="required" name="terreno.topografia">
  					<option value="1">Plano</option>
 					<option value="2">Pouco acidentado</option>
  					<option value="3">Acidentado</option>
 					<option value="4">Muito acidentado</option>
				</select>
			</td>
		</tr>
		
		<tr>
			<td><label for="nivelLog">Nivel Logradouro:</label></td>
			<td>
				<select id="nivelLog" class="required" name="terreno.nivelLog">
  					<option value="1">Aclive</option>
 					<option value="2">Declive</option>
				</select>
			</td>
		</tr>
		
		<tr>
			<td><button type="submit">Adicionar</button></td>
		</tr>
		</table>
	</fieldset>
	
</form>

<table width="99%" border="1" cellpadding="1" cellspacing="0">
	<thead>
		<tr>
			<th>Terreno M2</th>
			<th>Testada Mts</th>
			<th>Uso</th>
			<th>Benfeitorias</th>
			<th>Propriedade</th>
			<th>Superficie</th>
			<th>Situacao</th>
			<th>Topografica</th>
			<th>Nivel Log.</th>
		</tr>
	</thead>
	<tbody>
		<c:forEach items="${terrenoList}" var="terreno">
			<tr>
				<td><c:url value="${terreno.terrenoM2}" /></td>
				<td><c:url value="${terreno.testadaMts}" /></td>
				<td><c:url value="${terreno.usoTerreno}"/></td>
				<td><c:url value="${terreno.benfeitorias}"/></td>
				<td><c:url value="${terreno.tipoPropriedade}"/></td>
				<td><c:url value="${terreno.superficie}"/></td>
				<td><c:url value="${terreno.situacao}"/></td>
				<td><c:url value="${terreno.topografia}"/></td>
				<td><c:url value="${terreno.nivelLog}"/></td>
			</tr>
		</c:forEach>
	</tbody>
</table>

vlw desde já agradeço.

quando vc adiciona, vc deveria estar retornando a lista, já que vc está utilizando apenas este método.

retorne a lista ou inclue ela no result, acho que deve funcionar

qual eh o nome do jsp?
é:
“novo.jsp” ow “lista.jsp”

pq por padrão o VRaptor irá incluir a lista de terrenos para a página “/terrenos/lista.jsp”
essa é a convenção dele, e é isso que ele espera que você faça. Se você não quiser fazer isso terá que ow incluir manualmente a lista no result, ow sobreescrever essa convenção do vraptor.

Olá joeroots o nome do jsp é adiciona.jsp, mas por convencao do VRaptor é acessado pela Url: localhost:8080/projeto/terrenos/novo

        @Get
	@Path("/terrenos/novo")
	public void adiciona() {

	}

Mario.fts como eu faria esse include?

pois eu tenho convencoes diferentes, uma é a citada acima, para adicionar e outra para listar. abaixo…

        @Get
	@Path("/terrenos")
	public List<Terreno> lista() {
		return dao.lista();
	}

para listar separadamente funciona certinho. mais quando eu tento fazer os dois na mesma view, eu nao entendi como funciona ainda…

Vlw pessoal

você não entendeu, digo a convenção do local fixo das pastas. ex:
O VRaptor irá buscar no path:
/WEB-INF/jsp/terrenos/lista.jsp
o que quer dizer:
/WEB-INF/jsp/{controller}/{metodo}

se você criar uma página jsp com esse nome e “lista.jsp” e tentar acessar ${terrenoList} no seu jsp irá funcionar.
Porque o vraptor irá entender que essa página é a referencia de public List lista(); e então irá incluir automaticamente no result da página a variavel terrenoList.

ow você pode no método adiciona, fazer a seguinte chamada:

@Get   
    @Path("/terrenos/novo")   
    public void adiciona() {   
         result.include("terrenoList", dao.lista());
    }

Joeroots, era isto mesmo que eu queria, funcionou perfeitamente, o result.include, muito simples, muito bom mesmo… vlw muito obrigado.