Introduktion til Wicket Framework

1. Oversigt

Wicket er en Java-server-web-komponentorienteret ramme, der sigter mod at forenkle opbygning af webgrænseflader ved at indføre mønstre, der er kendt fra desktop UI-udvikling.

Med Wicket er det muligt at oprette en webapplikation, der kun bruger Java-kode og XHTML-kompatible HTML-sider. Intet behov for Javascript eller XML-konfigurationsfiler.

Det giver et lag over anmodningssvarcyklussen, der beskytter mod at arbejde på et lavt niveau og giver udviklere mulighed for at fokusere på forretningslogikken.

I denne artikel introducerer vi det grundlæggende ved at opbygge HelloWorld Wicket-applikation efterfulgt af et komplet eksempel ved hjælp af to indbyggede komponenter, der kommunikerer med hinanden.

2. Opsætning

Lad os tilføje følgende afhængigheder for at køre et Wicket-projekt:

 org.apache.wicket wicket-core 7.4.0 

Det kan være en god idé at tjekke den nyeste version af Wicket i Maven Central-arkivet, som på tidspunktet for din læsning muligvis ikke falder sammen med den, der bruges her.

Nu er vi klar til at bygge vores første Wicket-applikation.

3. Hej Verden Wicket

Lad os starte med at subklassificere Wicket Webapplikation klasse, som i det mindste kræver tilsidesættelse af Klasse getHomePage () metode.

Wicket bruger denne klasse som applikations hovedindgangssted. Inde i metoden skal du blot returnere a klasse objekt for en klasse, der hedder Hej Verden:

offentlig klasse HelloWorldApplication udvider WebApplication {@Override public Class getHomePage () {returner HelloWorld.class; }}

Wicket favoriserer konvention frem for konfiguration. Tilføjelse af en ny webside til applikationen kræver oprettelse af to filer: en Java-fil og en HTML-fil med samme navn (men forskellige udvidelser) under samme bibliotek. Yderligere konfiguration er kun nødvendig, hvis du vil ændre standardadfærden.

I kildekodens pakkekatalog skal du først tilføje HelloWorld.java:

offentlig klasse HelloWorld udvider websiden {offentlig HelloWorld () {tilføj (ny etiket ("hej", "Hello World!")); }}

derefter HelloWorld.html:

Som et sidste trin skal du tilføje filterdefinitionen inde i web.xml:

 wicket.examples org.apache.wicket.protocol.http.WicketFilter applicationClassName com.baeldung.wicket.examples.HelloWorldApplication 

Det er det. Vi har netop kodet vores første Wicket-webapplikation.

Kør projektet ved at bygge en krig fil, (mvn-pakke fra kommandolinjen) og installer den på en servletcontainer som f.eks. anløbsbro eller Tomcat.

Lad os få adgang til // localhost: 8080 / HelloWorld / i browseren. En tom side med beskeden Hej Verden! vises.

4. Wicket-komponenter

Komponenter i Wicket er treklasser bestående af en Java-klasse, HTML-markering og en model. Modeller er en facade, som komponenter bruger til at få adgang til dataene.

Denne struktur giver en god adskillelse af bekymringer, og ved at afkoble komponenten fra datacentriske operationer øges genbrug af kode.

Eksemplet, der følger demonstrerer, hvordan man tilføjer Ajax-opførsel til en komponent. Den består af en side med to elementer: en rullemenu og en etiket. Når rullemenuændringen ændres, opdateres etiketten (og kun etiketten).

HTML-filens brødtekst CafeSelector.html vil være minimal med kun to elementer, en rullemenu og en etiket:

Adresse: adresse

På Java-siden skal vi oprette etiketten:

Label addressLabel = new Label ("address", new PropertyModel (this.address, "address")); addressLabel.setOutputMarkupId (sand);

Det første argument i Etiket konstruktør, der matcher wicket: id tildelt i HTML-filen. Det andet argument er komponentens model, en indpakning til de underliggende data, der præsenteres i komponenten.

Det setOutputMarkupId metode gør komponenten berettiget til ændring via Ajax. Lad os nu oprette rullelisten og føje Ajax-opførsel til den:

DropDownChoice cafeDropdown = ny DropDownChoice ("cafeer", nyt PropertyModel (dette, "selectedCafe"), cafeNames); cafeDropdown.add (ny AjaxFormComponentUpdatingBehavior ("onchange") {@Override beskyttet ugyldighed onUpdate (AjaxRequestTarget target) {String name = (String) cafeDropdown.getDefaultModel (). getObject (); address.setAddress (name) adresse). ()); target.add (addressLabel);}});

Oprettelsen svarer til etiketten, konstruktøren accepterer wicket-id'et, en model og en liste over cafénavne.

Derefter AjaxFormComponentUpdatingBehavior tilføjes med onUpdate tilbagekaldsmetode, der opdaterer etiketens model, når ajax-anmodning er udstedt. Endelig er etiketkomponenten indstillet som et mål for opdatering.

Endelig er etiketkomponenten indstillet som et mål for opdatering.

Som du kan se, er alt Java, ikke en eneste linje med Javascript var nødvendig. For at ændre, hvad etiketten viser, ændrede vi simpelthen en POJO. Den mekanisme, hvormed ændring af et Java-objekt oversættes til en ændring på websiden sker bag gardinerne og er ikke relevant for udvikleren.

Wicket tilbyder et stort sæt AJAX-aktiverede komponenter out-of-the-box. Kataloget over komponenter med live eksempler er tilgængeligt her.

5. Konklusion

I denne indledende artikel har vi dækket det grundlæggende i Wicket, den komponentbaserede webramme i Java.

Wicket tilvejebringer et lag af abstraktion, der sigter mod at helt fjerne VVS-koden.

Vi har inkluderet to enkle eksempler, som kan findes på GitHub, for at give dig en forsmag på, hvordan udviklingen med denne ramme ser ud.