Учебники

Struts 2 — Темы и шаблоны

Перед тем, как приступить к изучению этой главы, давайте рассмотрим несколько определений, заданных https://struts.apache.org

Sr.No Срок и описание
1

ТЕГ

Небольшой фрагмент кода, выполняемый из JSP, FreeMarker или Velocity.

2

ШАБЛОН

Часть кода, обычно написанная на FreeMarker, которая может быть отображена с помощью определенных тегов (тегов HTML).

3

ТЕМЫ

Коллекция шаблонов, упакованных вместе, чтобы обеспечить общую функциональность.

ТЕГ

Небольшой фрагмент кода, выполняемый из JSP, FreeMarker или Velocity.

ШАБЛОН

Часть кода, обычно написанная на FreeMarker, которая может быть отображена с помощью определенных тегов (тегов HTML).

ТЕМЫ

Коллекция шаблонов, упакованных вместе, чтобы обеспечить общую функциональность.

Я также предложил бы пройтись по главе « Локализация Struts2», потому что мы возьмем тот же пример еще раз для выполнения нашего упражнения.

При использовании тега Struts 2, такого как <s: submit …>, <s: textfield …> и т. Д., На веб-странице среда Struts 2 генерирует HTML-код с предварительно настроенным стилем и макетом. Struts 2 поставляется с тремя встроенными темами —

Sr.No Тема и описание
1

ПРОСТАЯ тема

Минимальная тема без «наворотов». Например, тег textfield отображает тег HTML <input /> без метки, проверки, сообщения об ошибках или любого другого форматирования или функциональности.

2

Тема XHTML

Это тема по умолчанию, используемая в Struts 2, и предоставляет все основы, которые предоставляет эта простая тема, и добавляет несколько функций, таких как стандартная разметка таблицы из двух столбцов для HTML, метки для каждого из HTML, проверка и отчеты об ошибках и т. Д.

3

CSS_XHTML тема

Эта тема предоставляет все основы, которые предоставляет простая тема, и добавляет несколько функций, таких как стандартный двухколонный макет на основе CSS, с использованием <div> для тегов HTML Struts, надписей для каждого из тегов HTML Struts, размещенных в соответствии с таблицей стилей CSS. ,

ПРОСТАЯ тема

Минимальная тема без «наворотов». Например, тег textfield отображает тег HTML <input /> без метки, проверки, сообщения об ошибках или любого другого форматирования или функциональности.

Тема XHTML

Это тема по умолчанию, используемая в Struts 2, и предоставляет все основы, которые предоставляет эта простая тема, и добавляет несколько функций, таких как стандартная разметка таблицы из двух столбцов для HTML, метки для каждого из HTML, проверка и отчеты об ошибках и т. Д.

CSS_XHTML тема

Эта тема предоставляет все основы, которые предоставляет простая тема, и добавляет несколько функций, таких как стандартный двухколонный макет на основе CSS, с использованием <div> для тегов HTML Struts, надписей для каждого из тегов HTML Struts, размещенных в соответствии с таблицей стилей CSS. ,

Как упоминалось выше, если вы не укажете тему, Struts 2 по умолчанию будет использовать тему xhtml. Например, этот тег выбора Struts 2 —

<s:textfield name = "name" label = "Name" />

генерирует следующую разметку HTML —

<tr>

   <td class="tdLabel">
      <label for = "empinfo_name" class="label">Name:</label>
   </td>
   <td>
      <input type = "text" name = "name" value = "" id = "empinfo_name"/>
   </td>

</tr>

Здесь empinfo — это имя действия, определенное в файле struts.xml.

Выбор Темы

Вы можете указать тему в соответствии со структурой тегов Struts 2 или использовать один из следующих методов, чтобы указать, какую тему должен использовать Struts 2.

  • Атрибут темы по определенному тегу

  • Атрибут темы в теге формы тега

  • Атрибут области страницы с именем «тема»

  • Атрибут области запроса с именем «тема»

  • Атрибут области сеанса с именем «тема»

  • Атрибут области приложения с именем «тема»

  • Свойство struts.ui.theme в struts.properties (по умолчанию — xhtml)

Атрибут темы по определенному тегу

Атрибут темы в теге формы тега

Атрибут области страницы с именем «тема»

Атрибут области запроса с именем «тема»

Атрибут области сеанса с именем «тема»

Атрибут области приложения с именем «тема»

Свойство struts.ui.theme в struts.properties (по умолчанию — xhtml)

Ниже приведен синтаксис для их указания на уровне тегов, если вы хотите использовать разные темы для разных тегов.

<s:textfield name = "name" label = "Name" theme="xhtml"/>

