Introduksjon til Wicket Framework

1. Oversikt

Wicket er et Java-komponentorientert rammeverk på webserveren som tar sikte på å forenkle å bygge nettgrensesnitt ved å introdusere mønstre kjent fra desktop UI-utvikling.

Med Wicket er det mulig å lage et webapplikasjon som bare bruker Java-kode og XHTML-kompatible HTML-sider. Ingen behov for Javascript eller XML-konfigurasjonsfiler.

Det gir et lag over forespørselssvarssyklusen, og beskytter mot å jobbe på et lavt nivå og lar utviklere fokusere på forretningslogikken.

I denne artikkelen vil vi introdusere det grunnleggende ved å bygge HelloWorld Wicket-applikasjon, etterfulgt av et komplett eksempel med to innebygde komponenter som kommuniserer med hverandre.

2. Oppsett

For å kjøre et Wicket-prosjekt, la oss legge til følgende avhengigheter:

 org.apache.wicket wicket-core 7.4.0 

Det kan være lurt å sjekke ut den nyeste versjonen av Wicket i Maven Central-arkivet, som kanskje ikke på det tidspunktet du leser sammenfaller med den som brukes her.

Nå er vi klare til å bygge vår første Wicket-applikasjon.

3. Hei Verden Wicket

La oss starte med å subklassere Wicket’s Webapplikasjon klasse, som i det minste krever overstyring av Klasse getHomePage () metode.

Wicket vil bruke denne klassen som applikasjonens viktigste inngangspunkt. Inne i metoden er det bare å returnere a klasse objekt for en klasse som heter Hei Verden:

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

Wicket favoriserer konvensjon fremfor konfigurasjon. Hvis du skal legge til en ny webside i applikasjonen, må du opprette to filer: en Java-fil og en HTML-fil med samme navn (men annen utvidelse) under samme katalog. Ytterligere konfigurasjon er bare nødvendig hvis du vil endre standardadferd.

I kildekodens pakkekatalog legger du først til HelloWorld.java:

offentlig klasse HelloWorld utvider websiden {public HelloWorld () {add (new Label ("hallo", "Hello World!")); }}

deretter HelloWorld.html:

Som et siste trinn, legg til filterdefinisjonen inne i web.xml:

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

Det er det. Vi har nettopp kodet vår første Wicket-webapplikasjon.

Kjør prosjektet ved å bygge en krig fil, (mvn-pakke fra kommandolinjen) og distribuer den på en servletcontainer som Jetty eller Tomcat.

La oss få tilgang til // localhost: 8080 / HelloWorld / i nettleseren. En tom side med meldingen Hei Verden! skal vises.

4. Wicket-komponenter

Komponenter i Wicket er triader som består av en Java-klasse, HTML-markering og en modell. Modeller er en fasade som komponenter bruker for å få tilgang til dataene.

Denne strukturen gir en fin separasjon av bekymringer, og ved å koble komponenten fra datasentriske operasjoner, øker det gjenbruk av kode.

Eksemplet som følger demonstrerer hvordan du legger til Ajax-oppførsel til en komponent. Den består av en side med to elementer: en rullegardinmeny og en etikett. Når rullegardinvalget endres, vil etiketten (og bare etiketten) bli oppdatert.

Hoveddelen av HTML-filen CafeSelector.html vil være minimal, med bare to elementer, en rullegardinmeny og en etikett:

Adresse: adresse

La oss lage en etikett på Java-siden:

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

Det første argumentet i Merkelapp konstruktør som matcher wicket: id tilordnet i HTML-filen. Det andre argumentet er komponentens modell, en innpakning for de underliggende dataene som presenteres i komponenten.

De setOutputMarkupId metoden gjør komponenten kvalifisert for endring via Ajax. La oss nå opprette rullegardinlisten og legge til Ajax-oppførsel i den:

DropDownChoice cafeDropdown = ny DropDownChoice ("kafeer", nytt PropertyModel (dette, "valgtCafe"), cafeNames); cafeDropdown.add (new AjaxFormComponentUpdatingBehavior ("onchange") {@Override protected void onUpdate (AjaxRequestTarget target) {String name = (String) cafeDropdown.getDefaultModel (). getObject (); address.setAddress (adresse. adresse). Adresse. adresse) ()); target.add (addressLabel);}});

Opprettelsen ligner på etiketten, konstruktøren godtar wicket ID, en modell og en liste over kafénavn.

Deretter AjaxFormComponentUpdatingBehavior er lagt til med onUpdate tilbakeringingsmetode som oppdaterer etikettens modell når ajax-forespørsel er utstedt. Til slutt er etikettkomponenten satt som et mål for forfriskning.

Til slutt er etikettkomponenten satt som et mål for forfriskning.

Som du ser er alt Java, ikke en eneste linje med Javascript var nødvendig. For å endre hva etiketten viser, endret vi ganske enkelt en POJO. Mekanismen som endring av et Java-objekt oversetter til en endring på websiden skjer bak gardinene og er ikke relevant for utvikleren.

Wicket tilbyr et stort sett med AJAX-aktiverte komponenter direkte fra esken. Katalogen over komponentene med live eksempler er tilgjengelig her.

5. Konklusjon

I denne innledende artikkelen har vi dekket det grunnleggende om Wicket, det komponentbaserte nettverket i Java.

Wicket gir et lag med abstraksjon som tar sikte på å gjøre helt bort rørleggerkoden.

Vi har tatt med to enkle eksempler, som du finner på GitHub, for å gi deg en smakebit på hvordan utviklingen med dette rammeverket ser ut.


$config[zx-auto] not found$config[zx-overlay] not found