Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在JSP中循环使用HashMap?_Java_Jsp_Loops_Hashmap - Fatal编程技术网

Java 如何在JSP中循环使用HashMap?

Java 如何在JSP中循环使用HashMap?,java,jsp,loops,hashmap,Java,Jsp,Loops,Hashmap,如何在JSP中循环使用HashMap <% HashMap<String, String> countries = MainUtils.getCountries(l); %> <select name="country"> <% // Here I need to loop through countries. %> </select> 根据您希望在循环中完成的内容,请迭代其中一项: co

如何在JSP中循环使用
HashMap

<%
    HashMap<String, String> countries = MainUtils.getCountries(l);
%>

<select name="country">
    <% 
        // Here I need to loop through countries.
    %>
</select>

根据您希望在循环中完成的内容,请迭代其中一项:

  • countries.keySet()
  • countries.entrySet()
  • countries.values()

与您在普通Java代码中使用的方法相同

for (Map.Entry<String, String> entry : countries.entrySet()) {
    String key = entry.getKey();
    String value = entry.getValue();
    // ...
}
因此,您的特定问题可以通过以下方式解决:


${country.value}
您需要一个
Servlet
ServletContextListener
${countries}
放置在所需的范围内。如果此列表应基于请求,则使用
Servlet
doGet()

在这两种情况下,
国家
将在${countries}中提供

希望这有帮助

另见:

    • 下面的代码对我很有用

      首先,我在服务器端定义了
      partnerTypesMap
      ,如下所示

      Map<String, String> partnerTypes = new HashMap<>();
      
      在呈现页面时,我使用下面的
      foreach
      逐个打印它们

      <c:forEach items="${partnerTypesMap}" var="partnerTypesMap">
            <form:option value="${partnerTypesMap['value']}">${partnerTypesMap['key']}</form:option>
      </c:forEach>
      
      
      ${partnerTypesMap['key']}
      
      顺便说一句,
      HashMap
      本质上是无序的。您确定不需要
      TreeMap
      (按键自动排序)或
      LinkedHashMap
      (维护插入顺序)?是的,通过此设置,我可以获得所有键集,但如何将其集成到html的选择字段中?这并没有回答特定的问题JSP@Khue:是的,您还可以在会话中放置属性。我只是不明白为什么要在多个会话中复制应用程序范围的数据。我认为是基于会话的信息。谢谢你非常好的解释。我相信答案是显而易见的,但是-为什么Scriptlet被认为是糟糕的实践?在由于维护遗留应用程序而缺少JSTL的情况下,这是我唯一的选择。@Zibbobz:文本“糟糕的做法”是一个链接。点击它。
      Map<String, String> partnerTypes = new HashMap<>();
      
      model.addAttribute("partnerTypesMap", partnerTypes);
      
      <c:forEach items="${partnerTypesMap}" var="partnerTypesMap">
            <form:option value="${partnerTypesMap['value']}">${partnerTypesMap['key']}</form:option>
      </c:forEach>