Вы здесь:

Wicket предназначен для разработки web приложений, но это не совсем template framework, это больше (что-то типа React? Vue? Очень примитивно работа React выглядит так. Есть View, Action, State. View вызывает Acton, который меняет State, а View отслеживает изменения в State. В Wicket примерно также: View отслеживает изменения в Model).
Примеры из книги "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:

Альтернативы 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
https://mkyong.com/tutorials/wicket-tutorials/
Examples from Apache Wicket Cookbook
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
Getting Started with Apache Wicket (DZone Refcard)
Stateless и Statefull страницы в Wicket 1.4 (Habr)