JavaServer Faces


Spis treści

Pliki konfiguracyjne

Konfiguracja JSF zawiera się w plikach web.xml i faces-config.xml. Ten pierwszy zawiera ogólne ustawienia, a ten drugi konkretne akcje w ramach aplikacji webowej.

Plik web.xml

Najważniejszą informacją jaką musimy dopisać do pliku web.xml jest fakt, żeby wszystkie odwołania JSF były obsługiwane przez klasę javax.faces.webapp.FacesServlet. Sprawia ona że pliki *.jsp są interpretowane nie jako właściwe JSP lecz jako JSF. Próba odwołania się bezpośrednio do pliku *.jsp kończy się błędem.

Standardowo robi się to w następujący sposób:

 <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>

Strony JSF mogą być mapowane na wiele sposobów *.faces, /faces/* itp
Uruchomienie aplikacji inernetowej wymaga wywołania strony startowej. Musi ona fizycznie istnieć, gdyż w deskryptorze web.xml nie można ustwić nieistniejącej strony startowej. Dodatkowo chcemy, żeby wywolania stron JSF były inerpretowane przez FacesServlet, bo tylko on gwarantuje nam prawidłowe ich wykonanie. Standartowo cały problem rozwiązuje się tworząc index.jsp którego jedynym zadaniem jest przekierowanie na inną stronę:

 <% response.sendRedirect("pages/login.jsf"); %>

Bardzo ważną informacją jest to gdzie należy szukać pliku kofiguracujnego dla JSF, domyślnie faces-config.xml, ale zawsze można go inaczej nazwać:

 <context-param>
  <param-name>javax.faces.CONFIG_FILES</param-name>
  <param-value>
  /WEB-INF/examples-config.xml
  </param-value>
 </context-param>


Plik faces-config.xml

W pliku faces-config.xml umieszczamy wszelkie informajce o konfiguracji JSF. Podstawowymi elementami są:

  • Jakie "Locale" obsługuje nasza aplikacja
  • Informacja o Managed Beanach
  • Informacja o nawigacji po aplikacji, skąd, dokąd, jaka akcja
  • Informacja o komponentach


W Locale znajduje się informacja o ty jaki językiem się posługujemy. Jeśli chodzi o Magnaged Bean to zapisujemy informacje o klasie bazowej beana, nazwę po której będziemy go rozpoznawali oraz gdzie będzie on dostępny:

 <managed-bean>
  <description>
   The "backing file" bean that backs up shopping cart
  </description>
  <managed-bean-name>cart</managed-bean-name>
  <managed-bean-class>com.arcmind.jsfquickstart.ShoppingCartBean</managed-bean-class>
  <managed-bean-scope>session</managed-bean-scope>
 </managed-bean>


W części nawigation-rule definiujemy możliwe zachowani i wywołania innych storn JSF:

 <navigation-rule>
   <!-- Add a navigation comming from cdForm.jsp -->

  <from-view-id>/cdForm.jsp </from-view-id>

  <navigation-case>
   <!-- Add a navigation going to results -->
   <from-action>#{CDManagerBean.addCD} </from-action>
   <from-outcome>success </from-outcome>
   <to-view-id>/listing.jsp </to-view-id>
  </navigation-case>
  <navigation-case>
   <!-- Add a navigation going to results -->
   <from-action>#{CDManagerBean.updateCD} </from-action>
   <from-outcome>success </from-outcome>
   <to-view-id>/listing.jsp </to-view-id>
  </navigation-case>

 </navigation-rule>


JavaServer Faces