VRaptor: Iclude de logic em JSP

Boa tarde pessoal,
Estou começando um projeto, utilizando o VRaptor, e não encontrei na documentação como fazer isso.
Preciso incluir uma logic dentro de um jsp.

Exemplo:

[code]SiteController {

@Get
public void index() {
    //... Coloca no contexto, objetos para serem utilizados na view index.jsp.
    // Vai redirecionar para index.jsp
}

@Get
public void productFilter() {
    //... Coloca no contexto, objetos para serem utilizados na view productFilter.jsp.
    // Vai redirecionar para productFilter.jsp
}

}[/code]

/site/productFilter.jsp:

[code]


  • ${filtro}
[/code]

/site/index.jsp:

[code]


Meu conteúdo
// !!! PRECISO EXECUTAR A LOGICA SiteController.productFilter() E INCLUIR O JSP RESULTADO AQUI!!!
[/code]

Olá bruno_kiau,
essa lógica é representada por um URI, então para fazer o que deseja basta usar jsp:include/

ex:

<div id="conteudo">  
    Meu conteúdo  
</div>  
<div id="filtros">  
    <jsp:include page="/controlador/action"/>
</div> 

Que coisa bizarra, meu deus. Não faça isso.

Simplesmente no método index busque todos os dados que você precisa na view. Essa coisa que fazer include é gambiarra.

plic_ploc, tentei da maneira que vc indicou, mas não funcionou.

jsp:

[color=red]ERRO[/color]

[quote]GRAVE: Servlet.service() for servlet default threw exception
java.io.FileNotFoundException: The requested resource (/vraptor-blank-project/filters/brands) is not available
at org.apache.catalina.servlets.DefaultServlet.serveResource(DefaultServlet.java:773)
at org.apache.catalina.servlets.DefaultServlet.doGet(DefaultServlet.java:411)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:684)
at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:593)
at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:530)
at org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:927)
[/quote]

Se eu acessar a uri /vraptor-blank-project/filters/brands diretamente pelo browser, funciona normalmente.

garcia-jj,
Pode explicar por favor, porque isso é gambiarra?
Me desculpe, mas gambiarra, é implementar a mesma lógica que carrega uma view várias vezes.
Imagine que eu tenha que incluir essa view em várias outras, e que a lógica para carregar os dados necessários para exibi-la seja bastante complexa.
Quero que apenas uma lógica seja responsável e saiba carregar os dados necessários para cada view.

Aguardo sugestões para o problema acima. Vlws

O include não deve ser usado dessa forma. Include é para você adicionar um outro JSP que tenha partes da tela como, por exemplo, um menu. Include não deve ser usado para acessar uma outra lógica. Fazer isso é gambiarra.

Você precisa avaliar onde precisará desses outros objetos e criar um decorator para as outras lógicas, que possa carregar esses outros objetos que você precisa para a view.

uma alternativa a isso é incluir a segunda lógica via ajax:

//jquery
$('#filtros').load('/controller/logica');

Lucas, não posso fazer desta maneira, pois teria problemas com SEO.
Vou ter que fazer a logic principal gerar todos os dados mesmo e separar apenas os jsps.

se for pra separar em jsps, vc pode dar include direto nas jsps… daí na lógica vc inclui os resultados do que seriam as outras lógicas (os result.include)

vc pode até chamar as outras lógicas diretamente se vc quiser.

[quote=garcia-jj]Que coisa bizarra, meu deus. Não faça isso.

Simplesmente no método index busque todos os dados que você precisa na view. Essa coisa que fazer include é gambiarra.[/quote]

Entendo seu ponto de vista garcia-jj. O que não entendo é a animosidade.
Em um mundo perfeito essa solução não poderia ser aplicada. O que infelizmente não é o caso.

[quote=plic_ploc]Entendo seu ponto de vista garcia-jj. O que não entendo é a animosidade.
Em um mundo perfeito essa solução não poderia ser aplicada. O que infelizmente não é o caso.[/quote]

Mas hein?!