2013-06-23 2 views
0

Я действительно новичок в JSTL и не понимаю, как именно работать с каждым циклом. Но скажите в моем java bean-элементе. У меня очень простой цикл while, который проходит и захватывает свойства объекта. Я получаю ожидаемый вывод из цикла, когда я его запишу. Это просто строка, которая выглядит примерно так: headerTest, headerMetaTest. Здесь не код из моего Java Bean:Java - Basic для каждого цикла с JSTL

Iterator<Resource> serviceList = null; 
serviceList = resource.getChild("header").listChildren(); 

while(serviceList.hasNext()){ 
Resource child = serviceList.next(); 
headerTitle = child.adaptTo(ValueMap.class).get("headerTitle", ""); 
headerMeta = child.adaptTo(ValueMap.class).get("headerMeta, ""); 
} 

Однако, когда я пытаюсь получить доступ к нему в JSTL я не получаю ничего:

<c:forEach var="child" items="${serviceList}"> 
    <p>${child.headerTitle}</p> 
    <p>${child.headerMeta}</p> 
</c:forEach> 

загадочную часть, я не получаю никаких ошибок, ничего просто возвращается. Есть идеи? Действительно, действительно потерянный на этом, и любая помощь очень ценится. Я новичок в этом, поэтому примеры кода - это хороший способ для меня учиться и, если возможно, будет отличным.

+0

Вы добавляете в список каналов в контексте страницы? – Lesleh

+0

Я устанавливаю его на ресурс, вы ссылаетесь на его установку в pageContext JSTL? Если это так, я не совсем уверен, как вы это сделаете. –

+0

Страница jsp не знает, что такое $ {serviceList}, поэтому он ничего не выводит. – Lesleh

ответ

1

В JSP-страницах должно быть указано четыре области действия.

страница, запрос, сеанс и приложение.

JSTL-метки обычно будут искать атрибуты в этом порядке.

страница отображает атрибуты, присвоенные во время обработки страницы, обычно это довольно редких.

запрос относится к атрибутам, присвоенным ServletRequest, они являются наиболее распространенными атрибутами для использования в качестве последних для длительности запроса страницы и затем отбрасываются.

например

public void processMyServlet(ServletRequest request, ServletResponse){ 
    ... 
    request.setAttribute("myAttribute",attributeValue); 
    ... 
} 

сессия для атрибутов, назначенных HttpSession. Это полезно для значений пользователей , которые часто используются во время сеанса пользователя.

например

public void processMyServlet(HttpServletRequest request, HttpServletResponse){ 
    ... 
    request.getSession().setAttribute("myAttribute",attributeValue); 
    ... 
} 

приложение для атрибутов, присвоенных ServletContext, это полезно для значений, которые соответствуют по применению и не изменяются.

например

public void processMyServlet(HttpServletRequest request, HttpServletResponse){ 
    ... 
    request.getServletContext().setAttribute("myAttribute",attributeValue); 
    ... 
} 

Если вы звоните сервлет, который отправляет ваш JSP, то, по крайней мере, вы будете нуждаться.

request.setAttribute("serviceList",myResourceCollection); 

где-то во время обработки сервлетов.

если вы делаете все в JSP, то вам нужно что-то вроде

<% java code to create collection 

    request.setAttribute("serviceList",myResourceCollection); 
%>