JSP에서 HashMap을 반복하는 방법은 무엇입니까?
HashMap
JSP에서 루프를 어떻게 반복 할 수 있습니까?
<%
HashMap<String, String> countries = MainUtils.getCountries(l);
%>
<select name="country">
<%
// Here I need to loop through countries.
%>
</select>
일반적인 Java 코드에서와 같은 방식입니다.
for (Map.Entry<String, String> entry : countries.entrySet()) {
String key = entry.getKey();
String value = entry.getValue();
// ...
}
그러나 , 스크립틀릿 (JSP 파일, 그 원시 자바 코드 <% %>
일)는 고려 가난한 연습 . JSTL 을 설치하는 것이 좋습니다 (JAR 파일을 드롭하고 JSP 상단에 /WEB-INF/lib
필요한 taglib 를 선언하십시오 ). 그것은 <c:forEach>
다른 것들 사이에서 반복 할 수 있는 태그를 가지고 있습니다 Map
. 모든 반복은 당신에게 줄 것이다 Map.Entry
차례가 다시 getKey()
와 getValue()
방법을.
기본 예는 다음과 같습니다.
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<c:forEach items="${map}" var="entry">
Key = ${entry.key}, value = ${entry.value}<br>
</c:forEach>
따라서 특정 문제는 다음과 같이 해결할 수 있습니다.
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<select name="country">
<c:forEach items="${countries}" var="country">
<option value="${country.key}">${country.value}</option>
</c:forEach>
</select>
원하는 범위 에 배치 하려면 a Servlet
또는 a ServletContextListener
가 필요합니다 ${countries}
. 이 목록은 요청 기반이 될 것으로 예상되는 경우, 사용 Servlet
의를 doGet()
:
protected void doGet(HttpServletRequest request, HttpServletResponse response) {
Map<String, String> countries = MainUtils.getCountries();
request.setAttribute("countries", countries);
request.getRequestDispatcher("/WEB-INF/page.jsp").forward(request, response);
}
또는이 목록은 다음 사용하는 응용 프로그램 전체 일정하다고 가정하는 경우 ServletContextListener
의 contextInitialized()
이 한 번만로드되고 메모리에 보존 조치 할 수 있도록 :
public void contextInitialized(ServletContextEvent event) {
Map<String, String> countries = MainUtils.getCountries();
event.getServletContext().setAttribute("countries", countries);
}
두 경우 모두에 의해 ELcountries
에서 사용할 수 있습니다 .${countries}
도움이 되었기를 바랍니다.
또한보십시오:
- JSTL <c : forEach> 태그를 사용하여 List 및 Map 요소를 반복
- <c : forEach>에서 중첩 된 맵을 반복하는 방법
- JSTL을 사용하여 HashMap 내에서 ArrayList를 반복하는 방법은 무엇입니까?
- 특수 자동 시작 서블릿을 사용하여 시작시 초기화하고 애플리케이션 데이터 공유
루프 내에서 달성하고자하는 것에 따라 대신 다음 중 하나를 반복하십시오.
countries.keySet()
countries.entrySet()
countries.values()
Below code works for me
first I defined the partnerTypesMap
like below in the server side,
Map<String, String> partnerTypes = new HashMap<>();
after adding values to it I added the object to model
,
model.addAttribute("partnerTypesMap", partnerTypes);
When rendering the page I use below foreach
to print them one by one.
<c:forEach items="${partnerTypesMap}" var="partnerTypesMap">
<form:option value="${partnerTypesMap['value']}">${partnerTypesMap['key']}</form:option>
</c:forEach>
참고URL : https://stackoverflow.com/questions/1835683/how-to-loop-through-a-hashmap-in-jsp
'Programing' 카테고리의 다른 글
라벨 태그의 너비를 어떻게 제어 할 수 있습니까? (0) | 2020.06.21 |
---|---|
double을 int로 변환 (0) | 2020.06.21 |
Java 익명 클래스에서 "this"에 액세스 (0) | 2020.06.21 |
Java에서 타이머를 설정하는 방법은 무엇입니까? (0) | 2020.06.21 |
Mac에서 sshfs로 마운트 된 디렉토리를 마운트 해제하십시오. (0) | 2020.06.20 |