2010-02-05 36 views
41

Tôi có một lớp java mà bộ một thuộc tính servlet đến một đối tượng HashMap:Sử dụng <c:forEach> với HashMap

request.setAttribute("types", da.getSecurityTypes()); 

nơi request là một đối tượng HttpServletRequest, và da.getSecurityTypes() trả về một đối tượng HashMap.

Có cách nào để đi qua bộ sưu tập HashMap bằng c: foreach hoặc một số thẻ JSTL khác không?

Tôi đã suy nghĩ:

<c:forEach var="type" items="${types}"> 
       ... 
    </c:forEach> 

Hoặc nếu nó không thể được thực hiện, làm thế nào người ta sẽ làm cho một thẻ tùy chỉnh để xử lý này?

Việc sử dụng mã Java trong trang JSP của tôi là phương sách cuối cùng của tôi và tôi muốn biết liệu điều này có thể thực hiện được với JSTL hay không.

Cảm ơn, Jonas.

Trả lời

95

Có, điều này hoàn toàn có thể chấp nhận được.

Khi bạn sử dụng <c:forEach> để lặp qua một Map, mỗi mục trong lần lặp lại là một phiên bản Map.Entry. Vì vậy, đưa ra ví dụ của bạn:

<c:forEach var="type" items="${types}"> 
    Key is ${type.key} 
    Value is ${type.value} 
</c:forEach> 
5

Nó hoạt động, bạn sẽ có type.keytype.value để phát trong vòng lặp.

Các vấn đề liên quan