Combo Anunhado com Vraptor + JSTL...to apanhando!

5 respostas
R

Caros, sou novato e to tentando fazer uma tarefa extremamente simples: Um combo de Transportes, que qdo selecionado o Transporte desejado, popula o segundo combo das linhas disponiveis.
Ocorre que já tentei de diversas formas e não rolou…O Vraptor é o 3, e tenho certeza que está funfando pq estou utilizando em outros pedaços do código, ocorre que, qdo seleciono o transporte, o sistema diz que não encontrou o caminho.

Vejam o código:

Javascript

function carregalinhasnovo(transp) {
		$('#combolinha').load('logica/linha?linha.transporteLinha='+transp);
			
	}

Obs já me certifiquei de que a informação está sendo passada pelo javascript.

Controller:

public List<Linha> linha(Linha linha) throws Exception{
	EstacaoDAO estacaodao = new EstacaoDAO();

	
	return estacaodao.listaLinhaTransporte(linha.gettransporteLinha());

	
}

@Path("/linha")
public void linha() {

}

Debugando vi que o sistema carrega o objeto com os dados do banco, normalmente.

Jsp que popularia o combo (linha.jsp):

<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<c:forEach var="linha" items="${linhaList}">
<option>a</option>
<option value="${linha.codBancoLinha}">${linha.nomeLinha}</option>
<option>${linha.nomeLinha}</option>
</c:forEach>

Erro apresentado, após a passagem pelo controller, creio que na chamada ao jsp:

GET http://127.0.0.1:8081/vraptor-blank-project/logica/linha?linha.transporteLinha=CPTM 404 (Not Found)

Agradeço a todos pela ajuda!

Ronnie Santos

5 Respostas

R

Detalhe, já tentei usando:

result.redirectTo(this).linha();

e assim ele encontra o caminho, mas não popula o combo (pelo que testei o objeto chega vazio…).

abs

Lucas_Cavalcanti

cuidado:

$('#combolinha').load('logica/linha?linha.transporteLinha='+transp);

vc tá usando url relativa à página atual… deveria usar a url absoluta.

se esse javascript está dentro do jsp, vc precisa colocar:

$('#combolinha').load('${pageContext.request.contextPath}/logica/linha?linha.transporteLinha='+transp);

ou algo equivalente, como o <c:url

R

Lucas, valeu pelo toque, alterei agora:

function carregalinhasnovo(transp) {
		$('#combolinha').load('<c:url value="/logica/linha"/>?linha.transporteLinha='+transp);
			
	}

Entretanto ainda não matei a charada…o erro ainda persiste…

Abs
Ronnie

Lucas_Cavalcanti

se está com @Path("/linha") no método e nenhum @Path no controller, a url deveria começar com /linha: <c:url value="/linha"/>

R

Valeu Lucas! Sua ajuda me abriu uma luz aqui!

fiz algumas alterações:

O JSP ficou assim:

function carregalinhasnovo(transp) {  
    $('#combolinha').load('<c:url value="/logica/linha"/>?linha.transporteLinha='+transp);  
    
          
}
O controller ficou assim:
public List<Linha> linha(Linha linha) throws Exception{  
    EstacaoDAO estacaodao = new EstacaoDAO();  
  
      
    return estacaodao.listaLinhaTransporte(linha.gettransporteLinha());  
  
      
}  
  
  
  
@Path("/logica/linha/{linha}")  
public void linha() {  
  
}

Mas a comida de bola também foi na estrutura de pastas.....na raiz eu realmente não tinha jogado a pasta desse controller que fiz depois (logica)..
Ou seja, criei a pasta logica dentro de JSP e movi o linha.jsp pra lá (jsp que contem o forEach).

Agora funfou!
Abs e muito obrigado pela ajuda!
Ronnie

Criado 25 de abril de 2012
Ultima resposta 7 de mai. de 2012
Respostas 5
Participantes 2