310 likes | 515 Views
JavaServer Faces. Цветелин Андреев. Dreamix Ltd. c.andreev_AT_dreamix.eu. Съдържание. Технологията JavaServer Faces JSF – защо и как ? JSF – поглед отвътре Програмиране и разширяване на JSF Използване на сложни компоненти Създаване на собствени валидатори, конвертери и компоненти
E N D
JavaServer Faces Цветелин Андреев Dreamix Ltd c.andreev_AT_dreamix.eu
Съдържание • Технологията JavaServer Faces • JSF – защо и как? • JSF – поглед отвътре • Програмиране и разширяване на JSF • Използване на сложни компоненти • Създаване на собствени валидатори, конвертери и компоненти • Стъпка по стъпка - JSF форум
Въведение 1/2 • Какво е JSF? • Част от JEE • Фреймуърк за уеб приложения • Базиран на JSP и Java Servlets • История на JSF • 2001 г. – JSR 127 • 2004 г. – JSF 1.0 и 1.1 • 2004 г. – JSR 252 • 2006 г. – JSF 1.2
Въведение 2/2 • Поддържа се от Apache Foundation, IBM, Oracle, Sun Microsystems • Състои се основно от две части • API за представяне на HTML компоненти, валидатори, обработка на събития и т.н. • Две таг-библиотеки за изграждане на UI
Защо JSF? (Преимущества) • Имплементира Model-View-Controller • Третира HTTP заявка като събитие за дадена компонента • Позволява ясно разделение на отговорностите в един екип • Позволява използване на средства за визуално програмиране (RAD, WYSIWYG) подобно на ASP.NET • Наподобява Swing програмиране
Защо JSF? (Преимущества) • Използва JSP и ползволява интеграция с други технологии – JSTL, Struts • Позволява смяна на View без промяна на Model • Преизползване на логика. Пример: UICommand • Различна визуализация за различни клиенти (Web browser, PDA )
Защо JSF? (Преимущества) • Предлага архитектура за • Управление на състоянието на компонентите и техните данни • Прихващане на съответните им събития • Валидация на данни от потребителя • Всичко може да се разширява и настройва
Структура на JSF приложение • Набор от JSP страници • Набор от backing beans • JSF конфигурационен файл (faces-config.xml) • Деплоймънт дескриптор (web.xml) • Собствени валидатори, конвертери, компоненти и обработчици на събития • JSF таг библиотеките
Пример за JSF приложение • Стъпки: • Мапване на FacesServlet в web.xml. • Създаване на страниците използвайки основните JSF тагове и тези за HTML компонентите. • Свързваме данните от първата страница с backing bean. • Дефинираме навигацията между страниците във faces-config.xml. • Построяваме backing beans и ги декларираме във faces-config.xml.
Пример за JSF приложение Демонстрация
Среди за разработка • NetBeans • Visual Web Pack • Eclipse • WTP • MyEclipse • JDeveloper • IntelliJ IDEA
Среди за разработка Демонстрация с JDeveloper
JSF Hello - продължение • Добавяне на валидация и съобщения за грешки • <h:message … > • required="true" • <f:validateLength minimum="3"/> • Използване на стандартните конвертери за данни • convertDateTime
JSF отвътре • JSF компонентен модел • Набор от класове за манипулиране и определяне на състоянието на HTML компонентите • Модел за рендериране на компонентите • Събитиен модел за прихващане на събития за специфични компоненти
JSF отвътре • JSF компонентен модел • Конвертен модел за преобразуване на типове данни от HTML компонентата към Java кода и обратно • Валидационнен модел за валидиране на съответните компоненти
JSF отвътре - UIComponent класове • Всяка HTML компонента има съответния клас, наследяващ UIComponentBase. Пример: UICommand – h:commandButton иh:commandLink UIOutput – h:outputText и h:outputLabel
JSF отвътре - UIComponent класове • Всяка HTML компонента може да бъде свързана с обект от съответния и тип посредством атрибута binding. Пример: <h:inputText binding="#{PersonBean.input}" />
JSF отвътре – реднер модел • Модел за рендериране на компонентите • Всеки таг се свързва с Renderer определящ изгледа • Render kit включва набор от Renderer класове за всяка компонента • JSF позволява смяна на целия Render Kit
JSF отвътре - Конвертен модел • Конвертния модел на JSF предоставя лесен начин за постигане на съответствие между данните в модела и визулания изглед на данните Пример: UISelectBoolean представлява checkbox и JSF позволява тази HTML компонента да бъде свързана с данни от тип Boolean
JSF отвътре - Събитиен модел • Състои се от две части – събития (events) и обработчици (listeners) • Event обектът идентифицира компонентата, от която е възникнал и носи информация за конкретното събитие. • За да бъде уведомено за конкретно събитие, приложението трябва да предостави Listener клас • Предоставя action, value-change и data-model event
JSF отвътре - Събитиен модел • Обработвици на събития се ‘закачат’ по два начина: • Имплементиране на ActionListener или ValueChangeListener и добавяне на вътрешен таг за съответната компонента (actionListener или valueChangeListener)
JSF отвътре - Събитиен модел • Обработвици на събития се ‘закачат’ по два начина: • Имплементиране на метод на backing bean и достъпване на този метод чрез атрибута actionListener <h:commandLink ... actionListener="#{someBean.someMethod}">
JSF отвътре - Валидационен модел • Два начина за извършване на собствена валидация – чрез имплементиране на класа Validator и чрез използване на атрибута validator за референсване на метод на backing bean. <h:inputText ... validator="#{someBean.validateSometing}>
JSF отвътре -навигационен модел • Два начина • Статичен – както в демото • Динамичен – с action методи <h:commandLink action="#{SomeBean.navigate}" value="Submit"/>
Навигация с action метод Демонстрация
JSF отвътре - backing bean модел • Динамична навигация • Валидация • Конвертиране • Обработване на събития, • Свързване на текуща стойност на HTML компонента • Свързване на HTML компонента към UIComponent клас за манипулация на състоянието и.
Binding на компонента Демонстрация
JSF отвътре - backing bean модел • Динамична навигация • Валидация • Конвертиране • Обработване на събития, • Свързване на текуща стойност на HTML компонента • Свързване на HTML компонента към UIComponent клас за манипулация на състоянието и.
JSF жизнен цикъл • Restore View Phase за създаване на дърво от компоненти • Apply Request Values Phase за извличане на новите стойности на компонентите. • Process Validations Phase за валидиране на извлечените стойности на компонентите.
JSF жизнен цикъл • Update Model Values Phase за свързване на компонентите от дървото с техните валидни стойности • Invoke Application Phase за извикване на всички обработчици за възникналите събития, навигационните методи и т.н. • Render Response Phase за рендериране на JSP страницата
JavaServer Faces Въпроси?