SORU
2 Aralık 2009, ÇARŞAMBA


Nasıl JSP HashMap bir döngü?

Nasıl JSP HashMap bir döngü olabilir miyim?

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

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

CEVAP
2 Aralık 2009, ÇARŞAMBA


Normal Java kodu, yaptığınız gibi sadece aynı şekilde.

for (Map.Entry<String, String> entry : countries.entrySet()) {
    String key = entry.getKey();
    String value = entry.getValue();
    // ...
}

Ancak,kod parçacıklarıJSP dosyaları (raw Java kod <% %> o şeyler) poor practice. bir olarak kabul edilir JSTL (sadece /WEB-INF/lib JAR dosyasını indir ve JSP üst taglibs gerekli ilan) yüklemek için tavsiye ederim. Diğerleri arasında yinelemek olabilir <c:forEach> etiketi var Mapler. Her yineleme seni ihbar etti getKey() getValue() yöntemleri Map.Entry bir geri verecektir.

Burada temel bir örnek:

<%@ 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>

Böylece belirli bir sorunu aşağıdaki gibi çözülebilir

<%@ 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>

Servlet ServletContextListener istenilen kapsamında ${countries} yerleştirmeniz gerekir. Bu liste talep tabanlı olmalı, Servlet'in 22**:. kullanın sonra

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);
}

Ya eğer bu liste uygulaması-geniş bir sabit olması gerekiyorsa, o zaman ServletContextListener'sadece bir kez ve hafızada yüklü olacak, böylece 25* s *: . kullanın

public void contextInitialized(ServletContextEvent event) {
    Map<String, String> countries = MainUtils.getCountries();
    event.getServletContext().setAttribute("countries", countries);
}

Her iki durumda da countries ${countries} EL mevcut olacak.

Bu yardımcı olur umarım.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Apple

    Apple

    22 HAZİRAN 2005
  • EvilControllers

    EvilControll

    20 Ocak 2008
  • SuppressedStorm

    SuppressedSt

    11 AĞUSTOS 2013