JavaServer Faces

(пренасочване от JSF)

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 код.

Полезни връзки редактиране