Въведение в Wicket Framework

1. Общ преглед

Wicket е рамка, ориентирана към уеб сървъра на Java от страна на сървъра, която има за цел да опрости изграждането на уеб интерфейси чрез въвеждане на модели, известни от разработката на потребителския интерфейс на работния плот.

С Wicket е възможно да се създаде уеб приложение, използвайки само Java код и XHTML съвместими HTML страници. Няма нужда от Javascript, нито XML конфигурационни файлове.

Той осигурява слой върху цикъла на отговор на заявката, като предпазва от работа на ниско ниво и позволява на разработчиците да се съсредоточат върху бизнес логиката.

В тази статия ще представим основите, като изградим приложението HelloWorld W icket, последвано от пълен пример, използващ два вградени компонента, които комуникират помежду си.

2. Настройка

За да стартираме Wicket проект, нека добавим следните зависимости:

 org.apache.wicket wicket-core 7.4.0 

Може да искате да проверите най-новата версия на Wicket в хранилището на Maven Central, която по време на четенето ви може да не съвпада с използваната тук.

Сега сме готови да изградим първото си приложение Wicket.

3. HelloWorld Wicket

Нека започнем с подкласиране на класа на WebApplication на Wicket , който като минимум изисква заместване на метода Class getHomePage () .

Wicket ще използва този клас като основна входна точка на приложението. Във вътрешността на метода, трябва само да се върне клас обект на класа на име HelloWorld:

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

Wicket благоприятства конвенцията пред конфигурацията. Добавянето на нова уеб страница към приложението изисква създаване на два файла: Java файл и HTML файл със същото име (но различно разширение) в една и съща директория. Допълнителна конфигурация е необходима само ако искате да промените поведението по подразбиране.

В директорията на пакета на изходния код първо добавете HelloWorld.java :

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

тогава HelloWorld.html :

Като последна стъпка добавете дефиницията на филтъра в web.xml:

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

Това е. Току-що кодирахме първото си уеб приложение Wicket.

Стартирайте проекта, като създадете военен файл (( mvn пакет от командния ред) и го разположите в контейнер за сървлети като Jetty или Tomcat.

Да влезем в браузъра // localhost: 8080 / HelloWorld /. Празна страница със съобщението Hello World! ще се появи.

4. Wicket компоненти

Компонентите в Wicket са триади, състоящи се от клас Java, HTML маркировка и модел. Моделите са фасада, която компонентите използват за достъп до данните.

Тази структура осигурява приятно разделяне на проблемите и чрез отделяне на компонента от операции, ориентирани към данни, увеличава повторното използване на кода.

Следващият пример демонстрира как да добавите поведение на Ajax към компонент. Състои се от страница с два елемента: падащо меню и етикет. Когато се промени падащото меню, етикетът (и само етикетът) ще бъде актуализиран.

Основният текст на HTML файла CafeSelector.html ще бъде минимален, само с два елемента, падащо меню и етикет:

Address: address

От страна на Java, нека създадем етикета:

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

Първият аргумент в конструктора Label, съответстващ на wicket: id, присвоен в HTML файла. Вторият аргумент е моделът на компонента, обвивка за основните данни, която е представена в компонента.

Методът setOutputMarkupId прави компонента допустим за модификация чрез Ajax. Нека сега създадем падащия списък и добавим поведение на Ajax към него:

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); } });

Създаването е подобно на етикета, конструкторът приема идентификационния номер на вратата, модел и списък с имена на кафенета.

Тогава AjaxFormComponentUpdatingBehavior се добавя с OnUpdate метод за обратно повикване, която се актуализира модела на етикета след издаване Аякс поискване. И накрая, компонентът на етикета е зададен като цел за освежаване.

И накрая, компонентът на етикета е зададен като цел за освежаване.

Както можете да видите всичко е Java, не е необходим нито един ред Javascript. За да променим това, което показва етикетът, ние просто модифицирахме POJO. Механизмът, чрез който модифицирането на обект на Java се превръща в промяна в уеб страницата се случва зад завесите и не е от значение за разработчика.

Wicket предлага голям набор от компоненти, поддържащи AJAX, готови. Каталогът на компонентите с живи примери е достъпен тук.

5. Заключение

В тази уводна статия разгледахме основите на Wicket, базирана на компоненти уеб рамка в Java.

Wicket осигурява слой абстракция, който има за цел да премахне изцяло водопроводния код.

Включихме два прости примера, които могат да бъдат намерени в GitHub, за да ви дадем представа за това как изглежда разработката с тази рамка.