Jakarta Server Faces

Jakarta Server Faces

20110510-jsf-logo.tiff
Grundlæggende data

Udvikler Eclipse Foundation
Aktuel  version 3.0.0
( 7. oktober 2020 )
operativ system platform uafhængig
programmeringssprog Java
kategori Ramme
Licens Eclipse Public License 2.0, undtagelse fra GPL-link
jakarta.ee/specifications/faces/

Jakarta Server Faces (JSF; tidligere JavaServer Faces) er en ramme standard for udvikling af grafiske brugergrænseflader for web-applikationer . Baseret på servlets og JSP- teknologi er JSF en af Jakarta EE webteknologier . Ved hjælp af JSF kan udvikleren nemt integrere komponenter til brugergrænsefladerwebsider og definere navigationen . Krav til udvikling af JSF-indhold er JDK , en servletcontainer (f.eks. Apache Tomcat ) og en grundlæggende forståelse af HTTP og Java- programmeringssproget . Et integreret udviklingsmiljø kan bruges til at forenkle udviklingen .

Komponenter

For at reducere afskedigelser i koden og forbedre genanvendeligheden af UI- koden over flere projekter, kan komponenter oprettes og bruges. JSF-komponenter er underlagt en hierarkisk struktur. I lighed med Java Swing API er der containerkomponenter i JSF, der kan indeholde komponenter. For bedre at strukturere applikationen er der en streng adskillelse mellem model , præsentation og kontrol som leveret af model-view-controller- konceptet.

Et centralt koncept for Jakarta Server Faces er udsigten . Dette er en træstruktur, der består af JSF-komponenter. En sådan struktur forekommer nøjagtigt en gang pr. Opkald, dvs. en gang pr. Side, når du bruger JavaServer Pages (JSP). Visningen oprettes i begyndelsen af ​​JSF's livscyklus, umiddelbart efter at anmodningen er modtaget fra klienten. I den sidste fase af livscyklussen kaldes visningskomponenterne rekursivt, begyndende med roden, for at generere svaret, for eksempel en HTML-side. Den controller komponent, som styrer brugerinput, kan implementeres i JSF ved hjælp af sine egne komponenter eller med en såkaldt handleren . Disse er for det meste skrevet med Java. Den aktuelle logik for applikationen finder sted i modellen . Med JSF er modelkomponenterne såkaldte Java-bønner (Java-klasser), der styres af containeren. JSF-webapplikationer har normalt ingen HTML-kode, der er værd at nævne. HTML-koden er kun synlig i kildekoden på den genererede side. JSF-komponenter har deres egne renderere . Disse renderere konverterer siderne skrevet med JSF til HTML-kode, så enhver HTML-webbrowser kan vise siden. Egne gengivere kan skrives til andre outputformater.

Livscyklus

Image
Jakarta Server står over for livscyklusdiagram

Specifikationen af ​​Jakarta Server Faces definerer en såkaldt livscyklus, som en JSF-applikation løber igennem med hvert opkald. Denne livscyklus er opdelt i seks faser .

  1. Gendan visning ("vis gendannelse") valgt på baggrund af den indgående anmodning om en visning (visning) og bygger det matchende komponenttræ på.
  2. Anvend anmodningsværdier udtrækker parametre fra anmodningen (normalt en HTTP-postanmodning ) og tildeler dem til de relevante JSF-komponenter, såsom inputfelter.
  3. Processvalideringer kontrollerer gyldigheden af ​​de tidligere bestemte poster. Separate konverter- og validatorobjekter, der blev tildelt komponenterne i visningsdefinitionen, bruges til dette formål.
  4. Opdater modelværdier tildeler de tidligere bestemte værdier til modelobjekterne.
  5. Invoke Application kalder metoder defineret af applikationen, for eksempel når der er trykket på en knap.
  6. Render Response genererer endelig svaret på den oprindelige anmodning, for eksempel en HTML-side. Til dette formål kaldes såkaldte renderere, som er tildelt visningskomponenterne.

