Вы здесь:

"Wicket относится к категории программных каркасов (application framework). Являясь надстройкой над Servlet API, Wicket предоставляет всю необходимую инфраструктуру для функционирования приложений, включая средства для управления жизненным циклом объектов, разграничения прав доступа, локализации, обработки исключительных ситуаций, поддержки сессий пользователей и т.п." ( Разработка Web-приложений с использованием Wicket)

(что-то типа React? Vue? Очень примитивно работа React выглядит так. Есть View, Action, State. View вызывает Acton, который меняет State, а View отслеживает изменения в State. В Wicket примерно также: View отслеживает изменения в Model).
Template Engines for Spring
Примеры из книги "Wicket in action": Wicket test examples на моем github. Не все примеры, только несколько, для того, чтобы понять работу Wicket. Все примеры в https://github.com/perty/wicket-test-examples

Установки:

vasi-note:~/prog/java/wicket/Wicket-tutorial-examples/HelloWorldExample
echo $JAVA_HOME
/usr/lib/jvm/java-17-openjdk-amd64

изменил в pom.xml:

<packaging>war</packaging>;

и в pom.xml добавил:

<plugin>
    <groupId>org.apache.tomcat.maven</groupId>
    <artifactId>tomcat7-maven-plugin</artifactId>
    <version>2.2</version>
    <configuration>
        <!-- http port -->
        <port>9090</port>
        <!-- application path always starts with /-->
        <path>/</path>
        <contextReloadable>true</contextReloadable>
    </configuration>
</plugin>

Связь Java файла и HTML представления делается следующим образом. Путь Java, его package, должен соответствовать пути HTML файла в resources:

Link java to resources

Запуск:

$ mvn jetty:run


Запуск в режиме разработки:

$ mvn -Dwicket.configuration=deployment jetty:run

Открыть http://127.0.0.1:8080/wicket-test-examples/
Примеры:

Link java to resources

Link java to resources

Link java to resources

Stateless(bookmarkable) и Statefull страницы в Wicket:
Wicket хранит последнюю просмотренную страницу в сессии. Stateless(bookmarkable) page — это страница не имеющая состояния, Statefull page — это страница с состоянием.
При каждом запросе к Stateless page, её экземпляр создаётся заново. К Statefull page присваивается версия. Чтобы страница стала stateless необходимо выполнить два условия:

  • В первую очередь страница должна быть bookmarkable.
  • Страница должна использовать только stateless компоненты.

Bookmarkable pages and links
Класс stateless страницы должен иметь пустой конструктов или конструктор, который принимает PageParameters аргумент (который оборачивает аргументы запроса к странице). В случае если класс имеет оба конструктора, то при создании страницы по умолчанию будет использоваться конструктор с параметрами. И еще: если на странице используется хотя бы один компонент, который не является stateless, то вся страница становится statefull, и полностью сериализуется и сохраняется в сессии и далее в истории на диске. Если страница не имеет конструктора с параметрами, то при переходе на страницу будет использован конструктор без параметров (без каких-либо ошибок и предупреждений), потому что wicket не проверяет, действительно ли для нее существуют параметры запроса, и wicket не знает, действительно ли они предназначены для этой страницы или нет.
Переход на stateless страницу:

new Link() {
    public void onClick() {
        setResponsePage(new MyPage(...)); // stateless page
    }
}

 

Тестирование

Тестировать html страницы можно с использованием встроенных инструментов Wicket https://cwiki.apache.org/confluence/display/WICKET/Unit+Test или других. На пример https://jsoup.org/.
Пример для теста:

Document doc = Jsoup.connect("https://en.wikipedia.org/").get();
log(doc.title());
Elements newsHeadlines = doc.select("#mp-itn b a");
for (Element headline : newsHeadlines) {
    log("%s\n\t%s",headline.attr("title"), headline.absUrl("href"));
    // тесты headline.attr("title"), headline.absUrl("href")
}


Ссылки на примеры использования jsoup:

Запуск приложений

$ mvn jetty:run
# с портом 9090
$ mvn jetty:run -Djetty.port=9090

Альтернативы Wicket:

Spring MVC
Vaadin:
Vaadin (код java компилируется в js с помощью компилятора Vaadin Compiler, основанного на Google Web Toolkit (GWT))
Vaadin demo
https://www.baeldung.com/vaadin

FreeMarker и Spring MVC

Eclipse RAP:
Eclipse RAP

Ссылки:

Wicket test examples на моем gihub
Apache Wicket User Guide - Reference Documentation
Примеры Wicket
https://github.com/apache/wicket
Examples from Apache Wicket Cookbook
Java Web: Introduzione ad Apache Wicket
github 55 Minutes Wicket Project (Репозиторию 12 лет. "...This project requires JDK 6 and Wicket 1.5. Not compatible with Wicket 6...")

github Wicket+Bootstrap
github Wicket 10+Bootstrap 5.x
Enhance Wicket With Spring Boot

Wicket in action (https://github.com/cherepakhin/senior/tree/main/new_site/wicket)/>
Getting Started with Apache Wicket (DZone Refcard)
Stateless и Statefull страницы в Wicket 1.4 (Habr)
https://cwiki.apache.org/confluence/display/wicket/spring
https://www.baeldung.com/intro-to-the-wicket-framework
Apache Wicket 10 User Guide Examples
Examples Apache Wicket
Знакомство с Vuecket (Habr, Wicket+Vue)
Wicket 10.x Reference Guide
Wicket SpringSecurity Example
ОЧЕНЬ МНОГО примеров (www.javatips.net, НО ИНТЕРФЕЙС ресурса... )
https://github.com/bitstorm/Wicket-tutorial-examples
Hello world web wicket (github)
Wicket: HelloWorld (habr, 2010)
Разработка Web-приложений с использованием Wicket (rsdn.org)
Чистый подход к моделям Wicket (coderlessons.com)
Migrating to Apache Wicket (rutube)
Setup Apache Wicket project with IntelliJ IDEA (rutube)
Template Engines for Spring
Wicket 9.x Reference Guidef
Create a Wicket Quickstart