Introduktion till Wicket Framework

1. Översikt

Wicket är ett webb-komponentorienterat ramverk på Java-serversidan som syftar till att förenkla att bygga webbgränssnitt genom att införa mönster som är kända från desktop UI-utveckling.

Med Wicket är det möjligt att bygga en webbapplikation med endast Java-kod och XHTML-kompatibla HTML-sidor. Inget behov av Javascript eller XML-konfigurationsfiler.

Det ger ett lager över förfrågan-svarscykeln, skyddar från att arbeta på en låg nivå och tillåter utvecklare att fokusera på affärslogiken.

I den här artikeln presenterar vi grunderna genom att bygga HelloWorld W icket-applikationen, följt av ett komplett exempel med två inbyggda komponenter som kommunicerar med varandra.

2. Inställning

För att köra ett Wicket-projekt, låt oss lägga till följande beroenden:

 org.apache.wicket wicket-core 7.4.0 

Du kanske vill kolla in den senaste versionen av Wicket i Maven Central-arkivet, som vid tiden för din läsning kanske inte sammanfaller med den som används här.

Nu är vi redo att bygga vår första Wicket-applikation.

3. HelloWorld Wicket

Låt oss börja med att underklassificera Wickets WebApplication- klass, som åtminstone kräver åsidosättande av metoden Class getHomePage () .

Wicket kommer att använda den här klassen som applikationens huvudsakliga startpunkt. Inuti den metod, helt enkelt returnera en klass objekt av en klass med namnet Helloworld:

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

Wicket gynnar konvention framför konfiguration. Att lägga till en ny webbsida till applikationen kräver att du skapar två filer: en Java-fil och en HTML-fil med samma namn (men olika tillägg) under samma katalog. Ytterligare konfiguration behövs bara om du vill ändra standardbeteendet.

I källkodens paketkatalog, lägg först till HelloWorld.java :

public class HelloWorld extends WebPage { public HelloWorld() { add(new Label("hello", "Hello World!")); } }

sedan HelloWorld.html :

Som ett sista steg lägger du till filterdefinitionen inuti web.xml:

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

Det är allt. Vi har just kodat vår första Wicket-webbapplikation.

Kör projektet genom att bygga en krigsfil , ( mvn-paket från kommandoraden) och distribuera det på en servletcontainer som Jetty eller Tomcat.

Låt oss komma åt // localhost: 8080 / HelloWorld / i webbläsaren. En tom sida med meddelandet Hello World! ska visas.

4. Wicket-komponenter

Komponenter i Wicket är triader som består av en Java-klass, HTML-märkning och en modell. Modeller är en fasad som komponenter använder för att komma åt data.

Denna struktur ger en trevlig åtskillnad mellan problem och genom att koppla bort komponenten från datacentrerad operation ökar kodåteranvändningen.

Följande exempel visar hur man lägger till Ajax-beteende till en komponent. Den består av en sida med två element: en rullgardinsmeny och en etikett. När rullgardinsvalet ändras kommer etiketten (och endast etiketten) att uppdateras.

Brödtexten för HTML-filen CafeSelector.html är minimal, med endast två element, en rullgardinsmeny och en etikett:

Address: address

Låt oss skapa etiketten på Java-sidan:

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

Det första argumentet i etikettkonstruktören som matchar wicket: id tilldelat i HTML-filen. Det andra argumentet är komponentens modell, ett omslag för underliggande data som presenteras i komponenten.

Den setOutputMarkupId metoden gör komponenten i fråga för modifiering via Ajax. Låt oss nu skapa rullgardinslistan och lägga till Ajax-beteende till den:

DropDownChoice cafeDropdown = new DropDownChoice( "cafes", new PropertyModel(this, "selectedCafe"), cafeNames); cafeDropdown.add(new AjaxFormComponentUpdatingBehavior("onchange") { @Override protected void onUpdate(AjaxRequestTarget target) { String name = (String) cafeDropdown.getDefaultModel().getObject(); address.setAddress(cafeNamesAndAddresses.get(name).getAddress()); target.add(addressLabel); } });

Skapelsen liknar etiketten, konstruktören accepterar wicket-id, en modell och en lista med cafénamn.

Sedan läggs AjaxFormComponentUpdatingBehavior till med återuppringningsmetoden onUpdate som uppdaterar etikettens modell när ajax-begäran har utfärdats. Slutligen sätts etikettkomponenten som ett mål för uppfriskning.

Slutligen sätts etikettkomponenten som ett mål för uppfriskning.

Som du kan se är allt Java, inte en enda rad Javascript var nödvändig. För att ändra vad etiketten visar ändrade vi helt enkelt en POJO. Mekanismen genom vilken modifiering av ett Java-objekt översätts till en förändring på webbsidan sker bakom gardinerna och är inte relevant för utvecklaren.

Wicket erbjuder en stor uppsättning AJAX-aktiverade komponenter direkt från lådan. Katalogen över komponenterna med liveexempel finns här.

5. Sammanfattning

I den här inledningsartikeln har vi täckt grunderna i Wicket, det komponentbaserade webbramverket i Java.

Wicket ger ett lager av abstraktion som syftar till att helt avskaffa VVS-koden.

Vi har inkluderat två enkla exempel, som finns på GitHub, för att ge dig en smak av hur utvecklingen med detta ramverk ser ut.