Работа с темой и шаблоном Struts 2
Скачать -Struts2-Theme-Example.zip
В Struts2, когда вы помещаете тег пользовательского интерфейса «s:textfield» на HTML-страницу
Следующие 2 столбца HTML-макета таблицы будут созданы автоматически
Struts 2 использует функцию «Тема и шаблон» для создания предварительно разработанного макета таблицы.
Давайте посмотрим на последовательность:
-
Struts 2 видят тег «s:textfield».
-
Поиск в объявленной теме (если тема не объявлена, будет выбрана тема по умолчанию в формате xhtml).
-
Найдите соответствующий шаблон темы, например «s:textfield → text.ftl», «s:password →password.ftl». Весь предопределенный макет HTML определен в файле ftl.
-
Привязать значение в файл шаблона.
-
Показать окончательную разметку HTML.
Struts 2 тега + файл шаблона темы (ftl) = окончательный код HTML-разметки.
Struts 2 использует фреймворк Freemaker в качестве движка шаблонов по умолчанию, все ftl-файлы пишутся скриптом freemaker. Не беспокойтесь, синтаксис freemarker почти на человеческом языке объясняет слова, его довольно легко выучить.
Работа с темой и шаблоном Struts 2
В этой статье вы создадите новую тему для настройки местоположения сообщения об ошибке. В стандартной теме «xhtml» сообщение об ошибке появится над именем поля.

В новой теме сообщение об ошибке будет отображаться рядом с полем ввода и выделено красным цветом.

1. Извлечь тему
Все файлы темы и шаблона находятся в папке шаблоновstruts2-core.jar. Распакуйте его на свой локальный диск.
Файл ftl - это обычный текстовый файл, вы можете открыть его в любом текстовом редакторе.
2. Создать новую тему
Создайте новую папку, скопируйте все существующие файлы шаблонов xhtml (ftl) и поместите новую папку в папку ресурсов проекта.

Чтобы понять, как Struts 2 находит папку с шаблоном темы, прочтите "ВыборStruts 2 template directory" для более подробной информации.
Часто вам просто нужно скопировать и изменить существующую тему «xhtml», если у вас нет причин не делать этого.
3. Определить новую тему
Определите «struts.ui.theme» и «struts.ui.templateDir», чтобы сообщить Struts 2, где найти новую тему и папку с шаблонами.
struts.xml
... ...
Теперь, когда Struts 2 видит «s:textfield», он найдет тему «example» вместо темы по умолчанию «xhtml». ПрочтитеStruts 2 select a theme для более подробной информации.
4. Изменить тему
Чтобы изменить существующий файл шаблона (ftl), вам может потребоваться битfreemarker syntax.
1. Создайте новый файлerror-message.ftl, чтобы отобразить сообщение об ошибке.
error-message.ftl
<#--
Only show message if errors are available.
This will be done if ActionSupport is used.
-->
<#assign hasFieldErrors = parameters.name?? && fieldErrors?? && fieldErrors[parameters.name]??/>
<#if hasFieldErrors>
<#list fieldErrors[parameters.name] as error>
${error?html}<#t/>
#list>
#if>
2. Изменитеcontrolheader.ftl, добавив новый класс «errorsBg» в тег «td», если есть ошибки.
controlheader.ftl
<#include "/${parameters.templateDir}/example/controlheader-core.ftl" />
class="errorsBg" <#t/>
#if>
<#if parameters.align??>
align="${parameters.align?html}"<#t/>
#if>
><#t/>
3. Изменитеcontrolheader-core.ftl, удалив множество ненужных тегов и добавив новый класс «errorsBg» к тегу «td», если ошибки существуют.
controlheader-core.ftl
<#--
Only show message if errors are available.
This will be done if ActionSupport is used.
-->
<#assign hasFieldErrors = parameters.name?? && fieldErrors?? && fieldErrors[parameters.name]??/>
<#--
if the label position is top,
then give the label its own row in the table
-->
#if>
-->
><#rt/>
<#if parameters.label??>
<#if parameters.id??>
for="${parameters.id?html}" <#t/>
#if>
<#if hasFieldErrors>
class="errorLabel"<#t/>
<#else>
class="label"<#t/>
#if>
><#t/>
<#if parameters.required?default(false) && parameters.requiredposition?default("right") != 'right'>
*<#t/>
#if>
${parameters.label?html}<#t/>
<#if parameters.required?default(false) && parameters.requiredposition?default("right") == 'right'>
*<#t/>
#if>
<#t/>
#if>
<#lt/>
4. Изменитеtext.ftl, добавив новый файл шаблона «error-message.ftl» после «simple/text.ftl».
text.ftl
<#include "/${parameters.templateDir}/${parameters.theme}/controlheader.ftl" />
<#include "/${parameters.templateDir}/simple/text.ftl" />
<#include "/${parameters.templateDir}/example/error-message.ftl" />
<#include "/${parameters.templateDir}/xhtml/controlfooter.ftl" />
5. Поместите CSS на страницу просмотра, чтобы отформатировать сообщение об ошибке.
5. Готово, сохранено, теперь сообщение об ошибке будет отображаться рядом с полем ввода и выделено красным цветом.
Надеюсь, что эта статья может дать вам общее представление о том, как создать или изменить тему в Struts2.
Ссылка
Related
-
Как получить ServletContext в Struts 2
-
Struts 2 <s: checkboxlist> пример нескольких флажков
-
Пример перехватчика Struts 2 execAndWait
-
Struts 2 - Пример режима разработки
-
Пример JSON автозаполнения Struts 2
-
Пример Struts 2 datetimepicker
-
Struts 2 на GAE - Ошибка: результат "null" не найден
-
Пример стека перехватчиков Struts 2
-
Struts 2 Hello World Пример
-
Пример тега Struts 2 i18n
-
Пример Spring Boot Spring Security Thymeleaf
-
Пример структуры Struts Tiles
-
Пример JSF 2 Templating с Facelets
-
Смена темы в PrimeFaces
-
Как изменить тему Eclipse
-
Создать собственную тему в PrimeFaces
-
Удалить все стили CSS по умолчанию из PrimeFaces