Hvis der opstår fejl, eller hvis der f.eks. Skal kaldes en HTML-side, der ikke indeholder JSF-komponenter, som svar, kan individuelle faser springes over.

Implementeringer

JSF-specifikationen er implementeret af en række rammer. Disse leveres normalt i JEE-containere og kan ofte kun udskiftes med vanskeligheder. Disse inkluderer for eksempel:

Komponentrammer

Komponentrammer udvider JSF-implementeringer. De kan f.eks. Bruges til at generere JavaScript og Ajax .

Forskellige virksomheder tilbyder også grafiske udviklingsværktøjer til JSF.

standardisering

Den JSF - Specifikation var under Java Community Process udviklet (JSR 127) ved en række kendte virksomheder og vedtaget i version 1.1 den 27. maj 2004. Version 1.2 (JSR 252) blev offentliggjort den 11. maj 2006. Den aktuelle version af referenceimplementeringen Mojarra 1.2_15 blev frigivet den 24. september 2010.

Version 2.0 (JSR 314) gav især Ajax support . Den har været tilgængelig siden december 2009 og kan downloades fra Oracle-hjemmesiden. En implementering såvel som en tutorial og yderligere dokumentation er tilgængelig til visning og download i Mojarra-projektet ; den aktuelle version af Mojarra-referenceimplementeringen er 2.0.8. JSF 2.1 er en vedligeholdelsesudgivelse af version 2.0, specifikationen blev frigivet den 21. november 2010, den nuværende version af Mojarra-referenceimplementeringen er 2.1.6. JSF 2.2-versionen blev udgivet den 15. april 2013. Især indeholder den følgende innovationer: Understøttelse af HTML5 såsom videregivelse af nye HTML5-attributter eller brugerdefinerede dataattributter, udvidet flowstøtte gennem sin egen kontekst og afhængighedsinjektionsomfang ( @FlowScoped) i tillæg til det eksisterende ConversationScope ( @ConversationScoped), statsløse visninger ved at indstille attributten transient="true"såvel som Resource Library Contracts, en første tilgang til at give ressourcer til et valgbart udseende.

Jakarta Server Faces inkluderer

Hovedforskellen til JSP -EL skyldes ikke kun det foregående # , men også selve sproget. JavaServer Pages-Expression Language er mere dynamisk end JSF-Expression Language (JSF-EL). JSF-EL er mere stateful (statisk) sammenlignet med Java Swing- komponenterne. JSFs ekspressionssprog har en tovejsværdibinding, dvs. Dette betyder, at det kan læse (f.eks. Initialisere) og skrive (f.eks. Binde værdier til egenskaber) egenskaber (egenskaber for en bønne). Følgende tabel viser typerne af udtryk i JSF-ekspressionssprog:

Expression Language Expression eksempel
Binding af værdier #{handler.name}- navn er en egenskab af handleren bønne
Metode binding #{handler.actionMethode}- actionMethode er en fremgangsmåde af den handleren bønne
Aritmetik / logisk #{5+8}, #{65/5}, #{99>90}, #{!(5>6)||(8<4)}

Når du udvikler JSF-sider, bør du undgå at kombinere JSP- og JSF-udtryk, da dette kan føre til problemer.

Managed Bean Mechanism

Managed Bean- mekanismen tillader POJO'er med et specifikt omfang ( engelsk omfang ) og initialværdier for de såkaldte Managed Properties (i det specielle tilfælde, at bønnetypen java.util.Listeller java.util.Maper), der skal tilvejebringes. Dette kan konfigureres enten i XML- konfigurationen i JSF-applikationen eller fra JSF 2.0 (min. Java version 1.5) som en ekstra mulighed med kommentarer direkte i bønnen. Administrerede bønner kan bruges direkte (f.eks. I facetter) ved hjælp af EL-udtryk.

