在JSP中,是否可以打印名称在另一个变量中的变量的值?

时间:2009-08-21 10:49:46

标签: java jsp java-ee

我遇到的问题是这样的 有变量

<core:set var="type">*one of: load,migrate, or ...* </core:set>

加载,迁移,的值是一张地图。现在,我想根据类型打印这些值?它有可能吗?

2 个答案:

答案 0 :(得分:1)

如果他们不在地图中,那很难。

我假设你想按照perl的工作方式去做:你可以输入

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

这在jsp中不起作用。

如果是地图,您可以${mapValue[key]}。有关变量部分附近this page的信息

答案 1 :(得分:1)

这将达到与@Chii的答案相同的效果:

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

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

如果您需要这样做,那么它将会列出页面范围中的所有属性:

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

不要认为有一种方法可以在JSTL中执行此操作,但通常在调试期间只需要这样做,因此我对scriptlet代码没有这样的问题。