Java Server Faces: Porovnání verzí

Z FI WIKI
Přejít na: navigace, hledání
Řádka 1: Řádka 1:
 +
== Úvod ==
 
Java Server Faces je rámec postavený přímo na Servlet API. Může používat JSP, ale nemusí.
 
Java Server Faces je rámec postavený přímo na Servlet API. Může používat JSP, ale nemusí.
 
Pokud používá JSP, jsou k dispozici dvě knihovny JSP značek.
 
Pokud používá JSP, jsou k dispozici dvě knihovny JSP značek.
Řádka 16: Řádka 17:
 
editovatelná pole, výběry se seznamů, zobrazení seznamu chyb atd.
 
editovatelná pole, výběry se seznamů, zobrazení seznamu chyb atd.
  
 +
== Konfigurace JSF aplikace ==
 
Celá JSF aplikace se konfiguruje pomocí souboru <code>/WEB-INF/faces-config.xml</code>.
 
Celá JSF aplikace se konfiguruje pomocí souboru <code>/WEB-INF/faces-config.xml</code>.
  
Řádka 42: Řádka 44:
 
   </managed-bean>
 
   </managed-bean>
 
</xml>
 
</xml>
 +
 
Ve verzi JavaEE 5.0 byl sjednocen JSTL EL a JSF EL do jednoho Unified EL jazyka:
 
Ve verzi JavaEE 5.0 byl sjednocen JSTL EL a JSF EL do jednoho Unified EL jazyka:
 
* výrazy <code>${neco}</code> označují výrazy pro čtení vyhodnocované při zobrazení JSP stránky
 
* výrazy <code>${neco}</code> označují výrazy pro čtení vyhodnocované při zobrazení JSP stránky
Řádka 63: Řádka 66:
 
  </body>
 
  </body>
 
</xml>
 
</xml>
 +
 +
Data jsou ve dvou formách - ve tvaru pro model, např. integer, a ve tvaru pro prezentaci, typicky řetězce. JSF zajišťuje konverze mezi těmito
 +
dvěma tvary.
 +
 +
== Navigace ==
 +
 +
Navigace mezi stránkami se konfiguruje opět ve <code>/WEB-INF/faces-config.xml</code>.
 +
 +
<xml>
 +
<navigation-rule>
 +
    <from-view-id>/moje.jsp</from-view-id>
 +
    <navigation-case>
 +
      <from-outcome>dobre</from-outcome>
 +
      <to-view-id>/dobre.jsp</to-view-id>
 +
    </navigation-case>
 +
    <navigation-case>
 +
      <from-outcome>spatne</from-outcome>
 +
      <to-view-id>/spatne.jsp</to-view-id>
 +
    </navigation-case>
 +
</navigation-rule>
 +
</xml>
 +
 +
Ve stránce pak lze specifikovat, že výstup z akce poskytuje určité metoda:
 +
 +
<xml><h:commandButton id="submit" action="#{mujManagedBean.jakDopadlo}" value="Submit" /></xml>
 +
 +
a metoda musí vracet jeden z očekávaných řetězců:
 +
 +
<java>
 +
    public String jakDopadlo() {
 +
        if(...) return "dobre";
 +
        else return "spatne";
 +
    }
 +
</java>
 +
 +
== Události ==
 +
 +
Události jsou tří typů:
 +
* '''action events''' způsobované uživatelem, když klikne na hyperlink nebo odešle formulář
 +
* '''value-change events''' způsobované změnami hodnot
 +
* '''data-model event'''  způsobované přidáním řádku do tabulky dat

Verze z 16. 10. 2006, 16:27

Úvod

Java Server Faces je rámec postavený přímo na Servlet API. Může používat JSP, ale nemusí. Pokud používá JSP, jsou k dispozici dvě knihovny JSP značek.

Stránky jsou skládány z komponent. Jedna komponenta může mít více různých rendererů, např. pro HTML, pro XHTML, pro WAP/WML, nebo i různé varianty v rámci HTML. Standardně je k dispozici základní sada komponent a renderery do HTML.

