Jakarta Server Faces
| Jakarta Server Faces
| |
|---|---|
|
| |
| 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ænseflader på websider 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
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 .
- Gendan visning ("vis gendannelse") valgt på baggrund af den indgående anmodning om en visning (visning) og bygger det matchende komponenttræ på.
- Anvend anmodningsværdier udtrækker parametre fra anmodningen (normalt en HTTP-postanmodning ) og tildeler dem til de relevante JSF-komponenter, såsom inputfelter.
- Processvalideringer kontrollerer gyldigheden af de tidligere bestemte poster. Separate konverter- og validatorobjekter, der blev tildelt komponenterne i visningsdefinitionen, bruges til dette formål.
- Opdater modelværdier tildeler de tidligere bestemte værdier til modelobjekterne.
- Invoke Application kalder metoder defineret af applikationen, for eksempel når der er trykket på en knap.
- 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:
- Mojarra, Jakarta Server Faces referenceimplementering som en del af GlassFish Java- applikationsserveren
- Apache MyFaces , implementeringen af Apache Software Foundation
Komponentrammer
Komponentrammer udvider JSF-implementeringer. De kan f.eks. Bruges til at generere JavaScript og Ajax .
- ICEfaces , open source-ramme fra ICEsoft; baseret på Woodstock GUI-komponentrammen.
- PrimeFaces
- BootsFaces
- Mojarra skalaer
- J4Fry
- xulfaces
- jQuery4jsf
- MyFaces Trinidad fra Apache Software Foundation
- MyFaces Tobago fra Apache Software Foundation
- MyFaces Tomahawk fra Apache Software Foundation
- Oracle ADFs- komponentbibliotek, en kommerciel Java-ramme til Java-virksomhedsapplikationer (har nogle kernefunktioner til fælles med Apache MyFaces Trinidad )
- RichFaces inkl. Ajax4jsf fra Red Hat (tidligere Exadel) [udvikling ophørte i juni 2016]
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
- Et tagbibliotek til integration af JSF-overfladekomponenterne i JavaServer-sider eller i et facelet ,
- en Java - API til styring styrer brugergrænsefladen. Dette inkluderer håndtering af begivenheder , validering af input, navigation og support til internationalisering .
- Et separat udtrykssprog (EL), der er baseret på JSP- teknologien. I JSF er EL-udtryk skrevet i følgende notation:
#{1+2}, #{PI/2}, #{handler.attribut}
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
- JavaServer står over for teknologi på Oracle
- Open source implementering af Apache MyFaces
- JSF book online , fra tid til anden opdateret online version af ovennævnte bog Martin Marinschek et al.: JavaServer Faces 2.0: Grundlæggende og avancerede koncepter .
- JSF-implementeringsmønster (PDF, 618 kB)
- Demonstration af standard- og udvidelseskomponenter
- JSF Tutorials Memorynotfound JSF tutorials, kodeeksempler , bedste praksis
Individuelle beviser
- ↑ projects.eclipse.org .
- ↑ Udgivelse 3.0.0 . 7. oktober 2020 (adgang til 9. oktober 2020).
- ↑ primefaces.org
- ↑ bootsfaces.net
- ↑ jboss.org RichFaces, adgang til 18. januar 2011
- ↑ javaserverfaces.java.net Oracle Mojarra JSF Download, adgang til 18. januar 2011
- ↑ a b Oracle Mojarra JavaServer Faces. Hentet 19. januar 2012 .
- ^ Andy Bosch: Hvad er nyt i JSF 2.1. Hentet 9. oktober 2011 .
- ↑ JSR # 344 JavaServerTM Faces 2.2 Endelig godkendelsesafstemning
- ↑ Hvad er nyt i JSF 2.2?