JSTL c: forEach на странице JSP не работает

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

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

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="[[email protected], [email protected], [email protected], [email protected], [email protected]]">
                <option value="">

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

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

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

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

4 голоса | спросил Beth 17 J000000Sunday11 2011, 17:45:17

1 ответ


0

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

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

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

ответил BalusC 17 J000000Sunday11 2011, 17:58:37

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132