A JavaServer Faces (röviden JSF) egy Java-alapú MVC keretrendszer webes felhasználói felületek fejlesztéséhez. A komponensvezérelt UI-tervezési modellre épül.
View template-nek vagy Faceletnek nevezett XML fájlokat használ a megjelenítési modell leírására. A kéréseket a FacesServlet dolgozza fel, ami ezután betölti a megfelelő view template-et, felépíti a komponensfát, kezeli az eseményeket és létrehozza (generálja) a választ (többnyire HTML vagy XHTML formátumban) a kliensnek. A felhasználói felület komponenseit (és egyéb objektumokat) minden lekérés végén elmenti, majd ugyanazon view következő előállításakor újra betölti. Ennek a mentési/betöltési folyamatnak több különböző formája ismert, szerver és kliens-oldalon is lehetséges.
Alapértelmezésben a JSF 1.x JSP-t használ a megjelenítésre, de más technológiák is elérhetőek hozzá, mint pl. a XUL vagy a Faceletek. A JSF 2 esetében már a Faceletek használata az alapértelmezett.
Verziók
- JSF 1.0 (2004. március 11.) – Ez volt az első JSF specifikáció. Fejlesztése a JSR 127 keretében történt.
- JSF 1.1 (2004. május 27.) – Csak hibajavításokat tartalmazott. A specifikáció nem változott. Ezt a verziót is még a JSR 127 alatt definiálták.
- JSF 1.2 (2006. május 11.) – Ezt a verziót már a JSR 252 keretében szabványosították. A hibajavításokon kívül tartalmazza többek között az alábbi változásokat:
- A konfigurációs fájlok alakját XML séma fájlok (XSD fájlok) definiálják a korábbi dokumentumtípus-definíció fájlok helyett.
- Több frame-mel és több ablakkal rendelkező alkalmazások támogatása.
- Biztonsági kiegészítések a kliensoldali állapottároláshoz.
- A specifikáció átszervezése normatív és nem normatív szekciókba.
- JSF 2.0 (2009. június 28.) – A JEE 6 verzió specifikációjával egyidejűleg jött ki, főverzióváltás, leegyszerűsített használatot, bővített funkcionalitást és teljesítményt nyújt a korábbi verziókhoz képest. A szabványosítási folyamatot a JSR 314 alatt koordinálták.
- JSF 2.1 (2010. október 22.) – Csak minimálisan változott a specifikáció.[1][2]
- JSF 2.2 (2013. április 16.) – A JSF 2.2 új koncepciókat vezet be, mint pl. az állapotmentes nézetek, oldalfolyam és képesség hordozható erőforrás szerződések létrehozására.[3]
- JSF 2.3 (2017. április 17.)
Egy JSF oldal életciklusa
- A nézet visszaállítása (Restore view)
- A kérésben szereplő értékek érvényesítése (Apply request values)
- Validációk (Process validations)
- A modell értékeinek frissítése (Update model values)
- Az alkalmazás meghívása (Invoke application)
- A válasz generálása (Render response)
Részei
A JSF architektúra tartalmazza az alábbiakat:
- A grafikus komponenseket reprezentáló API-kat, amelyekkel módosítani lehet a komponensek állapotát, eseményeket lehet kezelni és felhasználó inputot lehet ellenőrizni többek között.
- JSP elemkönyvtárakat, melyeken keresztül hivatkozni lehet a JSF komponensekre JSP oldalakból.
- Szerveroldali eseménymodell.
- A komponensek állapotainak kezelése.
- Managed Bean-ek, melyek speciális JavaBean-ek.
Grafikus komponensek
A JSF grafikus komponenseit az alábbi komponenscsaládokba sorolják:
- javax.faces.Command
- javax.faces.Button – HTML
<input>
elem.
- javax.faces.Link – HTML
<a>
tag, amely submit gombként viselkedik.
- javax.faces.Data
- javax.faces.Table – HTML
<table>
elem.
- javax.faces.Form
- javax.faces.Form – HTML
<form>
elem.
- javax.faces.Graphic
- javax.faces.Image – HTML
<img>
elem.
- javax.faces.Input
- javax.faces.Hidden – hidden típusú HTML
<input>
elem.
- javax.faces.Secret – password típusú HTML
<input>
elem.
- javax.faces.Text – text típusú HTML
<input>
elem.
- javax.faces.Textarea – HTML
<textarea>
elem.
- javax.faces.Message
- javax.faces.Message – Valamely komponenshez tartozó üzenet.
- javax.faces.Messages
- javax.faces.Messages – Valamely komponenshez tartozó összes üzenet.
- javax.faces.Output
- javax.faces.Format – Paraméterezett szöveg.
- javax.faces.Label – HTML
<label>
elem.
- javax.faces.Link – HTML
<a>
elem.
- javax.faces.Text – HTML
<span>
elem.
- javax.faces.Panel
- javax.faces.Grid – HTML
<table>
elem.
- javax.faces.Group
- javax.faces.SelectBoolean
- javax.faces.Checkbox – checkbox típusú HTML
<input>
elem.
- javax.faces.SelectMany
- javax.faces.Checkbox – checkbox típusú HTML
<input>
elemek listája.
- javax.faces.Listbox – HTML opciólista.
- javax.faces.Menu – HTML HTML opciólista.
- javax.faces.SelectOne
- javax.faces.Listbox – HTML opciólista.
- javax.faces.Menu – HTML opciólista.
- javax.faces.Radio – radio típusú HTML
<input>
elem.
Megvalósításai
Egyéb támogatás
Jegyzetek