2009-12-02 18 views

cevap

1

Yukarıdaki kod çalışmıyor. vb sayfasında, oturuma, kapsama alınmadığı bir ArrayList() üzerine foreach:

animals.jsp

<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %> 
<c:forEach var="animal" items="${animals}"> 
    <c:set var="animalName" value="${animal}"/> 
    <c:out value="${animalName}"/> 
</c:forEach> 
+4

OP zaten JSTL kullanıyordu, cevabımdan bahsetmek gereksizdi. Etiketlerin ayrıştırılabilmesi için taglib'in bildirilmesi yeterli. Ayrıca, taglib URI'niz çok eskidir. Arada bir/jsp olmalı. – BalusC

11

JSTL bu tür şeyler yapmak için tasarlanmamıştır. Bu gerçekten bir servlet sınıfı tarafından kontrol edilecek olan iş mantığına aittir. /animals bir url-pattern üzerine

protected void doGet(HttpServletRequest request, HttpServletResponse response) { 
    List<String> animals = new ArrayList<String>(); 
    animals.add("Sylvester"); 
    animals.add("Goofy"); 
    animals.add("Mickey"); 
    request.setAttribute("animals", animals); 
    request.getRequestDispatcher("/WEB-INF/animals.jsp").forward(request, response); 
} 

haritada bu:

sevmediği bir sunucu uygulamasını oluşturun.

Şimdi (doğrudan erişimi engellemek için WEB-INF yerleştirin) /WEB-INF/animals.jsp bir JSP dosyası oluşturmak:

<c:forEach items="${animals}" var="animal"> 
    ${animal}<br> 
</c:forEach> 

servlet olarak jsp:useBean gerek yok zaten belirledi.

Şimdi servlet + JSP'yi http://example.com/context/animals numaralı telefondan arayın.

+0

o c çalıştırmak mümkündür dosyasında yerleştirilecek olan kod satırları aşağıda? Örneğin, eğer arteryist bir alıcı/ayarlayıcı ile bir sınıfta bir özellik olsaydı. –

+2

@robert: Kesinlikle. Bu sınıfı yalnızca kapsam içine koyun ve 'items =" $ {bean.list} "' '' '' '{{'}} 'nin, listeyi döndüren 'getList()' yöntemine sahip olan bu sınıfa işaret eder. – BalusC

+1

Teşekkürler, çok hızlısınız! –