![]() | ||||||||||||||||||||||||||||||
![]() |
![]() |
|
|
|||||||||||||||||||||||||||
![]() |
|
Повторное использование ранее разработанных фрагментов страниц в ADF 10g и единое оформление страниц web-приложенияИсточник: Oracle Дмитрий Севостьянов, Oracle СНГ
При разработке любого современного web-приложения, состоящего более чем из одной страницы, возникает задача внедрения ранее разработанных фрагментов страниц во вновь создаваемые страницы (или фрагменты) а так же задача единообразного оформления всех страниц приложения в соответствии с корпоративными стандартами. 1. Повторное использование фрагментов страниц Существуют несколько подходов и решений этой задачи: портлеты, технология Struts-Tiles, шаблоны и т. д. Каждый из подходов имеет свои недостатки и преимущества. В том числе и Oracle ADF предлагает для JSF (ADF Faces) такое решение. Эти привязки загружаются ядром ADF на этапе выполнения приложения и инициализируют необходимы переменные (привязки) заданными экземплярами объектов. Естественно, что стандартными директивами включения фрагментов страниц вышеописанные действия не предусмотрены. Для решения такого типа задач ADF 10 g 2 предлагает использование пары тегов Пример приложения, использующего механизм повторного использования фрагмента страницы. Приложение оформлено в виде рабочего пространства JDeveloper (10.1.3.3) и состоит из двух проектов:
Бизнес-сервис представлен Java-классом public class BrandingService { public BrandingService() { } public String getBrandingContentName() { return "Branding Application Sample"; } public Date getBrandingDate() { return new Date(); } public String hello(String user) { return "Hello, " + user; } } Дальнейшие действияпроизводятся в проекте Создаем обычную JSF страницу с помощью мастера со следующими параметрами
На созданную страницу помещаем ADF Faces Component "
Следующим шагом является преобразование созданной страницы во фрагмент. Для этого необходимо удалить все теги, связанные с корневым оформлением (
Теперь,когда страница подготовлена к повторному использованию, ее необходимо зарегистрировать в файле описания повторно используемых областей ( <!DOCTYPE faces-config PUBLIC "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN" "http://java.sun.com/dtd/web-facesconfig_1_1.dtd"[ <!ELEMENT region-jsp-ui-def (#PCDATA)> <!ELEMENT required (#PCDATA)> ]> <faces-config xmlns="http://java.sun.com/JSF/Configuration"> <component> <component-type></component-type> <component-class></component-class> <component-extension< <region-jsp-ui-def></region-jsp-ui-def> </component-extension> </component> </faces-config> Для регистрации подготовленной страницы в файле областей повторного использования необходимо внести следующие исправления (дополнения). Установить тип компонента - это идентификатор страницы, используя который можно сослаться на фрагмент из другого места (тег <component> <component-type>region.fragment</component-type> <component-class>oracle.adf.view.faces.component.UIXRegion</component-class> <component-extension> <region-jsp-ui-def>/region/fragment.jspx</region-jsp-ui-def> </component-extension> </component> Остался последний шаг - создание страницы, в которую необходимо поместить повторно используемую область (ранее разработанный фрагмент). Создаем <af:region id="fragment1" regionType="region.fragment" value="/> Где
В итоге тег <af:region id="fragment1"regionType="region.fragment" value="#{data.region_fragmentPageDef}"/> Осталось только проверить результаты работы, запустив приложение во встроенном J2EE контейнере.
2. Единое оформление страниц приложения (брэндинг) В данном разделе рассмотрим один из подходов к единообразному (шаблонному) оформлению всех страниц приложения. Так как все страницы приложения должны реализовывать один шаблон, то почему бы не использовать механизм повторного использования? Действительно, разработав законченные функциональные фрагменты можно их использовать в других страницах, просто ссылаясь на них. Вначале рассмотрим шаблон один из шаблонов страницы (на примере шаблона, предлагаемого компанией Oracle для своих приложений, см. рис. 4).
Очевидно, что страницу можно разбить на некоторые функционально законченные области (см. рис.5).
Будем использовать следующие области (в соответствии с наименованиями фасетов):
Создадим одноименные страницы, типа JSP Document ( <af:regionDef var="menu1Attr"> <af:menuTabs binding="#{backing_region_menu1.menuTabs1}" id="menuTabs1"> <af:commandMenuItem text="Home" binding="#{backing_region_menu1.goMenuItem1}" selected="#{menu1Attr.selectedTab == 'home'}" id="goMenuItem1" action="home"/> <af:commandMenuItem text="Content" binding="#{backing_region_menu1.commandMenuItem1}" selected="#{menu1Attr.selectedTab == 'content'}" id="commandMenuItem1" action="content"/> </af:menuTabs> </af:regionDef> Следует отметить, что атрибут <component> <component-type>branding.menu1</component-type> <component-class>oracle.adf.view.faces.component.UIXRegion</component-class> <attribute> <attribute-name>selectedTab</attribute-name> <attribute-class>java.lang.String</attribute-class> </attribute> <component-extension> <region-jsp-ui-def>/region/menu1.jspx</region-jsp-ui-def> </component-extension> </component> А декларативное присвоение статуса "выбран"определяется на каждой конкретной странице (например, index.jspx): <f:facet name="menu1"> <af:region id="nemul" regionType="branding.menu1"> <af:attribute name="selectedTab" value="home"/> </af:region> </f:facet> Применение стилей для оформления страниц можно найти поссылкам:
Заключение ADF 10g предоставляет простые и мощные средства для повторного использования ранее разработанных фрагментов страниц, декларативной их настройкой и быстрой разработки страниц в соответствии с корпоративными правилами оформления приложений. Ссылки по теме
|
|