2009-08-21 4 views

Répondre

1

Cela permettra d'atteindre le même effet que @ réponse de Chii:

<c:set var="attributeName" value="foo"/> 

<% 
    out.println(pageContext.getAttribute(attributeName) + " = " + pageContext.getAttribute(pageContext.getAttribute(attributeName))); 
%> 

Ce, méchant comme il est, liste tous les attributs dans le périmètre de la page si vous avez besoin de le faire:

<% 
    for (String attributeName : pageContext.getAttributeNamesInScope(PageContext.PAGE_SCOPE)) 
    { 
    out.println(attributeName + " = " + pageContext.getAttribute(attributeName)); 
    } 
%> 

ne pense pas qu'il ya une façon de le faire dans JSTL, mais vous normalement besoin de cette mise au point au cours, donc je n'ai pas un tel problème avec le code scriptlet.

+0

ah homme, s'il vous plaît ne pas y aller! mes yeux saignent !! – Chii

+0

@ Chihi - ouais, les scriptlets ne sont pas les plus jolis, mais vous pouvez toujours écrire une balise personnalisée pour tout cacher :-) –

1

s'ils ne sont pas dans une carte, c'est difficile.

Je suppose que vous vouliez faire de la façon dont Perl fonctionne: où vous pouvez taper

$foo = "stuff"; 
$varName = "foo"; 
print $$varName; #prints "stuff" 

qui ne marche pas dans le travail jsp.

Si c'est une carte, vous pouvez faire ${mapValue[key]}. Infos sur this page près de la section Variables

+1

Toutes les variables d'une JSP sont dans l'équivalent d'une carte - javax.servlet.jsp.PageContext, qui fournit les méthodes dont vous aurez besoin pour interroger les noms de variables et leurs valeurs pour chaque portée. –

+0

vous avez raison, je voulais la façon dont vous l'avez fait en perl, aussi la valeur de * stuff * est la carte, ** suff ** n'est dans aucune carte. –

Questions connexes