首页 >Java >java教程 >如何使用 JSTL 迭代 JSP 中的 HashMap 并避免使用 Scriptlet?

如何使用 JSTL 迭代 JSP 中的 HashMap 并避免使用 Scriptlet?

Linda Hamilton
Linda Hamilton原创
2024-12-17 06:04:26880浏览

How to Iterate Through HashMaps in JSP Using JSTL and Avoid Scriptlets?

在 JSP 中循环遍历 HashMap

在 JSP 中遍历 HashMap 与在纯 Java 代码中遍历 HashMap 类似。利用以下循环结构:


<pre class="brush:php;toolbar:false">String key = entry.getKey();
String value = entry.getValue();
// ...

}

Scriptlet 缺点

虽然 scriptlet 以前很常见,但它们现在现在被认为是不好的做法。相反,我们建议使用 JSTL,它提供了 。用于迭代 Maps 的标记,在每次迭代中使用 getKey() 和 getValue() 方法返回 Map.Entry 对象。

<p><foreach items="“${地图}”" var="entry"><pre class="brush:php;toolbar:false">Key = ${entry.key}, value = ${entry.value}<br>


JSP 解决方案

解决您的具体问题问题:


<p><select name="country"></p><pre class="brush:php;toolbar:false"><c:forEach items=&quot;${countries}&quot; var=&quot;country&quot;>
    <option value=&quot;${country.key}&quot;>${country.value}</option>
</c:forEach>


要使 ${countries} 在请求的范围内可访问,请使用 Servlet 或ServletContextListener.

示例用例

以下是使用 Servlet 或ServletContextListener:

<pre class="brush:php;toolbar:false">Map<String, String> countries = MainUtils.getCountries();
request.setAttribute(&quot;countries&quot;, countries);
request.getRequestDispatcher(&quot;/WEB-INF/page.jsp&quot;).forward(request, response);</p>

}

< ;p>或者:

<pre class="brush:php;toolbar:false">Map<String, String> countries = MainUtils.getCountries();
event.getServletContext().setAttribute(&quot;countries&quot;, countries);

}

进一步阅读


  • 使用 JSTL 迭代列表和映射的元素标记

  • 使用 JSTL 迭代 HashMap 中的 ArrayList
  • 使用特殊的自动启动 Servlet 进行启动时初始化和共享申请数据

    以上是如何使用 JSTL 迭代 JSP 中的 HashMap 并避免使用 Scriptlet?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn