Jump to content

Фасеты

Фасеты
Стабильная версия
2.0 / 28 июня 2009 г. ( 28.06.2009 )
Написано в Ява
Операционная система Кросс-платформенный
Тип Система веб-шаблонов
Веб-сайт грани .dev .java .сеть  Edit this on Wikidata
Автономные Facelets
Стабильная версия
1.1.15 / 24 ноября 2009 г. ( 24.11.2009 )
Предварительный выпуск
1,2-разв. / 10 ноября 2006 г. ( 10.11.2006 )
Написано в Ява
Операционная система Кросс-платформенный
Размер 5,07 МБ (в архиве)
Тип Система веб-шаблонов
Лицензия Лицензия Апач 2.0
Веб-сайт грани .java .сеть

В области Facelets вычислений это с открытым исходным кодом, система веб-шаблонов действующая под лицензией Apache и технологией обработчика представлений по умолчанию (также известной как язык объявления представлений) для Jakarta Faces (JSF; ранее Jakarta Server Faces и JavaServer Faces). Для работы языка требуются действительные входные XML- документы. Facelets поддерживает все компоненты пользовательского интерфейса JSF и полностью сосредоточен на построении дерева компонентов JSF, отражающего представление приложения JSF.

Хотя технологии JSP и Faces были улучшены для лучшей совместной работы, Facelets устраняет проблемы, отмеченные в Ханса Бергстена «Улучшение JSF путем сброса JSP». статье [ 1 ]

Facelets опирается на некоторые идеи Apache Tapestry . [ 2 ] [ 3 ] и достаточно похож, чтобы провести сравнение. Концептуально проект аналогичен проекту Tapestry, который рассматривает блоки элементов HTML как компоненты инфраструктуры, поддерживаемые классами Java. Facelets также имеет некоторое сходство с платформой Apache Tiles в отношении поддержки шаблонов и композиции.

Facelets изначально был создан Джейкобом Хукомом в 2005 году. [ 3 ] как отдельный альтернативный язык объявления представлений для JSF 1.1 и JSF 1.2, в которых JSP использовался в качестве языка объявления представлений по умолчанию. Начиная с JSF 2.0, группа экспертов JSF продвигает Facelets в качестве языка объявления представлений по умолчанию. JSP устарел как устаревший вариант. [ 4 ] [ 5 ]

Преобразование элементов

[ редактировать ]

В Facelets теги шаблонов из библиотеки тегов можно вводить в двух формах: напрямую как квалифицированные теги. xml элемент или косвенно через jsfc атрибут произвольного неквалифицированного элемента. В последнем случае компилятор Facelet проигнорирует фактический элемент и обработает его так, как если бы он был задан jsfc атрибут.

В следующем примере показано прямое использование квалифицированных тегов:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 
Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html">
    <body>
        <h:form>
            <h:outputText value="Welcome, #{loggedInUser.name}" disabled="#{empty loggedInUser}" />
            <h:inputText value="#{bean.property}" />
            <h:commandButton value="OK" action="#{bean.doSomething}" /> 
        </h:form>
    </body>
</html>

Используя jsfc атрибут, тот же код можно также выразить в примере, приведенном ниже:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 
Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html">
    <body>
        <form jsfc="h:form">
            <span jsfc="h:outputText" value="Welcome, #{loggedInUser.name}" disabled="#{empty loggedInUser}" />
            <input type="text" jsfc="h:inputText" value="#{bean.property}" />
            <input type="submit" jsfc="h:commandButton" value="OK" action="#{bean.doSomething}" /> 
        </form>
    </body>
</html>

Приведенный выше код можно просмотреть в браузере и отредактировать с помощью обычных инструментов дизайна WYSIWYG . Это невозможно при непосредственном использовании квалифицированных тегов. Тем не менее, непосредственное использование квалифицированных тегов является наиболее популярным способом использования Facelets на практике. [ 6 ] и этот стиль чаще всего используется в книгах и примерах. [ 7 ] [ 8 ]

Шаблонизация

[ редактировать ]

Facelets предоставляет возможность создания шаблонов. [ 9 ] [ 10 ] Файл Facelets может ссылаться на главный шаблон и предоставлять содержимое для заполнителей, которые определяет этот главный шаблон. Файл, ссылающийся на такой шаблон, называется клиентом шаблона . Сами клиенты шаблонов снова могут использоваться в качестве шаблонов для других клиентов шаблонов, и таким образом можно создать иерархию шаблонов.

Ниже показан пример простого главного шаблона:

шаблоны/master_template.xhtml

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 
Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:ui="http://java.sun.com/jsf/facelets">

    <h:head>
        <meta http-equiv="content-type" content="text/html;charset=UTF-8"/>
        <meta http-equiv="pragma" content="no-cache"/>
    </h:head>

    <h:body>
         Standard header text for every page.

         <ui:insert name="body_content" />

         Standard footer text for every page.
    </h:body>
