Variavel Dentro De Diretiva Jsp - include file=<imprimir variavel aqui>

4 respostas
leonardonaweb

Olá Galera.

Começei a pouco tempo mexer com JAVA/JSP e estou tentando fazer algo e não consegui ainda, veja se alguém pode me ajudar.

na minha jsp tenho a seguinte situação.

Eu estou pegando o valor que vem na url ?area=teste e faço algumas verificações com esta variável area.

depois de feito as verificações eu trato o valor e se for inválido eu nomeio area como notfound por exemplo.

então chamo a diretiva

<%@ include file="includes/area.jsp" %>

bem o que quero fazer e não estou conseguinte é utilizar a variável que tenho e preencher parte do nome do arquivo que vou importar.

já tentei coisas como esta.

<%@ include file="includes/" + area + ".jsp" %>
<%@ include file="includes/<%=area %>.jsp" %>

e tantas outras e nenhuma funciona, será que alguém já teve este obstaculo pela frente e pode me ajudar.

Obrigado!

4 Respostas

gomesrod

Olá!

Provavelmente você não vai conseguir fazer isso porque a diretiva @include é processada antes da compilação do JSP, não é dinâmico a cada requisição.

Dê uma olhada na tag jsp:include, provavelmente será de ajuda pois ela faz a inclusão dinamicamente.

EDITANDO:
Acabei de testar um exemplo aqui, funcionou. Só precisa colocar sua variavel como um atributo de Page ou Request e fazer o seguinte:

<jsp:include page="${variavel}" />
leonardonaweb

o problema que a diretiva do jsp

<jsp:include page="${variavel}" /> ele compila a página antes de incluir, o que quero é adicionar a página sem interpretar, fazer ela se tornar parte da minha index.jsp, com o jsp:include não funcionou.

vou tentar novamente e posto aqui se funcionar.

vlw!

gomesrod

Mas é justamente aí que está o problema - o @include estático é processado antes da compilação, sendo que o parâmetro na URL é enviado a cada chamada em tempo de execução (bem DEPOIS que tudo aconteceu).

Se você precisar MESMO usar o include estático tem que usar IF’s

<%
String area = request.getParameter("area");

if ("area1".equals(area)) { %>
<%@ include file="area1.jsp" %>
<% } else if ("area2".equals(area)) {  %>
<%@ include file="area2.jsp" %>
<% // faz as demais condições ... %>

Como vc viu, vai ficar horrivel :slight_smile:
Faça só se for realmente necessario usar include estático

leonardonaweb

Opa Gamesrod,

Deste modo que vocÊ sugeriu eu sei fazer, digamos que estou tentando quebrar esta barreira.

o sistema que estou fazendo hoje é bastante simples, tanto é que neste momento eu já havia implementado isto com um switch, são cerca de 10 páginas diferentes, até ai tudo bem, funciona ótimo apesar de meio porco, uma vez que JAVA leva em consideração o reaproveitamento de código, vou ter 10 linhas sendo que deveria ter apenas 1, agora se meu sistema fosse um portal como meu site em php é hoje ficaria impossivel implementar desta forma.

Bem de qualquer forma, vou manter com o switch encontro não encontro uma forma razoável de implementar isto, assim que descobrir uma forma mais inteligente de fazer isto, posto aqui para todos também.

Obrigado pela ajuda de todos até o momento.

Leonardo :wink:

Criado 19 de outubro de 2008
Ultima resposta 20 de out. de 2008
Respostas 4
Participantes 2