JSTL в Spring MVC. Базовые понятия и примеры использования на странице jsp

Пример использования JSTL тегов на странице jsp в приложении Spring MVC.

Обзор приложения Spring MVC + AngularJS + Bootstrap + HTML5
Используемые технологии и библиотеки
  • Spring MVC 4.2.4.Release
  • Logback 1.0.13
  • SLF4J 1.7.13
  • Maven 3.2.5
  • IntelliJ IDEA 15.0.2

1. Описание задачи

Пример использования основных тегов JSTL (c:if, c:forEach, test, c:set, c:catch) на одной странице jsp.

2. Структура проекта

jstlStructure

Добавлен один контроллер JSTLController и представление для него — jstl.jsp.

3. Настройки

В проекте ничего не поменялось и не было добавлено относительно предыдущих частей (смотрите содержание). Для этой части в принципе достаточно настроек из 1-2 статьи, где были подключены зависимости jstl.

4. Контроллер

Был создан простенький класс контроллер, который заполняет тестовыми данными объект и передает его на jsp страницу.

5. Представление jsp

Представление (jsp страница) — основная часть данной статьи. Рассмотрим его подробнее.

c:if, ${not empty Object}

Первый тег jstl, который здесь используется, является обычной проверкой if-else.

Если объект resultObject (создается в контроллере по запросу getUser() ) не пустой, то дальше будет выполнен код внутри тега.

jstlFormat

c:forEach

По запросу get All Users будет выполнен метод listUsers(), который сформирует объект resultObjectList и, после проверки на пустоту, будет построена таблица с данными. И тут мы переходим к другому часто используемому тегу: c:forEach.

В него передается список объектов (атрибут items=’ ‘ ). Каждый объект в списке (Например arrayList.get(0), ..get(1) и т.д.) будет связан с атрибутом var=’userVar’. Теперь для каждого объекта из списка items будет выполнен код внутри тега <c:forEach> … </c:forEach>. Как видите, для построения таблицы мы можем использовать поля внутри класса объекта из списка. Кстати в данном случае используется класс User:

get и set у объекта

Запись вида

Означает, что у объекта из переменной var=userVar будет вызван метод userVar.getIdUser(). Т.е. используется шаблон вида get + имя свойства с большой буквы. Аналогично может выполняться операция setIdUser(), в случаях записи.

jstlForEach

escapeXML

Далее показан атрибут escapeXML у тега c:out. Он позволяет обрабатывать html код «как есть». Легче пояснить на примере:

В переменной resultHTML содержится строка <font color=’red’><b>Test Color Red</b></font>. В результате работы атрибута escapeXML это будет выглядеть на странице так.

jstlEscapeXML

Как видите у текста или появляется стиль (font color=red) или нет.

fmt

У jstl есть возможность использования форматирования для разных видов данных. Например для числового формата или даты используется следующая запись:

Вместо даты вида Thu Mar 31 23:19:25 MSK 2016 мы получаем приведенную к шаблону дату. То же самое с числовым форматом:

jstlNotEmpty

 

 

Исходные коды

MVC_AngularJS_Html5 full project — полный проект Spring MVC + AngularJS + Bootstrap + HTML5.

8. JSTL examples — код для этой части

Обзор приложения Spring MVC + AngularJS + Bootstrap + HTML5

 

 

Share Button
9
11647 Total Views 1 Views Today

3 thoughts on “JSTL в Spring MVC. Базовые понятия и примеры использования на странице jsp

  1. Степан Пельмегов:

    jstl/jstl исправьте в контроллере на /jstl/jstl .

    3 часа ошибку искал.

    1. Проверил. Работает так как написано. Но ваш комментарий может кому-нибудь поможет. Возможно по разному настроен сервер приложений и какой-либо xml файл. В результате у вас работает только с абсолютными путями.

    2. msk:

      В настройках конфигурации бина InternalResourceViewResolver надо добавить слеш в конце префикса.

      Должно получиться так /WEB-INF/view/

      Либо везде в контроллерах дописывать вначале слеш…

Добавить комментарий