Např. komponenta UICommand se může zobrazit

  • jako hyperlink pomocí značky <h:commandLink>
  • jako tlačítko pomocí značky <h:commandButton>

Nevýhodou implementací JSF je, že renderery pro HTML si často vypomáhají JavaScriptem, a aplikace tak nebudou fungovat v prohlížečích, které mají JavaScript vypnutý.

Implementace JSF má předpřipravené komponenty pro běžné prvky - hyperlinky, tlačítka, editovatelná pole, výběry se seznamů, zobrazení seznamu chyb atd.

Konfigurace JSF aplikace

Celá JSF aplikace se konfiguruje pomocí souboru /WEB-INF/faces-config.xml.

Stav komponent a stránek se pamatuje pomocí tzv. managed JavaBeans, které se musí popsat v konfiguračním souboru. K jejich properties se pak dá přistupovat pomocí výrazů jazyka EL.

 
 //faces-config.xml
 <managed-bean>
    <description>
      The backing bean that backs up the guessNumber Web application
    </description>
    <managed-bean-name>UserNumberBean</managed-bean-name>
    <managed-bean-class>guessNumber.UserNumberBean</managed-bean-class>
    <managed-bean-scope>session</managed-bean-scope>
    <managed-property>
      <property-name>minimum</property-name>
      <property-class>long</property-class>
      <value>0</value>
    </managed-property>
    <managed-property>
      <property-name>maximum</property-name>
      <property-class>long</property-class>
      <value>10</value>
    </managed-property>
  </managed-bean>

Ve verzi JavaEE 5.0 byl sjednocen JSTL EL a JSF EL do jednoho Unified EL jazyka:

  • výrazy ${neco} označují výrazy pro čtení vyhodnocované při zobrazení JSP stránky
  • výrazy #{neco} označují výrazy pro čtení i zápis

K vše uvedenému managed JavaBeanu můžete tedy přistupovat např. pomocí

 
 <%@ page contentType="text/html; charset=utf-8" %>
 <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
 <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
 <body bgcolor="white">
    <f:view>
            <h:form id="mujForm" >
                max: <h:outputText value="#{UserNumberBean.maximum}"/> <br>
                min: <h:outputText value="#{UserNumberBean.minimum}"/> <br>
                Novy max: <h:inputText id="newMax" value="#{UserNumberBean.maximum}" > </h:inputText><br>
                Novy min: <h:inputText id="newMin" value="#{UserNumberBean.minimum}" > </h:inputText><br>
                <h:commandButton id="submit" action="success" value="Submit" />
            </h:form>
        </f:view>
 </body>

Data jsou ve dvou formách - ve tvaru pro model, např. integer, a ve tvaru pro prezentaci, typicky řetězce. JSF zajišťuje konverze mezi těmito dvěma tvary.

Navigace

Navigace mezi stránkami se konfiguruje opět ve /WEB-INF/faces-config.xml.

 
 <navigation-rule>
    <from-view-id>/moje.jsp</from-view-id>
    <navigation-case>
      <from-outcome>dobre</from-outcome>
      <to-view-id>/dobre.jsp</to-view-id>
    </navigation-case>
    <navigation-case>
      <from-outcome>spatne</from-outcome>
      <to-view-id>/spatne.jsp</to-view-id>
    </navigation-case>
 </navigation-rule>

Ve stránce pak lze specifikovat, že výstup z akce poskytuje určité metoda:

<h:commandButton id="submit" action="#{mujManagedBean.jakDopadlo}" value="Submit" />

a metoda musí vracet jeden z očekávaných řetězců:

 
    public String jakDopadlo() {
        if(...) return "dobre";
        else return "spatne";
    }

Události

Události jsou tří typů:

  • action events způsobované uživatelem, když klikne na hyperlink nebo odešle formulář
  • value-change events způsobované změnami hodnot
  • data-model event způsobované přidáním řádku do tabulky dat