</html>

Приведенный выше код содержит HTML-фрейм по умолчанию и один заполнитель с именем body_content . Клиент шаблона может использовать этот шаблон следующим образом:

шаблон_клиент.xhtml

<ui:composition template="/templates/master_template.xhtml"
    xmlns="http://www.w3.org/1999/xhtml"
    xmlns:ui="http://java.sun.com/jsf/facelets">

    <ui:define name="body_content">
        This is a template client page that uses the master template.		
    </ui:define>
</ui:composition>

В приведенном выше коде используется шаблон /templates/master_template.xhtml и предоставляет содержимое для заполнителя в этом шаблоне. Конечным результатом будет страница с названием template_client.xhtml который имеет содержание /templates/master_template.xhtml, но с <ui:insert name="body_content"/> заменено на «Это страница клиента шаблона, использующая главный шаблон».

Повторное использование контента

[ редактировать ]

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

  • Ссылка на файл
  • Пользовательские теги
  • Композитные компоненты

Ссылка на файл

[ редактировать ]

Самый простой способ включить содержимое другого Facelet — сослаться на него по имени, используя метод <ui:include> ярлык. [ 11 ] [ 12 ] В результате содержимое указанного файла будет напрямую включено в вызывающий Facelet компилятором Facelets. Помимо повторного использования контента в нескольких местах, это можно использовать для разбиения большого Facelet на более мелкие части.

Ниже приведен пример:

шаблоны/master_template.xhtml

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 
Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:ui="http://java.sun.com/jsf/facelets">

    <ui:include src="html_head.xhtml" />

    <h:body>
         Standard header text for every page.

         <ui:insert name="body_content" />

         Standard footer text for every page.
    </h:body>
</html>

html_head.xhtml

<ui:composition
    xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html">

    <h:head>
        <meta http-equiv="content-type" content="text/html;charset=UTF-8"/>
        <meta http-equiv=" pragma" content="no-cache"/>
    </h:head>
</ui:composition>

Пользовательские теги

[ редактировать ]

Facelets поддерживает косвенное включение контента с помощью пользовательских тегов. [ 13 ] Такой пользовательский тег можно связать с Facelet в файле библиотеки тегов. Вхождения этого тега затем будут заменены содержимым связанного Facelet.

Ниже приведен пример этого:

шаблоны/master_template.xhtml

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 
Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:my="http://example.com/my">

    <ui:include src="html_head.xhtml" />

    <h:body>
         Standard header text for every page. 
         <my:spacer>

         <ui:insert name="body_content" />

         Standard footer text for every page.
    </h:body>
</html>

В приведенном выше коде используется тег <my:spacer> чтобы отметить точку в Facelet, куда необходимо вставить контент. Такой тег должен быть объявлен в файле Taglib, где его можно связать с Facelet следующим образом:

пример.taglib.xml

<?xml version="1.0" encoding="UTF-8"?>
<facelet-taglib 
     xmlns="http://java.sun.com/xml/ns/javaee"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facelettaglibrary_2_0.xsd"
     version="2.0">

     <namespace>http://example.com/my</namespace>

     <tag>
          <tag-name>spacer</tag-name>
          <source>spacer.xhtml</source>
     </tag>
</facelet-taglib>

Ниже показан пример того, как может выглядеть реальный контент Facelet:

spacer.xhtml

<ui:composition
    xmlns="http://www.w3.org/1999/xhtml"
    xmlns:ui="http://java.sun.com/jsf/facelets" 
    xmlns:h="http://java.sun.com/jsf/html">

    <h:outputText value="&amp;nbsp;" escape="false"/>
</ui:composition>

Композитные компоненты

[ редактировать ]

Помимо прямого включения контента, Facelets предоставляет механизм составных компонентов, который делает контент доступным как первоклассный компонент JSF. [ 14 ] [ 15 ] Составные компоненты не обязательно объявлять в файле Taglib, их нужно поместить в специальный каталог. По соглашению содержимому автоматически присваивается пространство имен и имя тега. Пространство имен состоит из фиксированной строки « http://java.sun.com/jsf/composite/», объединенной с именем каталога, в котором находится файл содержимого, относительно каталога «ресурсы». [ 16 ] Имя тега становится именем файла без суффикса .xhtml.

Ниже приведен пример этого:

ресурсы/мой/spacer.xhtml

<ui:composition
    xmlns="http://www.w3.org/1999/xhtml"
    xmlns:ui="http://java.sun.com/jsf/facelets" 
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:cc="http://java.sun.com/jsf/composite">
    <cc:interface/>
    <cc:implementation> 
        <h:outputText value="&amp;nbsp;" escape="false"/>
    </cc:implementation>