Поскольку использовать темы для каждого тега не очень практично, мы просто можем указать правило в файле struts.properties, используя следующие теги:

# Standard UI theme
struts.ui.theme = xhtml
# Directory where theme template resides
struts.ui.templateDir = template
# Sets the default template type. Either ftl, vm, or jsp
struts.ui.templateSuffix = ftl

Ниже приведен результат, который мы выбрали из главы по локализации, где мы использовали тему по умолчанию с параметром struts.ui.theme = xhtml в файле struts-default.properties, который по умолчанию поставляется в файле struts2-core.xy.z.jar.

Английский выход

Как работает тема?

Для данной темы каждый тег Struts имеет связанный шаблон, такой как s: textfield → text.ftl и s: password → password.ftl и т. Д.

Эти файлы шаблонов упакованы в файл struts2-core.xy.z.jar. Эти файлы шаблонов сохраняют предопределенную разметку HTML для каждого тега.

Таким образом, среда Struts 2 генерирует окончательный код HTML-разметки, используя теги Sturts и связанные шаблоны.

Struts 2 tags + Associated template file = Final HTML markup code.

Шаблоны по умолчанию написаны во FreeMarker и имеют расширение .ftl .

Вы также можете создавать свои шаблоны, используя скорость или JSP, и соответственно устанавливать конфигурацию в struts.properties, используя struts.ui.templateSuffix и struts.ui.templateDir .

Создание новых тем

Самый простой способ создать новую тему — скопировать любую из существующих файлов темы / шаблона и внести необходимые изменения.

Давайте начнем с создания папки с именем template в WebContent / WEBINF / classes и подпапки с названием нашей новой темы. Например, WebContent / WEB-INF / classes / template / mytheme .

Отсюда вы можете начать создавать шаблоны с нуля, или вы также можете скопировать шаблоны из дистрибутива Struts2, где вы можете изменить их при необходимости в будущем.

Мы собираемся изменить существующий шаблон по умолчанию xhtml для целей обучения. Теперь давайте скопируем содержимое из struts2-core-xyzjar / template / xhtml в наш каталог тем и изменим только файл WebContent / WEBINF / classes / template / mytheme / control .ftl. Когда мы откроем control.ftl, который будет иметь следующие строки —

<table class="${parameters.cssClass?default('wwFormTable')?html}"<#rt/>
<#if parameters.cssStyle??> style="${parameters.cssStyle?html}"<#rt/>
</#if>
>

Давайте изменим вышеуказанный файл control.ftl, чтобы иметь следующий контент —

<table style = "border:1px solid black;">

Если вы проверите form.ftl, то обнаружите, что в этом файле используется control.ftl , но form.ftl ссылается на этот файл из темы xhtml. Итак, давайте изменим это следующим образом —

<#include "/${parameters.templateDir}/xhtml/form-validate.ftl" />
<#include "/${parameters.templateDir}/simple/form-common.ftl" />
<#if (parameters.validate?default(false))>
   onreset = "${parameters.onreset?default('clearErrorMessages(this);\
   clearErrorLabels(this);')}"
   
<#else>
   <#if parameters.onreset??>
      onreset="${parameters.onreset?html}"
   </#if>
</#if>
#include "/${parameters.templateDir}/mytheme/control.ftl" />

Я предполагаю, что у вас не было бы большого понимания языка шаблонов FreeMarker , но вы можете получить хорошее представление о том, что нужно сделать, посмотрев на файлы .ftl.

Однако давайте сохраним указанные выше изменения и вернемся к нашему примеру локализации и создайте файл WebContent / WEB-INF / classes / struts.properties со следующим содержимым

# Customized them
struts.ui.theme = mytheme
# Directory where theme template resides
struts.ui.templateDir = template
# Sets the template type to ftl.
struts.ui.templateSuffix = ftl

Теперь после этого изменения щелкните правой кнопкой мыши имя проекта и выберите « Экспорт»> «Файл WAR», чтобы создать файл «War». Затем разверните эту WAR в каталоге веб-приложений Tomcat. Наконец, запустите сервер Tomcat и попробуйте получить доступ к URL-адресу http: // localhost: 8080 / HelloWorldStruts2 . Это создаст следующий экран —

Тема и Шаблон

Вы можете видеть рамку вокруг компонента формы, которая является результатом изменения, которое мы сделали в нашей теме после копирования его из темы xhtml. Если вы приложите мало усилий для изучения FreeMarker, то вы сможете создавать и изменять свои темы очень легко.

Я надеюсь, что теперь у вас есть общее представление о темах и шаблонах Sturts 2 , не так ли?