Scopes of Managed Beans (Engl. Scope )

Omfanget af en bønne bestemmer, hvor længe en bønne har eksisteret, og under hvilke omstændigheder den anses for at eksistere. Som tidligere nævnt kan administrerede bønner med administrerede egenskaber injiceres i andre administrerede bønner. Det skal bemærkes, at den injicerede bønne har et større omfang end den bønne, som den injiceres i. Årsagen til dette er, at den injicerede bønne ellers potentielt er mere kortvarig end den bønne, som den injiceres i.

Den følgende tabel viser alle gyldighedsområder i den aktuelle JSF-version (2.1) sorteret efter størrelsen på gyldighedsområdet med det mest kortvarige omfang øverst.

Værdi XML <managed-bean-scope> Kommentar Anvendelsesområde
anmodning @RequestScoped gyldig så længe den aktuelle anmodning behandles
udsigt @ViewScoped gyldig, så længe den aktuelle visning er gyldig
session @SessionScoped gyldig til en session
Ansøgning @ApplicationScoped gyldig til ansøgningen
ingen @NoneScoped gyldig som den bønne, som den blev injiceret i

JSF standard tags (ikke komplet)

Tagnavn beskrivelse
<f: visning> Opretter en forekomst af klassen javax.faces.component.UIViewRoot. Alle indeholdte komponenter bliver underordnede komponenter i udsigten.
<h: form> Binder inputkomponenter i en form. Sender POST-anmodning via HTTP.
<h: panelGrid> I HTML-tag <tabel>. Antallet af kolonner bestemmer kolonneattributten
<f: facet> Definerer en facet som et underordnet element i en container (f.eks. Kurs mod en tabel)
<h: outputText> Normal HTML-tekst
<h: outputLabel> I HTML-tag <label>. Identifikation af et indtastningsfelt
<h: panelGroup> Beholder, der kombinerer flere JSF-tags i et tag
<h: inputText> I HTML <input> -tag med type = "text" henviser værdiattribut til komponenterne (f.eks. EL-udtryk)
<h: inputSecret> I HTML <input> -tag med type = "password"
<h: commandButton> Knap i HTML. <input> -tag med typeattribut (indsend, nulstil, billede). Som standard: send. Indsender formular og udløser ActionEvent (via bønnemetoden).
<h: besked> Udsender den første fejlmeddelelse for de komponenter, der er specificeret i for attributten. ErrorStyle-attribut kan bruges som en CSS-fejlrepræsentation.

litteratur

  • Martin Marinschek et al.: JavaServer Faces 2.0: Grundlæggende og avancerede koncepter . dpunkt.verlag, 2009, ISBN 978-3-89864-606-2
  • Bernd Müller: JavaServer Faces 2.0: En projektmappe til praksis . Hanser, 2010, ISBN 978-3-446-41992-6
  • Marcel Urbanek: JavaServer Faces: Forståelse af JSF og brug af den i praksis . w3l, 2010, ISBN 978-3-86834-003-7

Weblinks

Commons : Jakarta Server Faces  - Samling af billeder, videoer og lydfiler

Individuelle beviser

  1. projects.eclipse.org .
  2. Udgivelse 3.0.0 . 7. oktober 2020 (adgang til 9. oktober 2020).
  3. primefaces.org
  4. bootsfaces.net
  5. jboss.org RichFaces, adgang til 18. januar 2011
  6. javaserverfaces.java.net Oracle Mojarra JSF Download, adgang til 18. januar 2011
  7. a b Oracle Mojarra JavaServer Faces. Hentet 19. januar 2012 .
  8. ^ Andy Bosch: Hvad er nyt i JSF 2.1. Hentet 9. oktober 2011 .
  9. JSR # 344 JavaServerTM Faces 2.2 Endelig godkendelsesafstemning
  10. Hvad er nyt i JSF 2.2?