Обзор и использование технологии Facelets
Java как язык программирования, разработанный компанией Sun Microsystems. Технология Facelets как альтернатива обработчику представлений на основе JSP, ее распространенность и применение на сегодня. Группировка тегов и обработка пробельных символов.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | статья |
Язык | русский |
Дата добавления | 11.03.2019 |
Размер файла | 21,5 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
2
Размещено на http://www.allbest.ru/
Обзор и использование технологии Facelets
- ВВЕДЕНИЕ
- 1. ТЕГИ FACELETS
- 2. ОРГАНИЗАЦИЯ КОНКРЕТНЫХ ПРЕДСТАВЛЕНИЙ
- 3. ДЕКОРАТОРЫ
- 4. ОБРАБОТКА ПРОБЕЛЬНЫХ СИМВОЛОВ
- ЗАКЛЮЧЕНИЕ
- СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ
Введение
Java - язык программирования, разработанный компанией Sun Microsystems. Приложения Java обычно компилируются в специальный байт-код, поэтому они могут работать на любой виртуальной Java-машине (JVM) независимо от компьютерной архитектуры. Дата официального выпуска - 23 мая 1995 года. Сегодня технология Java предоставляет средства для превращения статических Web-страниц в интерактивные динамические документы и для создания распределенных не зависящих от платформы приложений.
JavaServer Faces (JSF) - это фреймворк для веб-приложений, написанный на Java.
Он служит для того, чтобы облегчать разработку пользовательских интерфейсов для Java EE-приложений. В отличие от прочих MVC-фреймворков, которые управляются запросами, подход JSF основывается на использовании компонентов. Состояние компонентов пользовательского интерфейса сохраняется когда пользователь запрашивает новую страницу и затем восстанавливается, если запрос повторяется. Для отображения данных обычно используется JSP, Facelets, но JSF можно приспособить и под другие технологии, например XUL [2].
Как правило, пользовательские интерфейсы в ходе разработки веб-приложений подвержены наиболее частым изменениям и во многих случаях состоят из кода, на разработку которого затрачиваются большие усилия, с трудом допускающего корректировку, поэтому процесс создания пользовательских интерфейсов становится дорогостоящим. В данном реферате показано, как можно реализовать гибкие пользовательские интерфейсы на основе платформы Facelets.
Facelets - открытый веб-фреймворк, распространяемый под лицензией Apache license. Технология управления представлением для JavaServer Faces (JSF). Фреймворк требует для функционирования валидные XML документы. Это означает, что вебстраницы должны быть созданы с использованием языка разметки XHTML. Facelets поддерживает все компоненты JSF и создаёт собственное дерево компонент, отражая view для JSF-приложения.
Технология Facelets была первоначально разработана как альтернатива обработчику представлений на основе JSP, применявшемуся в версиях JSF 1.x. В версии JSF 2.0 технология Facelets заменила JSP в качестве применявшейся по умолчанию в JSF технологии представления. В Facelets полностью устранена широко известная проблема смешанного контента, присущая JavaServer Pages. Платформа Facelets не только является лучшим обработчиком представлений, но и поддерживает целый ряд тегов, предназначенных для реализации шаблонов и других целей.
1. Теги Facelets
Теги Facelets могут быть сгруппированы по нескольким категориям.
- Включение содержимого из других страниц XHTML (ui: include).
- Формирование страниц из шаблонов (ui:composition, ui:decorate, ui:insert, ui:define, ui:param).
- Создание пользовательских компонентов без написания кода Java (u i:component, ui: fragment).
- Различные утилиты (ui: debug, ui: remove, ui: repeat).
Чтобы иметь возможность использовать теги Facelets, необходимо добавить следующее объявление пространства имен к конкретным страницам JSF: xnlns: ui=http://java, sun. com/jsf/facelets.
Таблица 1. Теги Facelets
Тег |
Описание |
|
ui: include |
Включает содержимое из другого файла XML |
|
ui: composition |
Будучи используемым без атрибута template, тег u i: composition определяет последовательность элементов, которая может быть вставлена в другом месте. Композиция может иметь переменные части(указанные с помощью дочерних тегов u i: insert). Если тег u i: composition используется с атрибутом template, загружается шаблон. Дочерние теги этого тега определяют переменные части шаблона. |
|
ui:decorate |
Будучи используемым без атрибута template, тег u i:decorate определяет страницу, в которую могут быть вставлены части. Переменные части задаются с помощью дочерних тегов u i: insert. Если тег u i: composition используется с атрибутом template, загружается шаблон. Дочерние теги этого тега определяют переменные части шаблона. |
|
ui:param |
Задает параметр, передаваемый во включенный файл или шаблон. |
|
ui:define |
Определяет содержимое, вставляемое в шаблон с помощью соответствующих тегов ui: insert. |
|
ui:insert |
Вставляет содержимое в шаблон. Это содержимое определяется в теге, который загружает шаблон. |
|
ui:component |
Идентичен ui: composition, за исключением того, чтосоздает компонент, добавляемый к дереву компонентов |
|
ui:fragment |
Идентичен ui: decorate, кроме того, что создает компонент, добавляемый к дереву компонентов |
|
ui:debug |
Тег ui: debug позволяет пользователю вывести на экран окно отладки, в котором показаны иерархия компонентов для текущей страницы и переменные с областью действия приложения |
|
ui:remove |
Реализация JSF удаляет все, что находится в тегах u i:remove |
|
ui:repeat |
Выполняет итерации по списку, массиву, результирующему набору или отдельному объекту. |
В дополнение к этому технология Facelets позволяет определять специализированные теги. Специализированный тег внешне напоминает обычный тег JSF, но в нем используется механизм композиции Facelets для вставки содержимого на конкретную страницу.
Чтобы можно было использовать такой тег, его необходимо объявить в файле библиотеки тегов.
Также при вызове шаблона можно передавать параметры двумя способами: с помощью тега ui: define и тега ui: param. Как уже было сказано, тег ui: define используется для предоставления разметки, вставляемой в шаблон. В отличие от этого тег ui:param задает переменную языка выражений для использования в шаблоне:
<ui:composition template= «templates/masterTemplate.xhtml»> <ui:param name= «currentDate» value= «ff {someBean.currentDate}»/> </ui:composition>
В соответствующем шаблоне можно обращаться к параметру с помощью выражения языка выражений, как в следующем примере:
<body> Today's date: #{сurrentDate}"/> </body>
Ter ui:param может также использоваться как дочерний по отношению к тегу ui:include.
2. Организация конкретных представлений
По существу, задание шаблона приводит к разбиению представления на две страницы XHTML: на ту, которая определяет общие функциональные средства (шаблон), и ту, с помощью которой задаются функции, различающиеся между представлениями (композиция).
Несмотря на то что эта методика применения шаблонов достаточно проста, она позволяет создавать весьма доступные для корректировки и расширяемые пользовательские интерфейсы [3].
Отдельные части содержимого включаются каждым представлением с помощью тега ui: include. Например, на странице входа включение заголовка происходит следующим образом:
<ui:define name= «heading»>
<ui:include src= «sections/login/header.xhtml»/>
</ui:define>
Благодаря тому, что отдельные части содержимого определяются в своих собственных файлах, становится проще определять местонахождение кода при внесении изменений в то или иное представление. Например, если потребуется что-то изменить в боковом меню представления входа в систему, то будет известно, что для этого достаточно отредактировать файл sections/login/sidebarLeft. xhtml, не затрудняя себя поиском этого определения бокового меню в одном большом файле. Разбиение на разделы способствует упрощению чтения, понимания и внесения изменений на конкретные страницы, поскольку каждый файл содержит небольшой объем разметки.
3. Декораторы
Если применяемый набор страниц является достаточно сложным, то подход на основе платформы Tiles предоставляет разработчику более широкие возможности. А что касается простого приложения, то трактовка каждой страницы как сборки разделов, повидимому, является чрезмерно усложненной. В большей степени сосредоточенным на содержимом является подход на основе декораторов. При этом страницы разрабатываются как обычно, но содержимое заключается в теги ui: deco rate, которые имеют атрибут template. Подход на основе декораторов - это применяемый в технологии Facelets аналог платформы Sitemesh (http://www.opensymphony.com/siternesh/). При использовании платформы Sitemesh, как и в подходе на основе декораторов, вначале осуществляется проектирование содержимого, а затем его оформление [5].
В своей простейшей форме декоратор может использоваться примерно так:
<! 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» >
<head> <title> #{msgs.loginTitle} </title> </head>
<body>
<ui:decorate template=»/templates/masterDecorator.xhtml»>
<! - Содержимое, подлежащее оформлению ->
<h:form>
<h:panelGrid columns=» 2»>
#{msgs.namePrompt}
<h:inputText id= «name» value= "#{user.name}"/>
#{msgs.passwordPrompt}
<h:inputSecret id= «password» value= «fl {user.password}»/>
</h:panelGrid>
<p>
<h:commandButton value="#{msgs.loginButtonText}'
action= «planetarium»/>
</p>
</h:form>
</ui:decorate>
</body>
</html>
С помощью шаблона осуществляется оформление его содержимого определенным способом, скажем, с применением заголовка и левого бокового меню. Стоит обратить внимание на то, что теги, находящиеся вне тега ui: decorate, не удаляются (как было бы в случае применения тега ui: composition). В рассматриваемом примере автор страницы определил название страницы непосредственно на самой странице без применения шаблонов.
Шаблон определен следующим образом:
Необязательный заголовок XHTML
<ui:composition>
<h:outputStylesheet library= «css» name= «styles.css» target= «body»/>
<div id= «heading»>
<ui:insert name=» heading»>Default header</ui:insert>
</div>
<div id=» sidebarLeft»>
<ui:insert name= «sidebarLeft»>Default sidebar</ui:insert>
</div>
<div id= «content»>
<ui:insert/>
</div>
</ui:composition>
Необязательный нижний колонтитул XHTML
Следует отметить, что тег <ui:insert/> не имеет атрибута name. Он вставляет все теги, дочерние по отношению к тегу ui: decorate. Заслуживает также внимания тег ui: composition, который окружает команды макета в шаблоне. В данном случае не требуется, чтобы теги заголовка и нижнего колонтитула XHTML становились частью шаблона - страницы, которая уже оформляется с применением собственных тегов XHTML. При использовании декораторов, как и При использовании композиции, можно переопределять значения по умолчанию с помощью тегов ui:define, как в следующем примере:
<ui:decorate template=»/templates/masterDecorator.xhtml»> <ui:define name= «heading»>Special Header</ui:define> Т екст </ui:decorate>
Различие между тегами ui: composition и ui: decorator является главным образом концептуальным. Одни и те же результаты могут быть получены с помощью того и другого тега. В технологии Facelets эти теги просто рассматриваются как взаимно дополняющие конструкции: тег ui: composition удаляет все окружающее содержимое, тогда как применение тега ui: decorator к этому не приводит (и поэтому требует наличия тега ui: composition в шаблоне) [1].
4. Обработка пробельных символов
То, как организована обработка пробельных символов на страницах Facelets, может вызвать удивление. По умолчанию пробельные символы вокруг компонентов удаляются.
Например, рассмотрим следующие теги:
<h:outputText value= "#{msgs.name}"/>
<h:inputText value= "#{user.-name}"/>
Они отделены друг от друга пробельными символами (символом новой строки после тега h: outputText и пробелами перед тегом h: inputText). Но реализация Facelets не преобразует эти пробельные символы в текстовый компонент. И это на самом деле правильно, поскольку в противном случае последовательность тегов не действовала бы должным образом в теге h: panelG rid. Но если на странице заданы подряд две ссылки, то такой способ обработки пробельных символов приводит к получению непонятных результатов [4].
Обработка тегов <h:commandLink value= «Previous»…/> и <h:commandLink value=''Next»…/> приводит к получению ссылок PreviousNext без пробела между ними.
Выход из этой ситуации состоит в добавлении пробела с помощью выражения значения #
{' '}.
Заключение
программирование facelets тег
Facelets представляет собой намного более мощную технологию подготовки к отображению по сравнению с JSP. Платформа Facelets была специально предназначена для использования в сочетании с JSF, поэтому при совместной работе этих платформ не обнаруживаются неприятные несовместимости с JSF, как в некоторых известных случаях применения JSP вместе с JSF.
Как и Tiles, технология Facelets предоставляет возможность реализовать модульные пользовательские интерфейсы, простые для понимания, модификации и расширения, в которых используются встроенные возможности применения шаблонов. Кроме того, технология Facelets обеспечивает возможность оформления разделов страницы, что способствует еще лучшему разделению труда между специалистами по созданию основного содержимого и художественному оформлению.
Наконец, технология Facelets предоставляет возможность использовать целый ряд сервисных тегов, включая ui: debug, благодаря которым реализация страниц JSF становится намного проще по сравнению с JSP.
Список использованной литературы
1. Гери, Д. JavaServer Faces. Библиотека профессионала/ Д. Гери, К. Хорстманн; пер. с англ. под редакцией К.А. Птицына - Москва: Издательский дом «Вильямс», 2011. - 165-184 с.
2. Википедия - свободная энциклопедия [Электронный ресурс]. - http://wikipedia.org. - (дата обращения: 27.11.2016)
3. Хабрахабр [Электронный ресурс]. - habrahabr.ru. - (дата обращения: 04.12.2016)
4. Code-Live.ru - портал о программировании [Электронный ресурс]. - code-live.ru - (дата обращения: 02.12.2016)
5. Stack Overflow на русском [Электронный ресурс]. - http://ru.stackoverflow.com/ - (дата обращения: 04.12.2016)
Размещено на Allbest.ru
Подобные документы
Язык Java как простой, обьектно-ориентированный, многопоточный язык программирования, разработанный компанией Sun Microsystems для расширения возможностей сети Internet. Типы данных, лексика и управляющие структуры данного языка программирования.
презентация [46,1 K], добавлен 25.04.2014Этапы развития, особенности и возможности языка программирования Java; происхождение названия. Приложения Sun Microsystems: идеи, примитивные типы. Python - высокоуровневый язык программирования общего назначения: структуры данных, синтаксис и семантика.
реферат [79,0 K], добавлен 23.06.2012Создание языка программирования с помощью приложения "Java". История названия и эмблемы Java. Обзор многообразия современных текстовых редакторов. Обработка строки. Методы в классе String. Java: задачи по обработке текста. Примеры программирования.
курсовая работа [276,1 K], добавлен 19.07.2014Разработка графического редактора для рисования двухмерной и трехмерной графики, используя язык программирования Java и интерфейсы прикладного программирования Java 2D и Java 3D. Создание графического редактора 3D Paint. Основные методы класса Graphics.
курсовая работа [197,5 K], добавлен 19.11.2009Расширяемый язык разметки XML. Описание типа документа DTD. Значение XML и платформы Java. Обзор стандартных анализаторов DOM и SAX. Технология Java Servlet, Java Server Pages (JSP), JavaBeans. Общая функциональность программного продукта. Модель данных.
курсовая работа [422,0 K], добавлен 21.02.2009История создания языка Java. Основные принципы объектно-ориентированного программирования. Структура, особенности синтаксиса и примеры прикладных возможностей использования языка Java, его преимущества. Перспективы работы программистом на языке Java.
курсовая работа [795,9 K], добавлен 14.12.2012Язык программирования Java, история и предпосылки его создания. Переменные, именованные константы, массивы, перечисления. Интерфейсы и обратные вызовы в Java. Удаленный вызов процедуры: общие сведения. Передача параметров при удаленном вызове процедур.
курс лекций [526,7 K], добавлен 24.06.2009Классификация языков программирования. Использование циклических конструкций и выполнение итерационных процессов. Алгоритмические структуры циклов языков C, C++, Java, C#. Особенности современных языков программирования высокого уровня и их применение.
курсовая работа [345,6 K], добавлен 13.11.2009Сетевые возможности языков программирования. Преимущества использования Java-апплетов. Классы, входящие в состав библиотеки java.awt. Создание пользовательского интерфейса. Сокетное соединение с сервером. Графика в Java. Значения составляющих цвета.
курсовая работа [508,1 K], добавлен 10.11.2014Описание языка программирования Java: общие характеристики, главные свойства, краткий обзор. Надежность и безопасность, производительность и базовая система программы. Разработка программы поиска по словарю, алгоритм её работы. Общий вид кода программы.
курсовая работа [20,3 K], добавлен 28.10.2012