JavaServer Faces
За информацията в тази статия или раздел не са посочени източници. Въпросната информация може да е непълна, неточна или изцяло невярна. Имайте предвид, че това може да стане причина за изтриването на цялата статия или раздел. |
Тази статия се нуждае от подобрение. Необходимо е: термини на български език. Ако желаете да помогнете на Уикипедия, използвайте опцията редактиране в горното меню над статията, за да нанесете нужните корекции. |
JavaServer Faces (JSF) е Java технология за създаване на уеб-базирани приложения на основата на Java Servlet API и JSP. JSF е стандартизирана и включена официално в Java Enterprise Edition 5. Тя включва:
- Компоненти – служат за визуализиране на потребителския интерфейс. Всяка компонента запазва собственото си състояние, като състоянието може да се пази на сървъра или при клиента (клиентски браузър под вид на скрито поле, в което състоянието е сериализирано и записано чрез Base64 кодиране)
- Валидиране и конвертиране на входните данни от компонентите
- Поддръжка на интернационализиране
- Навигация между страниците
- Генерира събития на сървъра в зависимост от действия от страна на клиента
- Стандартен набор от компоненти
- Възможност за създаване на потребителски библиотеки с JSP тагове
- Менажирани бийнове (Managed Beans) – Представляват Java класове, дефинирани в конфигурационен файл и JSF се грижи те да бъдат създадени при извикването им, или връщане, ако вече са били създадени.
- Език за връзка на Java класовете с компонентите (Expression Language)
- Генератор на изходен код (Renderer) – всяка JSF компонента съдържа свой собствен Renderer който се грижи за генериране на изходния код (HTML).
Конфигуриране на JSF приложение
[редактиране | редактиране на кода]JSF е имплементиран като Servlet и за да работи правилно е необходимо Faces Sevlet да бъде описан в конфигурационния файл на приложението (web.xml).
<servlet> <servlet-name>Faces Servlet</servlet-name> <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>Faces Servlet</servlet-name> <url-pattern>*.jsf</url-pattern> </servlet-mapping>
Главният файл за декларации е /WEB-INF/faces-config.xml, но могат и да се декларират множество конфигурационни файлове, което позволява лесно разделяне на приложението на модули. Декларирането на конфигурационни става с помощта на следния код в web.xml:
<context-param> <param-name>javax.faces.CONFIG_FILES</param-name> <param-value>/WEB-INF/faces-config-admin.xml,/WEB-INF/faces-config-user.xml</param-value> </context-param>
Главният конфигурационен файл faces-config.xml не е необходимо да се включва към списъка.
JSF компоненти
[редактиране | редактиране на кода]Принцип на работа
[редактиране | редактиране на кода]Основната идея на технологията е да се имплементират компоненти, които създават потребителския интерфейс. Компонентите са преизползваеми, което означава, че веднъж написани те могат да се използват на различни места без да бъде повтарян или пренаписван техният код.
Компонентите представляват Java класове, които съдържат логика и генерират кода на потребителския интерфейс. Състоят се от три основни класа:
- ComponentTag – клас който служи за обработка на атрибутите подадени към JSP тага на съответната компонента
- Component – в него се описва логиката на компонентата
- Renderer – генерира изходният код (HTML в уеб приложенията)
Различните Renderer класове се описват в RenderKit който може да бъде заменян по време на работа и това позволява един и същ код на приложението да генерира изходен код за различни видове устройства – уеб браузъри, PDA устройства, WAP за мобилни телефони.
Стандартни библиотеки
[редактиране | редактиране на кода]JSF предлага две стандартни компонентни библиотеки – JSF Core и JSF HTML.
JSF Core
[редактиране | редактиране на кода]Съдържа основни тагове за работа с JSF. Таговете от библиотеката JSF Core не са компоненти, а са помощни тагове за работа с компоненти.
- f:view – указва корена на дървото с компоненти. Трябва да бъде първата компонента в страницата.
- f:subView – страници, които са вложени в текущата трябва да бъдат поставени в subView (има се предвид влагане чрез jsp:include)
- f:actionListener – добавя ActionListener към родителската компонента
- f:attribute – добавя атрибут към родителската компонента
- f:converter – служи за добавяне на конвертор към родителската компонентата
- f:convertDateTime – служи за конвертиране на дата записана в компонентата, в която конверторът е вложен
- f:convertNumber – служи за конвертиране на число записано в компонентата, в която конверторът е вложен
- f:validator – служи за добавяне на валидатор към родителската компонентата
- f:validateLength – служи за добавяне на валидатор за дължина на въведения текст в компонентата, в която валидаторът е вложен
- f:validateLongRange – служи за добавяне на валидатор за интервалът на въведеното цяло число в компонентата, в която валидаторът е вложен
- f:validateDoubleRange – служи за добавяне на валидатор за интервала на въведеното дробно число в компонентата, в която валидаторът е вложен
- f:facet – начин на именуване на дъщерна компонента. Поставена във facet дъщерната компонента може да бъде извлечена от родителската чрез името на facet.
- f:loadBundle – служи за използване на ResourceBundle .properties файлове
- f:param – служи за добавяне на параметър към заявката. Най-често се използва с h:commandLink
- f:selectItem – служи за добавяне на елемент към компоненти за избор (компоненти чиито имена започват с h:select. Пример: h:selectOneMenu)
- f:selectItems – служи за добавяне на множество от елементи към компоненти за избор. Множеството от елементи се подава като Map или масив/списък с обекти от тип SelectItem.
- f:verbatim – Главен недостатък на JSF е невъзможността в JSF компоненти да бъде вложен HTML код. За да стане това възможно HTML кодът трябва да бъде поставен във verbatim таг.
JSF HTML
[редактиране | редактиране на кода]Съдържа тагове за работа с основните JSF компоненти, генериращи HTML код.
Полезни връзки
[редактиране | редактиране на кода]- JSF RI Архив на оригинала от 2007-06-11 в Wayback Machine.. JSF имплементация на Sun.
- MyFaces Архив на оригинала от 2006-12-25 в Wayback Machine. JSF имплементация на Apache с отворен код
- Facelets Архив на оригинала от 2007-06-11 в Wayback Machine. Библиотека за построяване на дървета от JSF компоненти. Включва шаблонизация
- RichFacesАрхив на оригинала от 2012-02-22 в Wayback Machine. AJAX библиотека за JSF
- Jboss Tools Архив на оригинала от 2007-12-13 в Wayback Machine. Среда с отворен код за разработка на JSF приложения