Utlisation des balises "include" en dynamique ?

Bonjour à tous,

Je suis actuellement en train d’écrire une page JSP dans laquelle j’aimerais utiliser une balise du type :

<%@ include file="mod__common.jsp" %>

Sauf que le nom de la page de code appelée n’est pas statique, il dépend d’une liste obtenue dynamiquement par la page appelante.

J’ai essayé des solutions comme :

<% String fileName="mod__common.jsp";%>
<%@ include file=fileName %>

ou encore

<% String fileName="mod__common.jsp";%>
<%@ include file="<%=fileName%>" %>

Mais bien sur ça ne marche pas.

Mon objectif n’est pas de récupérer le code HTML renvoyé par “mod__common.jsp” mais bien d’insérer le code Java qui s’y trouve dans le code Java de la page appelante.
Je sais que cette méthode est un non-sens puisqu’en fait j’essaye d’inclure dans une page déjà compilée (car déjà en cours d’éxécution) une page qui ne l’est pas encore. Mais c’est vraiment ce dont j’ai besoin. J’ai l’habitude de le faire en PHP mais j’avoue qu’en JSP je ne vois pas comment m’en sortir.

Si vous avez des idées, elles seront les bienvenues :wink:

David.

Essaye <jsp:include /> non? Bien que je ne sache pas si ça te permettra d’évaluer les expressions EL ou Scriptlet.

Au passage, tu es peut être en train de le faire mal: je ne sais pas ce que tu veux faire, mais tu peux certainement faire mieux et moins bidouilles.

Salut,

Le <jsp:include /> permet de récupérer le contenu d’une page jsp exécutée de façon indépendante. Elle ne me permet donc pas de récupérer depuis la page appelante les variables qui y ont été positionnées :frowning:

En fait je scanne le contenu d’un répertoire qui contient les procédures d’installation de modules, le nombre et le nom des modules qui y sont est complètement variable. C’est pour cela que j’ai besoin d’intégrer des pages dont j’ignore l’existance.

Je pourrais très bien contourner le problème en passant ces pages au format XML et en les parsant mais je dois rester compatible avec le pendant déjà mis en place en PHP.
Edité le 01/02/2008 à 09:30

Oh. Je vois ton souci alors.

N’oublie pas une chose sacro sainte en Java, et dans un langage typé, c’est que tu dois déclarer tes variables.

Et dans ce cas, ça ne laisse aucune possibilité de faire ce que tu veux - du moins, si ça consiste bien à récupérer des variables déclarées dans un autre fichier.

Ton pendant en php, tu le reprend en Java je suppose? A mon humble avis, tu ferais mieux - si ça t’es possible - de ne pas hésiter à le repenser.

Une JSP ne devrait contenir que des taglibs, balises HTML, et ça se limite à ça. Peu ou pas de code Java, ce n’est pas le but.

Vois le comme un moteur de template (et d’ailleurs, si tu peux te servir d’un moteur de template, tu pourras je pense faire ce que tu veux)

Effectivement je recode en Java un site web assez complexe que j’ai développé en PHP mais comme je devrais par la suite maintenir les 2 versions (PHP et Java) , je désire limiter au maximum les transformations dues au passage au Java pour ne pas avoir à trop modifier le PHP.

Pour ce qui est des déclarations des variables, mon but est de les déclarer dans la page appelante, de les renseigner dans la page appelée et de les exploiter dans la page appelante.

Je pense que je vais surement passer par un JavaBean s’il n’y a pas de solution simple pour l’Include :expressionless:

Tu peux également utiliser une Map<String, Object>. Tu aurais ainsi un seul objet (genre “foo”) et tu piocherais dedans (ex: ${foo[‘x’]}).
Edité le 01/02/2008 à 10:38