JSTL c: forEach на странице JSP не работает - PullRequest
4 голосов
/ 17 июля 2011

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

В своем сервлете я создаю список стран и устанавливаю его в свой запрос:

List<Country> countryList = (new CountryListForm(countryDAO)).getList();
request.setAttribute(ATTRIBUTE_COUNTRY_LIST, countryList);

Когда я отлаживаю свой сервлет, я вижу, что список стран создается и помещается в запрос.

Далее в моем JSP я получаю список стран, перебираю его и показываюзначения в раскрывающемся списке:

        <select id="clubCountryId" name="clubCountryId">
            <c:forEach var="country" items="${countryList}">
                <option value="${country.id}">
                    ${fn:escapeXml(country.name)}
                </option>
            </c:forEach>
        </select>

Когда я отлаживаю это, я вижу, что countryList находится в моем запросе, и страны присутствуют.Тем не менее, я ничего не получаю в раскрывающемся списке.Когда я просматриваю источник моей страницы (в Eclipse), я вижу следующее:

        <select id="clubCountryId" name="clubCountryId">
            <c:forEach var="country" items="[eu.ctt.pojo.Country@c7057c, eu.ctt.pojo.Country@391da0, eu.ctt.pojo.Country@1c7f37d, eu.ctt.pojo.Country@42a6eb, eu.ctt.pojo.Country@1dcc4cd]">
                <option value="">

                </option>
            </c:forEach>
        </select>

Как вы видите, мои пять объектов присутствуют, но он просто не хочет перебирать их.У меня есть другие страницы, где я делаю то же самое (список стран, но не в раскрывающемся списке), и у меня нет проблем.

У кого-нибудь есть предложения?

Заранее спасибо!

1 Ответ

4 голосов
/ 17 июля 2011

Теги JSTL появляются в источнике HTML, это неправильно. Предполагается, что он будет работать на стороне сервера и полностью исчезнет при выводе HTML. Это может произойти, если вы не объявили taglib в верхней части JSP. Добавьте следующую строку в начало JSP, чтобы запустить основные теги JSTL:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

Если это в свою очередь приводит к жалобе на отсутствующий URI TLD в журналах сервера, то вам необходимо убедиться, что вы установили JSTL . Возможно, вы используете контейнер, который не поставляется со встроенным JSTL, например Tomcat или Jetty.

...