JavaServer Faces


Spis treści

Managed Beans

Managed Beans pelnią tę samą rolę co łącznie StrutsAction i StrutsForm, dzięki temu nie musimy się plątać w zbyt skomplikowanym środowiku. Każda interesująca nas akcja jest zamapowana w pliku konfiguracyjnym i ewentualnie wspierana przez Managed Beana. Oczywiście mamy do czynienia ze zwykłym beanem więc stostują sie podstawowe zasady dotyczące tej kategorii.

Mapowanie beanów odbywa sie w pliku faces-config.xml, w zależności od potrzeb możemy nadać mu różną żywotność: session, request, application itp.

 <managed-bean>
  <description>
   The "backing file" bean that backs up shopping cart
  </description>
  <managed-bean-name>sampleDate</managed-bean-name>
  <managed-bean-class>jsf2.SampleDateBean</managed-bean-class>
  <managed-bean-scope>session</managed-bean-scope>
 </managed-bean>

Dodatkowo możemy ustawić wartości inicjalizacyjne dla wymaganych pól w beanie.

Wywołyjemy:

 <t:inputDate id="date" value="#{sampleDate.date}" popupCalendar="true">


Istnieje również możliwość wywołania akcji z Managed Beana, warunkiem jest aby zwracał on Stringa, reprezentującego jakąś akcję:

<h:commandButton value="Submit" action="#{pesel.checkPesel}"/>

w beanie pesel musi istnieć funkjca: public String checkPesel(){...};
Jeśli zwróci dowolny niemusty String to powinna istnieć nawigation-rule -> from-outcome mówiące jak należy postąpić.

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

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

  <navigation-case>
   <!-- Add a navigation going to results -->
   <from-outcome>success </from-outcome>
   <to-view-id>/listing.jsp </to-view-id>
  </navigation-case>

 </navigation-rule>
Jedną z opcji jest możliwość używania "bardziej niskopoziomowych" obiektów takich HttpServletRequest czy HttpSession. Dokonujemy tego używając obiekt FaceContext.

 public String spanishLanguage() {
  FacesContext context = FacesContext.getCurrentInstance();
  context.getViewRoot().setLocale(new Locale("es"));
  return null;}


JavaServer Faces