我已经将一个 Java Map 对象导入到我正在使用的 JSP 文件中。我需要做的是获取该映射的每个条目并将其放入 JSP 中的表中。我不会表现出我对 scriptlet 非常了解,但据我所知,它们在运行之前都经过评估,然后放入代码中,这使得访问各个条目成为一项挑战。我目前通过在地图上执行 toString 然后使用正则表达式解析信息来使其工作,但我想更安全地执行此操作。
这怎么可能实现?
我已经将一个 Java Map 对象导入到我正在使用的 JSP 文件中。我需要做的是获取该映射的每个条目并将其放入 JSP 中的表中。我不会表现出我对 scriptlet 非常了解,但据我所知,它们在运行之前都经过评估,然后放入代码中,这使得访问各个条目成为一项挑战。我目前通过在地图上执行 toString 然后使用正则表达式解析信息来使其工作,但我想更安全地执行此操作。
这怎么可能实现?
您对在运行之前评估 scriptlet 的假设是错误的。Scriptlet 的工作方式类似于以下示例:
<p> Hello world </p>
<%
while (something) {
doSomeStuff();
}
%>
<p> Bye </p>
被编译成这样的东西:
stream.write("<p> Hello world </p>");
while (something) {
doSomeStuff();
}
stream.write("<p> Bye </p>");
本质上,所有不在 scriptlet 中的内容都被放入 中stream.write
,而所有内容 - 都被插入而不做任何更改。在大多数支持 JSP 的应用程序服务器中,您甚至可以找到那些预编译的 JSP servlet 并查看生成的代码。此外,这种方法使其速度非常快。
因此,在您的情况下,编写 scriptlet 将没有问题。
我假设您的 Map 是Map<Integer,String>()
类型;
<ul>
<%
for(Integer key : yourmap.keySet()) {
String value = data.get(key);
System.out.printf("%s = %s%n", key, value);
%>
<li><%= value%></li>
<%
}
%>
</ul>