Понимание View Templates

Шаблон проектирования Model-View-Controller (MVC) применяется в качестве способа разделения задач в приложении. В принципе, логика приложения или контроллер отделены от технологии, использемой для отображения информации пользователю, слой представления. Модель осуществляет взаимодействие между контроллером и слоем представления.

В приложении, в слое представления может использоваться одна или более технологий для отображения представления. Spring web-приложения поддерживают различные варианты представлений, но чаще в виде шаблонов. Эти технологии описаны как "templates", потому что они предоставляют язык разметки с доступом к атрибутам модели в процессе рендеринга на стороне сервера.

Библиотеки шаблонов представления

Ниже представлен список библиотек шаблонов представления, которые, в частности, совместимы с Spring:

Сравнение JSP c Thymeleaf

Ниже представлены примеры, иллюстрирующие, как отобразить одно и то же содержимое с JSP и Thymeleaf.

JSP

Заметьте, что в этом примере используются JSTL выражения.

<c:url var="hotelsUrl" value="/hotels"/>
<form:form modelAttribute="searchCriteria" action="${hotelsUrl}" method="get" cssClass="inline">
    <span class="errors span-18">
        <form:errors path="*"/>
    </span>
    <fieldset>
        <div class="span-8">
            <label for="searchString">SeaString:</label>
            <form:input id="searchString" path="searchString"/>
        </div>
        ...
    </fieldset>
</form:form>

Thymeleaf

В этом примере, разметка разметка совмещена со стандартным HTML.

<form action="#" th:object="${searchCriteria}" th:action="@{/hotels}" method="get" class="inline">
    <ul th:if="${#fields.hasErrors('*')}" class="errors span-18">
        <li th:each="err : ${#fields.errors('*')}" th:text="${err}">Input is incorrect</li>
    </ul>
    <fieldset>
        <div class="span-8">
            <label for="searchString">Search String:</label>
            <input type="text" id="searchString" th:field="*{searchString}" />
        </div>
        ...
    </fieldset>
</form>

С оригинальным текстом урока вы можете ознакомиться на spring.io

comments powered by Disqus