</ui:composition>

Вышеупомянутый Facelet автоматически доступен как компонент в пространстве имен «http://java.sun.com/jsf/composite/my» и имени тега «spacer».

Параметризированные включает в себя

[ редактировать ]

Для настройки включенного контента Facelets позволяет использовать параметры. С помощью этих параметров объекты можно передавать во включенный контент, где их можно использовать в качестве переменных. Для <ui:include> механизм <ui:param> для этого можно использовать, [ 17 ] тогда как для пользовательских тегов и составных компонентов можно использовать обычные атрибуты тегов. Составные компоненты требуют, чтобы параметры были объявлены в их разделе интерфейса. [ 18 ] тогда как для пользовательских тегов такого требования нет, и значения, предоставленные для произвольных атрибутов, доступны как переменные с тем же именем, что и указанный атрибут.

См. также

[ редактировать ]
  1. ^ Бергстен, Ганс (9 июня 2004 г.). «Улучшение JSF путем сброса JSP» . ONJava . О'Рейли Медиа . Архивировано из оригинала 5 апреля 2018 г.
  2. ^ «Facelets: платформа определения представления JavaServer Faces» . java.net . Архивировано из оригинала 31 декабря 2016 г.
  3. ^ Перейти обратно: а б Хуком, Джейкоб (17 августа 2005 г.). «Внутри Facelets. Часть 1: Введение» . JSFCentral . Архивировано из оригинала 5 января 2020 г.
  4. ^ Бернс, Эд; Шалк, Крис (2009). JavaServer Faces 2.0, Полный справочник . МакГроу-Хилл . ISBN  978-0-07-162509-8 . п. 55: Экспертная группа решила продолжить использование Facelets в качестве основы для новых функций, оставив при этом JSP в качестве уровня обратной совместимости.
  5. ^ Бернс, Эд; Китейн, Роджер, ред. (8 ноября 2010 г.). Спецификация JavaServer Faces, версия 2.1 . JCP (Технический отчет) (изд. MR2). Оракул . JSR-314. п. 10-1: Facelets — это замена JSP, которая с самого начала разрабатывалась с учетом JSF. Новые функции, представленные в версии 2 и более поздних версиях, доступны только авторам страниц, использующим Facelets. JSP сохранен для обратной совместимости.
  6. ^ «Новейшие вопросы о JSF» . stackoverflow.com . Проверено 22 ноября 2016 г.
  7. ^ JavaServer Faces 2.0, Полный справочник Эда Бернса и Криса Шалка
  8. ^ Core JavaServer Faces (3-е издание) Дэвида Гири и Кея С. Хорстманна
  9. ^ «JSF 2 fu, Часть 2: Шаблоны и составные компоненты» . IBM.com . 2 июня 2009 года . Проверено 22 ноября 2016 г.
  10. ^ "ui (Язык декрарации страниц JSF 2.0: вариант Facelets)" . oracle.com . Проверено 22 ноября 2016 г.
  11. ^ "include (Язык декрарации страниц JSF 2.0: вариант Facelets)" . oracle.com . Проверено 22 ноября 2016 г.
  12. ^ «Некоторые вещи, которые следует помнить: Facelets ui:include считаются мощными» . pilhuhn.blogspot.com . 4 декабря 2009 года . Проверено 22 ноября 2016 г.
  13. ^ «Пользовательские компоненты JSF с Facelets» . WordPress.com . 29 февраля 2008 г. Архивировано из оригинала 19 октября 2016 г. . Проверено 22 ноября 2016 г.
  14. ^ "composite(Язык декрарации страниц JSF 2.0: вариант Facelets)" . oracle.com . Проверено 22 ноября 2016 г.
  15. ^ «Что нового в JSF 2?» . WordPress.com . 31 июля 2009 года . Проверено 22 ноября 2016 г.
  16. ^ JSR 314, 10.3.3.1, http://jcp.org/en/jsr/detail?id=314
  17. ^ "param(Язык декрарации страниц JSF 2.0: вариант Facelets)" . oracle.com . Проверено 22 ноября 2016 г.
  18. ^ "интерфейс (язык декрарации страниц JSF 2.0: вариант Facelets)" . oracle.com . Проверено 22 ноября 2016 г.

Библиография

[ редактировать ]
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 792d8ee57c252b48ba5a2b80ec0d187f__1709589480
URL1:https://arc.ask3.ru/arc/aa/79/7f/792d8ee57c252b48ba5a2b80ec0d187f.html
Заголовок, (Title) документа по адресу, URL1:
Facelets - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)