This is an automated email from the ASF dual-hosted git repository.

adelbene pushed a commit to branch wicket-10.x
in repository https://gitbox.apache.org/repos/asf/wicket.git


The following commit(s) were added to refs/heads/wicket-10.x by this push:
     new 21b8732706 WICKET-7180 Fix typos, language and links (#1424)
21b8732706 is described below

commit 21b8732706a75ad4f6bf6a48b1126fc4e3aa0799
Author: Martijn Dashorst <[email protected]>
AuthorDate: Thu Apr 16 12:37:16 2026 +0200

    WICKET-7180 Fix typos, language and links (#1424)
    
    * WICKET-7180 Fix typos, language and links
    
    After a full review of the user guide, claude suggested these edits to
    improve the language, links, and code examples to ensure the docs are
    up to our Wicket 10.x standards.
    
    * WICKET-7180 Docs: Junit 4 -> Junit 5
---
 .../src/main/asciidoc/advanced/advanced_6.adoc     |  6 ++--
 .../src/main/asciidoc/ajax/ajax_2.adoc             | 10 +++---
 .../src/main/asciidoc/ajax/ajax_3.adoc             |  2 +-
 .../src/main/asciidoc/ajax/ajax_5.adoc             |  2 +-
 .../src/main/asciidoc/ajax/ajax_6.adoc             |  2 +-
 .../src/main/asciidoc/ajax/ajax_7.adoc             |  2 +-
 .../asciidoc/bestpractices/bestpractices_1.adoc    |  4 +--
 .../asciidoc/bestpractices/bestpractices_3.adoc    |  4 +--
 .../asciidoc/bestpractices/bestpractices_5.adoc    |  2 +-
 .../src/main/asciidoc/componentLifecycle.adoc      |  2 +-
 .../componentLifecycle/componentLifecycle_1.adoc   |  4 +--
 .../componentLifecycle/componentLifecycle_4.adoc   |  6 ++--
 .../componentLifecycle/componentLifecycle_6.adoc   |  2 +-
 .../src/main/asciidoc/componentQueueing.adoc       |  2 +-
 .../componentQueueing/componentQueueing_1.adoc     |  4 +--
 .../componentQueueing/componentQueueing_2.adoc     |  2 +-
 .../componentQueueing/componentQueueing_5.adoc     |  2 +-
 .../src/main/asciidoc/contributing.adoc            |  2 +-
 .../src/main/asciidoc/forms2/forms2_11.adoc        |  6 ++--
 .../src/main/asciidoc/forms2/forms2_12.adoc        |  2 +-
 .../src/main/asciidoc/forms2/forms2_3.adoc         |  2 +-
 .../src/main/asciidoc/forms2/forms2_4.adoc         |  4 +--
 .../src/main/asciidoc/forms2/forms2_9.adoc         |  2 +-
 .../src/main/asciidoc/helloWorld/helloWorld_1.adoc |  2 +-
 .../src/main/asciidoc/helloWorld/helloWorld_2.adoc |  6 ++--
 .../src/main/asciidoc/helloWorld/helloWorld_3.adoc |  2 +-
 .../src/main/asciidoc/helloWorld/helloWorld_4.adoc |  8 ++---
 .../src/main/asciidoc/howToSource.adoc             |  4 +--
 .../src/main/asciidoc/i18n/i18n_1.adoc             |  2 +-
 .../src/main/asciidoc/i18n/i18n_2.adoc             |  4 +--
 .../src/main/asciidoc/i18n/i18n_6.adoc             |  2 +-
 .../main/asciidoc/internals/autocomponents.adoc    |  4 +--
 .../src/main/asciidoc/internals/pagestoring.adoc   |  6 ++--
 .../src/main/asciidoc/introduction.adoc            | 12 +++----
 wicket-user-guide/src/main/asciidoc/jee.adoc       |  6 ++--
 wicket-user-guide/src/main/asciidoc/jee/jee_3.adoc |  2 +-
 .../asciidoc/jsintegration/jsintegration_1.adoc    |  6 ++--
 .../asciidoc/jsintegration/jsintegration_2.adoc    | 12 +++----
 .../src/main/asciidoc/keepControl.adoc             |  4 +--
 .../main/asciidoc/keepControl/keepControl_1.adoc   |  2 +-
 .../main/asciidoc/keepControl/keepControl_4.adoc   |  2 +-
 .../main/asciidoc/keepControl/keepControl_5.adoc   |  2 +-
 .../main/asciidoc/keepControl/keepControl_9.adoc   |  2 +-
 .../src/main/asciidoc/layout/layout_1.adoc         |  2 +-
 .../src/main/asciidoc/layout/layout_2.adoc         |  4 +--
 .../src/main/asciidoc/layout/layout_3.adoc         |  5 +--
 .../src/main/asciidoc/layout/layout_4.adoc         |  4 +--
 .../main/asciidoc/modelsforms/modelsforms_3.adoc   | 14 ++------
 .../main/asciidoc/modelsforms/modelsforms_4.adoc   |  4 +--
 .../main/asciidoc/modelsforms/modelsforms_5.adoc   |  4 +--
 .../main/asciidoc/modelsforms/modelsforms_7.adoc   |  4 +--
 .../main/asciidoc/modelsforms/modelsforms_8.adoc   |  4 +--
 .../src/main/asciidoc/nativewebsockets.adoc        |  6 ++--
 .../nativewebsockets/nativewebsockets_2.adoc       |  4 +--
 .../nativewebsockets/nativewebsockets_3.adoc       |  6 ++--
 wicket-user-guide/src/main/asciidoc/redirects.adoc |  2 +-
 wicket-user-guide/src/main/asciidoc/repeaters.adoc |  2 +-
 .../src/main/asciidoc/requestProcessing.adoc       |  2 +-
 .../requestProcessing/requestProcessing_3.adoc     |  2 +-
 .../requestProcessing/requestProcessing_4.adoc     |  4 +--
 .../requestProcessing/requestProcessing_5.adoc     |  7 ++--
 wicket-user-guide/src/main/asciidoc/resources.adoc |  2 +-
 .../src/main/asciidoc/resources/resources_10.adoc  |  2 +-
 .../src/main/asciidoc/resources/resources_15.adoc  |  2 +-
 .../src/main/asciidoc/resources/resources_16.adoc  |  2 +-
 .../src/main/asciidoc/resources/resources_3.adoc   |  4 +--
 .../src/main/asciidoc/resources/resources_6.adoc   |  6 ++--
 .../src/main/asciidoc/resources/resources_8.adoc   |  4 +--
 .../src/main/asciidoc/security/security_3.adoc     |  2 +-
 .../src/main/asciidoc/security/security_4.adoc     |  2 +-
 .../src/main/asciidoc/security/security_5.adoc     |  2 +-
 wicket-user-guide/src/main/asciidoc/single.adoc    |  4 +--
 .../src/main/asciidoc/testing/testing_1.adoc       | 42 +++++++++++-----------
 .../src/main/asciidoc/testing/testing_2.adoc       |  6 ++--
 .../src/main/asciidoc/testing/testing_3.adoc       | 10 +++---
 .../asciidoc/testingspring/testingspring_2.adoc    | 17 +++++----
 .../src/main/asciidoc/urls/urls_2.adoc             |  2 +-
 .../src/main/asciidoc/urls/urls_3.adoc             | 14 +-------
 .../src/main/asciidoc/urls/urls_6.adoc             |  8 ++---
 wicket-user-guide/src/main/asciidoc/whyLearn.adoc  |  2 +-
 .../src/main/asciidoc/whyLearn/whyLearn_1.adoc     |  2 +-
 .../src/main/asciidoc/whyLearn/whyLearn_2.adoc     |  2 +-
 .../src/main/asciidoc/whyLearn/whyLearn_4.adoc     |  8 ++---
 83 files changed, 182 insertions(+), 209 deletions(-)

diff --git a/wicket-user-guide/src/main/asciidoc/advanced/advanced_6.adoc 
b/wicket-user-guide/src/main/asciidoc/advanced/advanced_6.adoc
index 8a3276fca8..ed8c31d27d 100644
--- a/wicket-user-guide/src/main/asciidoc/advanced/advanced_6.adoc
+++ b/wicket-user-guide/src/main/asciidoc/advanced/advanced_6.adoc
@@ -1,7 +1,7 @@
 
 
 
-So far, as markup source for our pages/panels we have used a static markup 
file, no matter if it was inherited or directly associated to the component. 
Now we want to investigate a more complex use case where we want to dynamical 
generate the markup directly inside component code.
+So far, as markup source for our pages/panels we have used a static markup 
file, no matter if it was inherited or directly associated to the component. 
Now we want to investigate a more complex use case where we want to dynamically 
generate the markup directly inside component code.
 
 To become a markup producer, a component must simply implement interface 
_org.apache.wicket.markup.IMarkupResourceStreamProvider_. The only method 
defined in this interface is _getMarkupResourceStream(MarkupContainer, 
Class<?>)_ which returns an utility interface called _IResourceStream_ 
representing the actual markup.
 
@@ -29,13 +29,13 @@ Class StringResourceStream is a resource stream that uses a 
String instance as b
 
 === Avoiding markup caching
 
-As we have seen in the previous paragraph, Wicket uses an internal cache for 
components markup. This can be a problem if our component dynamical generates 
its markup when it is rendered because once the markup has been cached, Wicket 
will always use the cached version for the specific component. To overwrite 
this default caching policy, a component can implement interface 
_IMarkupCacheKeyProvider_. 
+As we have seen in the previous paragraph, Wicket uses an internal cache for 
components markup. This can be a problem if our component dynamically generates 
its markup when it is rendered because once the markup has been cached, Wicket 
will always use the cached version for the specific component. To overwrite 
this default caching policy, a component can implement interface 
_IMarkupCacheKeyProvider_. 
 
 This interface defines method _getCacheKey(MarkupContainer, Class<?>)_ which 
returns a string value representing the key used by Wicket to retrieve the 
markup of the component from the cache. If this value is null the markup will 
not be cached, allowing the component to display the last generated markup each 
time it is rendered:
 
 [source,java]
 ----
-public class NoCacheMarkupPanel extends Panel implements 
IMarkupCacheKeyProvider {
+public class NoCacheMarkupPanel extends Panel implements 
IMarkupResourceStreamProvider, IMarkupCacheKeyProvider {
        public NoCacheMarkupPanel(String id, IModel<?> model) {
                super(id, model);               
        }
diff --git a/wicket-user-guide/src/main/asciidoc/ajax/ajax_2.adoc 
b/wicket-user-guide/src/main/asciidoc/ajax/ajax_2.adoc
index bba4d9c34f..6ad924fcbf 100644
--- a/wicket-user-guide/src/main/asciidoc/ajax/ajax_2.adoc
+++ b/wicket-user-guide/src/main/asciidoc/ajax/ajax_2.adoc
@@ -71,7 +71,7 @@ AutoCompleteTextField field = new 
AutoCompleteTextField<T>("field", model) {
 };
 ----
 
-Wicket module wicket-examples contains page class _AutoCompletePagePage.java_ 
which shows an example of autocomplete text field. The running example is 
available on {wicket_examples_url}/ajax/autocomplete[examples site] .
+Wicket module wicket-examples contains page class _AutoCompletePage.java_ 
which shows an example of autocomplete text field. The running example is 
available on {wicket_examples_url}/ajax/autocomplete[examples site] .
 
 === Modal dialog
 
@@ -116,7 +116,7 @@ public HomePage(final PageParameters parameters) {
 ----
 
 Just like any other component also _ModalDialog_ must be added to a markup 
tag, like we did in our example using a <div> tag. Wicket will automatically 
hide the content of this tag in the final markup, as long as the dialog is not 
opened.
-This component does not provide any styling by itself, so you have can add a
+This component does not provide any styling by itself, so you can add a
 _DefaultTheme_ to this component if aren't styling these CSS classes by 
yourself.
 
 The modal dialog can be closed from code using its method 
_close(AjaxRequestTarget target)_.
@@ -133,11 +133,11 @@ The basic implementation of a tree repeater shipped with 
Wicket is component _Ne
 
 Wicket comes with a built-in implementation of ITreeProvider called 
TreeModelProvider that works with the same tree model and nodes used by Swing 
component _javax.swing.JTree_. These Swing entities should be familiar to you 
if you have previously worked with the old tree repeaters (components _Tree_ 
and _TreeTable_) that have been deprecated with Wicket 6 and that are strongly 
dependent on Swing-based model and nodes. _TreeModelProvider_ can be used to 
migrate your code to the new tree r [...]
 
-In the next example (project _CheckBoxAjaxTree_) we will build a tree that 
displays some of the main cities of three European countries: Italy, Germany 
and France. The cities are sub-nodes of a main node representing the relative 
county. The nodes of the final tree will be also selectable with a checkbox 
control. The whole tree will have the classic look & feel of Windows XP. This 
is how our tree will look like:
+In the next example (project _CheckBoxAjaxTree_) we will build a tree that 
displays some of the main cities of three European countries: Italy, Germany 
and France. The cities are sub-nodes of a main node representing the relative 
county. The nodes of the final tree will be also selectable with a checkbox 
control. The whole tree will have the classic look & feel. This is how our tree 
will look like:
 
 image::./img/AJAX-tree-repeater.png[]
 
-We will start to explore the code of this example from the home page. The 
first portion of code we will see is where we build the nodes and the 
_TreeModelProvider_ for the three. As tree node we will use Swing class 
_javax.swing.tree.DefaultMutableTreeNode_:
+We will start to explore the code of this example from the home page. The 
first portion of code we will see is where we build the nodes and the 
_TreeModelProvider_ for the tree. As tree node we will use Swing class 
_javax.swing.tree.DefaultMutableTreeNode_:
 
 [source,java]
 ----
@@ -190,7 +190,7 @@ Scrolling down the code we can see how the tree component 
is instantiated and co
 
 To use tree repeaters we must implement their abstract method 
_newContentComponent_ which is called internally by base class _AbstractTree_ 
when a new node must be built. As content component we have used built-in class 
_CheckedFolder_ which combines a _Folder_ component with a _CheckBox_ form 
control.
 
-The final step before adding the tree to its page is to apply a theme to it. 
Wicket comes with two behaviors, WindowsTheme and HumanTheme, which correspond 
to the classic Windows XP theme and to the Human theme from Ubuntu.
+The final step before adding the tree to its page is to apply a theme to it. 
Wicket comes with two built-in theme behaviors, WindowsTheme and HumanTheme.
 
 Our checkable tree is finished but our work is not over yet because the 
component doesn't offer many functionalities as it is. Unfortunately neither 
NestedTree nor CheckedFolder provide a means for collecting checked nodes and 
returning them to client code. It's up to us to implement a way to keep track 
of checked nodes.
 
diff --git a/wicket-user-guide/src/main/asciidoc/ajax/ajax_3.adoc 
b/wicket-user-guide/src/main/asciidoc/ajax/ajax_3.adoc
index 0e723a7637..ac327c0f04 100644
--- a/wicket-user-guide/src/main/asciidoc/ajax/ajax_3.adoc
+++ b/wicket-user-guide/src/main/asciidoc/ajax/ajax_3.adoc
@@ -111,7 +111,7 @@ _AbstractAjaxTimerBehavior_ executes callback method 
_onTimer(AjaxRequestTarget
 ----
 Label dynamicLabel = new Label("dynamicLabel");
 //trigger an AJAX request every three seconds          
-dynamicLabel.add(new AbstractAjaxTimerBehavior(Duration.seconds(3)) {          
        
+dynamicLabel.add(new AbstractAjaxTimerBehavior(Duration.ofSeconds(3)) {        
                
        @Override
        protected void onTimer(AjaxRequestTarget target) {
                //...                           
diff --git a/wicket-user-guide/src/main/asciidoc/ajax/ajax_5.adoc 
b/wicket-user-guide/src/main/asciidoc/ajax/ajax_5.adoc
index e73bc49e8c..c8e7e99a83 100644
--- a/wicket-user-guide/src/main/asciidoc/ajax/ajax_5.adoc
+++ b/wicket-user-guide/src/main/asciidoc/ajax/ajax_5.adoc
@@ -24,7 +24,7 @@ NOTE: A full list of the available request parameters as well 
as more details on
 
 Parameters 'u' (callback URL) and 'c' (the id of the component) are generated 
by the AJAX behavior that will serve the AJAX call and they are not accessible 
through _AjaxRequestAttributes_.
 
-Here is the final AJAX function generate for the behavior used in example 
project _AjaxEventBehavior_ Example:
+Here is the final AJAX function generated for the behavior used in example 
project _AjaxEventBehavior_ Example:
 
 [source,java]
 ----
diff --git a/wicket-user-guide/src/main/asciidoc/ajax/ajax_6.adoc 
b/wicket-user-guide/src/main/asciidoc/ajax/ajax_6.adoc
index 30c39e70f9..85e5bf529d 100644
--- a/wicket-user-guide/src/main/asciidoc/ajax/ajax_6.adoc
+++ b/wicket-user-guide/src/main/asciidoc/ajax/ajax_6.adoc
@@ -125,7 +125,7 @@ public class DisableComponentListener extends 
AjaxCallListener {
 
 As you can see in the code above we have created a function 
(_getIndicatorUrl_) to retrieve the URL of the indicator picture. This was done 
in order to make the picture customizable by overriding this method.
 
-Once we have our listener in place, we can finally use it in our example 
overwriting method _updateAjaxAttributes_ of the AJAX button that submits the 
form:
+Once we have our listener in place, we can finally use it in our example 
overriding method _updateAjaxAttributes_ of the AJAX button that submits the 
form:
 
 [source,java]
 ----
diff --git a/wicket-user-guide/src/main/asciidoc/ajax/ajax_7.adoc 
b/wicket-user-guide/src/main/asciidoc/ajax/ajax_7.adoc
index 01b8cf2d8e..8ccea86485 100644
--- a/wicket-user-guide/src/main/asciidoc/ajax/ajax_7.adoc
+++ b/wicket-user-guide/src/main/asciidoc/ajax/ajax_7.adoc
@@ -1,6 +1,6 @@
 
 Wicket makes working with AJAX easy and pleasant with its component-oriented 
abstraction. However as side effect, AJAX components and behaviors make their 
hosting page stateful. This can be quite annoying if we are working on a page 
that must be stateless (for example a login page).
-Wicket makes quite easy forcing existing AJAX components to be stateless. All 
we have to do is to override component's method _getStatelessHint_ returning 
true:
+Wicket has made it quite easy to force existing AJAX components to be 
stateless. All we have to do is to override component's method 
_getStatelessHint_ returning true:
 
 [source,java]
 ----
diff --git 
a/wicket-user-guide/src/main/asciidoc/bestpractices/bestpractices_1.adoc 
b/wicket-user-guide/src/main/asciidoc/bestpractices/bestpractices_1.adoc
index 308c1cff7d..72c82c58ad 100644
--- a/wicket-user-guide/src/main/asciidoc/bestpractices/bestpractices_1.adoc
+++ b/wicket-user-guide/src/main/asciidoc/bestpractices/bestpractices_1.adoc
@@ -64,7 +64,7 @@ The code above shows the usage of the poor component in the 
_RegistrationPage_.
 public class RegistrationInputPanel extends Panel{
     public RegistrationInputPanel(String id, IModel<Registration> regModel) {
         super(id, regModel);
-        IModel<Registration> compound = new 
CompoundPropertyModel<Registration>(regmodel);
+        IModel<Registration> compound = new 
CompoundPropertyModel<Registration>(regModel);
         Form<Registration> form = new Form<Registration>("form", compound);
         // Correct: Add components to Form over the instance variable
         form.add(new TextField("username"));
@@ -101,7 +101,7 @@ With that, the usage of _RegistrationInputPanel_ is much 
more intuitive. There i
 public class RegistrationPage extends Page {
     public RegistrationPage(IModel<Registration> regModel) {
         Form<?> form = new Form("form");
-        form.add(new RegistrationInputPanel("registration", regModel);
+        form.add(new RegistrationInputPanel("registration", regModel));
         form.add(new SubmitButton("register") {
             public void onSubmit() {
               // do something
diff --git 
a/wicket-user-guide/src/main/asciidoc/bestpractices/bestpractices_3.adoc 
b/wicket-user-guide/src/main/asciidoc/bestpractices/bestpractices_3.adoc
index 304206448f..481d47dae9 100644
--- a/wicket-user-guide/src/main/asciidoc/bestpractices/bestpractices_3.adoc
+++ b/wicket-user-guide/src/main/asciidoc/bestpractices/bestpractices_3.adoc
@@ -1,6 +1,6 @@
 
 
 
-For many developers, naming is a dispensable thing, but I think it is one of 
the major topics in software development. With the help of correct naming, you 
can easily identify the business aspects of a software component. Additionally 
good naming avoids unnecessary and bad comments.
+For many developers, naming is a dispensable thing, but I think it is one of 
the major topics in software development. With the help of correct naming, you 
can easily identify the business aspects of a software component. Additionally, 
good naming avoids unnecessary and bad comments.
 
-Bad namings for Wicket-IDs are _birthdateTextField_, _firstnameField_ and 
_addressPanel_. Why? The naming contains two aspects: A technical aspect 
(_"TextField"_) and the business aspect (_"birthdate"_ ). Only the the business 
aspect is relevant because both the HTML template as well as the Java code 
already contain the technical details (_new TextField("birthdate")_). 
Additionally, such names add a lot of effort when you do technical 
refactorings, e.g. if you have to replace a _TextFiel [...]
+Bad namings for Wicket-IDs are _birthdateTextField_, _firstnameField_ and 
_addressPanel_. Why? The naming contains two aspects: A technical aspect 
(_"TextField"_) and the business aspect (_"birthdate"_ ). Only the business 
aspect is relevant because both the HTML template as well as the Java code 
already contain the technical details (_new TextField("birthdate")_). 
Additionally, such names add a lot of effort when you do technical 
refactorings, e.g. if you have to replace a _TextField_ b [...]
diff --git 
a/wicket-user-guide/src/main/asciidoc/bestpractices/bestpractices_5.adoc 
b/wicket-user-guide/src/main/asciidoc/bestpractices/bestpractices_5.adoc
index efe488d130..11067eecff 100644
--- a/wicket-user-guide/src/main/asciidoc/bestpractices/bestpractices_5.adoc
+++ b/wicket-user-guide/src/main/asciidoc/bestpractices/bestpractices_5.adoc
@@ -55,7 +55,7 @@ new Label("headline", headlineModel) {
     public void onConfigure() {
         // Headline visible only if text starts with "Berlusconi"
         String headline = getModelObject();
-        setVisible(headline.startWith("Berlusconi"));
+        setVisible(headline.startsWith("Berlusconi"));
     }
 }
 ----
diff --git a/wicket-user-guide/src/main/asciidoc/componentLifecycle.adoc 
b/wicket-user-guide/src/main/asciidoc/componentLifecycle.adoc
index a56e44b652..7733b12f08 100644
--- a/wicket-user-guide/src/main/asciidoc/componentLifecycle.adoc
+++ b/wicket-user-guide/src/main/asciidoc/componentLifecycle.adoc
@@ -1,2 +1,2 @@
 
-Just like applets and servlets, also Wicket components follow a lifecycle 
during their existence. In this chapter we will analyze each stage of this 
cycle and we will learn how to make the most of the hook methods that are 
triggered when a component moves from one stage to another.
+Just like servlets, also Wicket components follow a lifecycle during their 
existence. In this chapter we will analyze each stage of this cycle and we will 
learn how to make the most of the hook methods that are triggered when a 
component moves from one stage to another.
diff --git 
a/wicket-user-guide/src/main/asciidoc/componentLifecycle/componentLifecycle_1.adoc
 
b/wicket-user-guide/src/main/asciidoc/componentLifecycle/componentLifecycle_1.adoc
index 98eca62a01..c42f7661c9 100644
--- 
a/wicket-user-guide/src/main/asciidoc/componentLifecycle/componentLifecycle_1.adoc
+++ 
b/wicket-user-guide/src/main/asciidoc/componentLifecycle/componentLifecycle_1.adoc
@@ -5,7 +5,7 @@ During its life a Wicket component goes through the following 
stages:
 
 1. *Initialization:* a component is instantiated and initialized by Wicket.
 2. *Rendering:* components are prepared for rendering and generate markup. If 
a component contains children (i.e. is a subclass of _MarkupContainer_) their 
rendering result is included in the resulting markup.
-3. *Removed:* this stage is triggered when a component is explicitly removed 
from its component hierarchy, i.e. when its parent invokes _remove(component)_ 
on it. This stage is facultative and is never triggered for pages.
+3. *Removed:* this stage is triggered when a component is explicitly removed 
from its component hierarchy, i.e. when its parent invokes _remove(component)_ 
on it. This stage is optional and is never triggered for pages.
 4. *Detached:* after request processing has ended all components are notified 
to detach any state that is no longer needed.
 
 The following picture shows the state diagram of component lifecycle:
@@ -15,7 +15,7 @@ image::./img/component-lifecycle.png[]
 Once a component has been removed it could be added again to a container, but 
the initialization stage won't be executed again - it is easier to just create 
a new component instance instead.
 
 NOTE: If you read the JavaDoc of class _Component_ you will find a more 
detailed description of component lifecycle.
-However this description introduces some advanced topics we didn't covered yet 
hence, to avoid confusion, in this chapter some details have been omitted and 
they will be covered later in the next chapters.
+However this description introduces some advanced topics we haven't covered 
yet hence, to avoid confusion, in this chapter some details have been omitted 
and they will be covered later in the next chapters.
 
 For now you can consider just the simplified version of the lifecycle 
described above.
 
diff --git 
a/wicket-user-guide/src/main/asciidoc/componentLifecycle/componentLifecycle_4.adoc
 
b/wicket-user-guide/src/main/asciidoc/componentLifecycle/componentLifecycle_4.adoc
index e811917efe..e46424dd03 100644
--- 
a/wicket-user-guide/src/main/asciidoc/componentLifecycle/componentLifecycle_4.adoc
+++ 
b/wicket-user-guide/src/main/asciidoc/componentLifecycle/componentLifecycle_4.adoc
@@ -5,7 +5,7 @@ This stage is reached each time a component is rendered, 
typically when a page i
 
 Method _onConfigure()_ has been introduced in order to provide a good point to 
manage the component states such as its visibility or enabled state. This 
method is called on all components whose parent is visible.
 
-As stated in <<_hiding_or_disabling_a_component,chapter 6.1>>, _isVisible()_ 
and _isEnabled()_ are called multiple times when a page or a component is 
rendered, so it's highly recommended not to directly override these method, but 
rather to use _onConfigure()_ to change component states. On the contrary 
method _onBeforeRender_ (see the next paragraph) is not indicated for this task 
because it will not be invoked if component visibility is set to false.
+As stated in <<_hiding_or_disabling_a_component,chapter 6.1>>, _isVisible()_ 
and _isEnabled()_ are called multiple times when a page or a component is 
rendered, so it's highly recommended not to directly override these methods, 
but rather to use _onConfigure()_ to change component states. On the contrary 
method _onBeforeRender_ (see the next paragraph) is not recommended for this 
task because it will not be invoked if component visibility is set to false.
 
 === Method onBeforeRender
 
@@ -115,7 +115,7 @@ Just like we do with _onInitialize_, if we decide to 
override _onComponentTag_ w
 
 We have already seen in <<_modifing_tag_attributes,chapter 6.2>> how to use 
behavior _AttributeModifier_ to manipulate the tag's attribute. In 
<<_enriching_components_with_behaviors,chapter 19.1>> we will see that base 
class _Behavior_ offers also a callback method named 
_onComponentTag(ComponentTag, Component)_ that can be used in place of the hook 
method _onComponentTag(ComponentTag)_.
 
-=== Methods onComponentTagBody
+=== Method onComponentTagBody
 
 Method _onComponentTagBody(MarkupStream, ComponentTag)_ is called to process 
the component tag's body. Just like _onComponentTag_ it takes as input a 
_ComponentTag_ parameter representing the component tag. In addition, we also 
find a _MarkupStream_ parameter which represents the page markup stream that 
will be sent back to the client as response.
 
@@ -142,6 +142,6 @@ public class HomePage extends WebPage {
 
 Note that the original version of _onComponentTagBody_ is invoked only when we 
want to preserve the standard rendering mechanism for the tag's body (in our 
example this happens when the component is enabled).
 
-=== Methods onAfterRender
+=== Method onAfterRender
 
 Called on each rendered component immediately after it has been rendered - 
_onAfterRender()_ will even be called when rendering failed with an exception.
diff --git 
a/wicket-user-guide/src/main/asciidoc/componentLifecycle/componentLifecycle_6.adoc
 
b/wicket-user-guide/src/main/asciidoc/componentLifecycle/componentLifecycle_6.adoc
index ff1da28974..d8c84f73ed 100644
--- 
a/wicket-user-guide/src/main/asciidoc/componentLifecycle/componentLifecycle_6.adoc
+++ 
b/wicket-user-guide/src/main/asciidoc/componentLifecycle/componentLifecycle_6.adoc
@@ -1,6 +1,6 @@
 
 
 
-When a request has finished, the page and all its contained components move a 
the detached stage:
+When a request has finished, the page and all its contained components move to 
the detached stage:
 
 The hook method _onDetach()_ notifies each component that it should release 
all held resources no longer needed until the next request.
\ No newline at end of file
diff --git a/wicket-user-guide/src/main/asciidoc/componentQueueing.adoc 
b/wicket-user-guide/src/main/asciidoc/componentQueueing.adoc
index 24ab350636..fa86c9237c 100644
--- a/wicket-user-guide/src/main/asciidoc/componentQueueing.adoc
+++ b/wicket-user-guide/src/main/asciidoc/componentQueueing.adoc
@@ -1,3 +1,3 @@
 
 So far to build component hierarchy we have explicitly added each component 
and container in accordance with the corresponding markup. This necessary step 
can involve repetitive and boring code which must be changed every time we 
decide to change markup hierarchy.
-Component queueing is a new feature in Wicket 7 that solves this problem 
allowing Wicket to build component hierarchy in Java automatically making your 
code simpler and more maintainable. This chapter should serve as a short 
introduction to what Component Queueing is and what problems it is trying to 
solve.
+Component queueing is a feature introduced in Wicket 7 that solves this 
problem allowing Wicket to build component hierarchy in Java automatically 
making your code simpler and more maintainable. This chapter should serve as a 
short introduction to what Component Queueing is and what problems it is trying 
to solve.
diff --git 
a/wicket-user-guide/src/main/asciidoc/componentQueueing/componentQueueing_1.adoc
 
b/wicket-user-guide/src/main/asciidoc/componentQueueing/componentQueueing_1.adoc
index be0e258140..695f3796d0 100644
--- 
a/wicket-user-guide/src/main/asciidoc/componentQueueing/componentQueueing_1.adoc
+++ 
b/wicket-user-guide/src/main/asciidoc/componentQueueing/componentQueueing_1.adoc
@@ -1,5 +1,5 @@
 
-With Wicket as developers we use to define the hierarchy of components in the 
markup templates:
+With Wicket as developers we used to define the hierarchy of components in the 
markup templates:
 
 [source,html]
 ----
@@ -75,7 +75,7 @@ While undeniably useful, the Java-side hierarchy can be a 
pain to maintain. It i
 
 To:
 
-[source,java]
+[source,html]
 ----
 <form wicket:id='customer'>
     <div wicket:id='container'>
diff --git 
a/wicket-user-guide/src/main/asciidoc/componentQueueing/componentQueueing_2.adoc
 
b/wicket-user-guide/src/main/asciidoc/componentQueueing/componentQueueing_2.adoc
index f9d9e82c0b..b78d63b33f 100644
--- 
a/wicket-user-guide/src/main/asciidoc/componentQueueing/componentQueueing_2.adoc
+++ 
b/wicket-user-guide/src/main/asciidoc/componentQueueing/componentQueueing_2.adoc
@@ -23,5 +23,5 @@ When developing auto components the biggest pain point is in 
figuring out who th
 
 Because auto components do not insert themselves properly into the Java 
hierarchy they are also hard for users to use. For example, the documentation 
of Enclosure does not recommend it to be used to wrap form components like we 
have above. When the page renders the enclosure will be hidden because _first_ 
component is not visible. However, when we submit the form, _last_ component 
will raise a required error. This is because _last_ is not made a child of the 
hidden enclosure and therefor [...]
 
-Had we used _queue_ instead of _add_ in the code above, everything would work 
as expected. As part of Queueing implementation Wicket will properly insert 
auto components into the Java hierarchy. Furthermore, auto components will 
remain in the hierarchy instead of being added before render and removed 
afterwords. This is a big improvement because developers will no longer have to 
parse markup to find the children components — since children will be added to 
the enclosure by the dequeueing [...]
+Had we used _queue_ instead of _add_ in the code above, everything would work 
as expected. As part of Queueing implementation Wicket will properly insert 
auto components into the Java hierarchy. Furthermore, auto components will 
remain in the hierarchy instead of being added before render and removed 
afterwards. This is a big improvement because developers will no longer have to 
parse markup to find the children components — since children will be added to 
the enclosure by the dequeueing [...]
 
diff --git 
a/wicket-user-guide/src/main/asciidoc/componentQueueing/componentQueueing_5.adoc
 
b/wicket-user-guide/src/main/asciidoc/componentQueueing/componentQueueing_5.adoc
index 872ec0fbd1..279d1d7cf4 100644
--- 
a/wicket-user-guide/src/main/asciidoc/componentQueueing/componentQueueing_5.adoc
+++ 
b/wicket-user-guide/src/main/asciidoc/componentQueueing/componentQueueing_5.adoc
@@ -1,3 +1,3 @@
 
-Component queueing is a new and improved way of creating the component 
hierarchy in Wicket 7. By having to define the hierarchy only once in markup we 
can make the Java-side code simpler and more maintainable.
+Component queueing is an improved way of creating the component hierarchy. By 
having to define the hierarchy only once in markup we can make the Java-side 
code simpler and more maintainable.
 
diff --git a/wicket-user-guide/src/main/asciidoc/contributing.adoc 
b/wicket-user-guide/src/main/asciidoc/contributing.adoc
index a70e17f909..fdb4fcb022 100644
--- a/wicket-user-guide/src/main/asciidoc/contributing.adoc
+++ b/wicket-user-guide/src/main/asciidoc/contributing.adoc
@@ -11,7 +11,7 @@ You can contribute to this guide by following these steps:
 git clone https://github.com/<<your github username>>/wicket.git
 ----
 
-* Edit the _.adoc_ files in `wicket/wicket-user-guide/src/main/asciidoctor` 
folder
+* Edit the _.adoc_ files in `wicket/wicket-user-guide/src/main/asciidoc` folder
 
 * To preview your changes run _mvn clean package -P guide_ in the 
`wicket/wicket-user-guide` folder (You may use a run configuration in your IDE)
 
diff --git a/wicket-user-guide/src/main/asciidoc/forms2/forms2_11.adoc 
b/wicket-user-guide/src/main/asciidoc/forms2/forms2_11.adoc
index 0668b7e2b2..37c50115c9 100644
--- a/wicket-user-guide/src/main/asciidoc/forms2/forms2_11.adoc
+++ b/wicket-user-guide/src/main/asciidoc/forms2/forms2_11.adoc
@@ -119,7 +119,7 @@ This component can be attached to a <div> tag or to a 
<span> tag. No specific co
 
 CheckBoxMultipleChoice can insert a prefix and a suffix before and after each 
option. To configure them we can use methods _setPrefix_ and _setSuffix_.
 
-When our options are more complex objects than simple strings, we can render 
them using an IChoiceRender, as we did for DropDownChoice in 
<<modelsforms.adoc#_component_dropdownchoice,paragraph 11.5>>:
+When our options are more complex objects than simple strings, we can render 
them using an IChoiceRenderer, as we did for DropDownChoice in 
<<modelsforms.adoc#_component_dropdownchoice,paragraph 11.5>>:
 
 *HTML:*
 
@@ -139,7 +139,7 @@ Person bob = new Person("Bob", "Smith");
 Person jill = new Person("Jill", "Smith");
 List<Person> theSmiths = Arrays.asList(john, bob, jill);
 ChoiceRenderer render = new ChoiceRenderer("name");
-form.add(new CheckBoxMultipleChoice("checkGroup", new ListModel<String>(new 
ArrayList<String>()),
+form.add(new CheckBoxMultipleChoice("checkGroup", new ListModel<Person>(new 
ArrayList<Person>()),
                                     theSmiths, render));
 ----
 
@@ -195,4 +195,4 @@ form.add(new RadioChoice("radioGroup", Model.of(""), 
fruits));
 
 image::./img/grouped-radiobutton.png[]
 
-Just like CheckBoxMultipleChoice, this component provides the setPrefix and 
setSuffix methods to configure the prefix and suffix for our options and it 
supports IChoiceRender as well.
+Just like CheckBoxMultipleChoice, this component provides the setPrefix and 
setSuffix methods to configure the prefix and suffix for our options and it 
supports IChoiceRenderer as well.
diff --git a/wicket-user-guide/src/main/asciidoc/forms2/forms2_12.adoc 
b/wicket-user-guide/src/main/asciidoc/forms2/forms2_12.adoc
index fc87a493eb..f853ec5981 100644
--- a/wicket-user-guide/src/main/asciidoc/forms2/forms2_12.adoc
+++ b/wicket-user-guide/src/main/asciidoc/forms2/forms2_12.adoc
@@ -70,7 +70,7 @@ Person andrea = new Person("Andrea", "Smith");
 List<Person> theSmiths = Arrays.asList(john, bob, jill, andrea);
 ChoiceRenderer render = new ChoiceRenderer("name");
 
-form.add(new Palette("palette", Model.of(new ArrayList<String>()), new 
ListModel<String> (theSmiths), render, 5, true));
+form.add(new Palette("palette", Model.of(new ArrayList<Person>()), new 
ListModel<Person>(theSmiths), render, 5, true));
 ----
 
 *Screenshot:*
diff --git a/wicket-user-guide/src/main/asciidoc/forms2/forms2_3.adoc 
b/wicket-user-guide/src/main/asciidoc/forms2/forms2_3.adoc
index 4c237f90e7..9f819120eb 100644
--- a/wicket-user-guide/src/main/asciidoc/forms2/forms2_3.adoc
+++ b/wicket-user-guide/src/main/asciidoc/forms2/forms2_3.adoc
@@ -8,7 +8,7 @@ The component that is responsible for converting input is the 
FormComponent itse
 [source,java]
 ----
 //this field must receive an integer value
-TextField integerField = new TextField("number", new 
Model()).setType(Integer.class));
+TextField integerField = new TextField("number", new 
Model()).setType(Integer.class);
 ----
 
 If no type has been provided, FormComponent will try to ask its model for this 
information. The PropertyModel and CompoundPropertyModel models can use 
reflection to get the type of object model. By default, if FormComponent can 
not obtain the type of its model object in any way, it will consider it as a 
simple String.
diff --git a/wicket-user-guide/src/main/asciidoc/forms2/forms2_4.adoc 
b/wicket-user-guide/src/main/asciidoc/forms2/forms2_4.adoc
index 572b61718f..564b5f76b4 100644
--- a/wicket-user-guide/src/main/asciidoc/forms2/forms2_4.adoc
+++ b/wicket-user-guide/src/main/asciidoc/forms2/forms2_4.adoc
@@ -1,5 +1,5 @@
 
-Standard JSR 303 defines a set of annotations and APIs to validate our domain 
objects at field-level. Wicket has introduced an experimental support for this 
standard since version 6.4.0 and with version 6.14.0 it has became an official 
Wicket module (named _wicket-bean-validation_).
+Standard JSR 303 defines a set of annotations and APIs to validate our domain 
objects at field-level. Wicket has introduced an experimental support for this 
standard since version 6.4.0 and with version 6.14.0 it has become an official 
Wicket module (named _wicket-bean-validation_).
 In this paragraph we will see the basic steps needed to use JSR 303 validation 
in our Wicket application. Code snippets are from example project 
_JSR303validation_.
 
 In the example application we have a form to insert the data for a new 
_Person_ bean and its relative _Address_. The code for class _Person_ is the 
following
@@ -82,6 +82,6 @@ public HomePage(final PageParameters parameters) {
 }
 ----
 
-Now we can run our application an see that JSR 303 annotations are fully 
effective:
+Now we can run our application and see that JSR 303 annotations are fully 
effective:
 
 image::./img/jsr303-form-validation.png[]
diff --git a/wicket-user-guide/src/main/asciidoc/forms2/forms2_9.adoc 
b/wicket-user-guide/src/main/asciidoc/forms2/forms2_9.adoc
index b6295f3891..a334cbfc85 100644
--- a/wicket-user-guide/src/main/asciidoc/forms2/forms2_9.adoc
+++ b/wicket-user-guide/src/main/asciidoc/forms2/forms2_9.adoc
@@ -11,7 +11,7 @@ A typical scenario in which we may need to implement a custom 
FormComponentPanel
 
 To illustrate this possible scenario, let's consider a form where a user can 
insert a  temperature that will be recorded after being converted to Kelvin 
degrees (see the example project CustomForm ComponentPanel).
 
-The Kelvin scale is wildly adopted among the scientific community and it is 
one of the seven base units of the  
http://en.wikipedia.org/wiki/International_System_of_Units[International System 
of Units] , so it makes perfect sense to store temperatures expressed with this 
unit of measurement.
+The Kelvin scale is widely adopted among the scientific community and it is 
one of the seven base units of the  
http://en.wikipedia.org/wiki/International_System_of_Units[International System 
of Units] , so it makes perfect sense to store temperatures expressed with this 
unit of measurement.
 
 However, in our everyday life we still use other temperature scales like 
Celsius or Fahrenheit, so it would be nice to have a component which internally 
works with Kelvin degrees and automatically applies conversion between Kelvin 
temperature scale and the one adopted by the user. 
 
diff --git a/wicket-user-guide/src/main/asciidoc/helloWorld/helloWorld_1.adoc 
b/wicket-user-guide/src/main/asciidoc/helloWorld/helloWorld_1.adoc
index 4ef42f1f0d..185ab2a4e0 100644
--- a/wicket-user-guide/src/main/asciidoc/helloWorld/helloWorld_1.adoc
+++ b/wicket-user-guide/src/main/asciidoc/helloWorld/helloWorld_1.adoc
@@ -8,7 +8,7 @@ Wicket is available as a binary package on the main site  
http://wicket.apache.o
 | wicket-core-tests | Contains test cases for wicket-core. | wicket-core, 
wicket-tester
 | wicket-request | This module contains the classes involved into web request 
processing. | wicket-util
 | wicket-util | Contains general-purpose utility classes for functional areas 
such as I/O, lang, string manipulation, security, etc... | None
-| wicket-bean-validation | Provides support for JSR 303 standard validation. | 
wicket-core, wicket-tester
+| wicket-bean-validation | Provides support for Jakarta Bean Validation. | 
wicket-core, wicket-tester
 | wicket-devutils | Contains utility classes and components to help developers 
with tasks such as debugging, class inspection and so on. | wicket-core, 
wicket-extensions, wicket-tester
 |wicket-extensions | Contains a vast set of built-in components to build a 
rich UI for our web application (Ajax support is part of this module). | 
wicket-core, wicket-tester
 |wicket-auth-roles | Provides support for role-based authorization. | 
wicket-core, wicket-tester
diff --git a/wicket-user-guide/src/main/asciidoc/helloWorld/helloWorld_2.adoc 
b/wicket-user-guide/src/main/asciidoc/helloWorld/helloWorld_2.adoc
index a2851bb03c..1a50b78809 100644
--- a/wicket-user-guide/src/main/asciidoc/helloWorld/helloWorld_2.adoc
+++ b/wicket-user-guide/src/main/asciidoc/helloWorld/helloWorld_2.adoc
@@ -5,13 +5,13 @@ NOTE: All the example projects presented in this document 
have been generated us
 
 === Wicket application structure
 
-A Wicket application is a standard Java EE web application, hence it is 
deployed through a _web.xml_ file placed inside folder WEB-INF:
+A Wicket application is a standard Jakarta EE web application, hence it is 
deployed through a _web.xml_ file placed inside folder WEB-INF:
 
 image::./img/webinf.png[]
 
 _Illustration: The standard directory structure of a Wicket application_
 
-The content of web.xml declares a servlet filter (class 
_org.apache.wicket.Protocol.http.WicketFilter_) which dispatches web requests 
to our Wicket application:
+The content of web.xml declares a servlet filter (class 
_org.apache.wicket.protocol.http.WicketFilter_) which dispatches web requests 
to our Wicket application:
 
 [source,xml]
 ----
@@ -35,7 +35,7 @@ The content of web.xml declares a servlet filter (class 
_org.apache.wicket.Proto
 
 Since this is a standard servlet filter we must map it to a specific set of 
URLs through the _<filter-mapping>_ tag). In the xml above we have mapped every 
URL to our Wicket filter.
 
-If we are using Servlet 3 or a later version, we can of course use a class in 
place of web.xml to configure our application. The following example uses 
annotation _WebFilter_.
+Using Jakarta Servlet annotations, we can use a class in place of web.xml to 
configure our application. The following example uses annotation _WebFilter_.
 
 [source,java]
 ----
diff --git a/wicket-user-guide/src/main/asciidoc/helloWorld/helloWorld_3.adoc 
b/wicket-user-guide/src/main/asciidoc/helloWorld/helloWorld_3.adoc
index 7cd16c675d..7c70e9f460 100644
--- a/wicket-user-guide/src/main/asciidoc/helloWorld/helloWorld_3.adoc
+++ b/wicket-user-guide/src/main/asciidoc/helloWorld/helloWorld_3.adoc
@@ -57,5 +57,5 @@ We can see that the _wicket:id_ attribute is set according to 
the value of the c
 
 NOTE: _Label_ replaces the original content of its tag (in our example 
_[Label's message goes here]_) with the string passed as value (_Hello 
WicketWorld!_ in our example)
 
-WARNING: If we specify a _wicket:id_ attribute for a tag without adding the 
corresponding component in our Java code, Wicket will throw a 
_ComponentNotFound_ Exception.  On the contrary if we add a component in our 
Java code without specifying a corresponding _wicket:id_ attribute in our 
markup, Wicket will throw a _WicketRuntimeException_.
+WARNING: If we specify a _wicket:id_ attribute for a tag without adding the 
corresponding component in our Java code, Wicket will throw a 
_ComponentNotFoundException_.  On the contrary if we add a component in our 
Java code without specifying a corresponding _wicket:id_ attribute in our 
markup, Wicket will throw a _WicketRuntimeException_.
 
diff --git a/wicket-user-guide/src/main/asciidoc/helloWorld/helloWorld_4.adoc 
b/wicket-user-guide/src/main/asciidoc/helloWorld/helloWorld_4.adoc
index 1f440fef42..268ba64e45 100644
--- a/wicket-user-guide/src/main/asciidoc/helloWorld/helloWorld_4.adoc
+++ b/wicket-user-guide/src/main/asciidoc/helloWorld/helloWorld_4.adoc
@@ -18,7 +18,7 @@ public class HomePage extends WebPage {
 }              
 ----
 
-By default after _onClick_ has been executed, Wicket will send back to the 
current page to the client web browser. If we want to navigate to another page 
we must use method _setResponsePage_ of class _Component_:
+By default after _onClick_ has been executed, Wicket will send back the 
current page to the client web browser. If we want to navigate to another page 
we must use method _setResponsePage_ of class _Component_:
 
 [source,java]
 ----
@@ -35,7 +35,7 @@ public class HomePage extends WebPage {
 }
 ----
 
-In the example above we used a version of _setResponsePage_ which takes as 
input the class of the target page. In this way a new instance of _AnotherPage_ 
will be created each time we click on the link. The other version of 
_setResponsePage_ takes in input a page instance instead of a page class:
+In the example above we used a version of _setResponsePage_ which takes as 
input the class of the target page. In this way a new instance of _AnotherPage_ 
will be created each time we click on the link. The other version of 
_setResponsePage_ takes as input a page instance instead of a page class:
 
 [source,java]
 ----
@@ -50,7 +50,7 @@ public void onClick() {
 The difference between using the first version of _setResponsePage_ rather 
than the second one will be illustrated in 
 <<_page_versioning_and_caching,chapter 8>>, when we will introduce the topic 
of stateful and stateless pages. For now, we can consider them as equivalent. 
 
-Since Wicket 8 is built on Java 8, we can choose to leverage lambda 
expressions to specify handler method:
+Since Wicket is built on Java 17+, we can choose to leverage lambda 
expressions to specify handler method:
 
 [source,java]
 ----
@@ -62,5 +62,5 @@ Factory class _ComponentFactory_ is provided by the 
WicketStuff project. You can
 
 Wicket comes with a rich set of link components suited for every need (links 
to static URL, Ajax-enhanced links, links to a file to download, links to 
external pages and so on). We will see them in 
<<_wicket_links_and_url_generation,chapter 10>>.
 
-NOTE: We can specify the content of a link (i.e. the text inside it) with its 
method _setBody_. This method takes in input a generic Wicket model, which will 
be the topic of <<_wicket_models_and_forms,chapter 11>>.
+NOTE: We can specify the content of a link (i.e. the text inside it) with its 
method _setBody_. This method takes as input a generic Wicket model, which will 
be the topic of <<_wicket_models_and_forms,chapter 11>>.
 
diff --git a/wicket-user-guide/src/main/asciidoc/howToSource.adoc 
b/wicket-user-guide/src/main/asciidoc/howToSource.adoc
index 3941fd98c8..a7dbeb5394 100644
--- a/wicket-user-guide/src/main/asciidoc/howToSource.adoc
+++ b/wicket-user-guide/src/main/asciidoc/howToSource.adoc
@@ -1,7 +1,7 @@
 
 Most of the code you will find in this document is available as a  
https://github.com/bitstorm/Wicket-tutorial-examples[Git repository] and is 
licensed under the ASF 2.0. Examples are hosted live at 
{wicket_tutorial_examples_url}[{wicket_tutorial_examples_url}]. To get a local 
copy of the repository you can run the clone command from shell:
 
-[source,java]
+[source,bash]
 ----
 git clone https://github.com/bitstorm/Wicket-tutorial-examples.git
 ----
@@ -14,4 +14,4 @@ The repository contains a multi-module Maven project. Every 
subproject is contai
 
 image::./img/gitMavenPrj.png[]
 
-When the example code is used in the document, you will find the name of the 
subproject it belongs to. If you don't have any experience with Maven, you can 
read Appendix A where you can learn the basic commands needed to work with the 
example projects and to import them into your favourite IDE (NetBeans, IDEA or 
Eclipse).
+When the example code is used in the document, you will find the name of the 
subproject it belongs to. If you don't have any experience with Maven, you can 
read Appendix A to learn the basic commands needed to work with the example 
projects and to import them into your favourite IDE (NetBeans, IDEA or Eclipse).
diff --git a/wicket-user-guide/src/main/asciidoc/i18n/i18n_1.adoc 
b/wicket-user-guide/src/main/asciidoc/i18n/i18n_1.adoc
index 3f159cb16b..7c925ba8d6 100644
--- a/wicket-user-guide/src/main/asciidoc/i18n/i18n_1.adoc
+++ b/wicket-user-guide/src/main/asciidoc/i18n/i18n_1.adoc
@@ -3,7 +3,7 @@
 
 As we have seen in 
<<forms2.adoc#_form_validation_and_feedback_messages,paragraph 12.2>>, the 
infrastructure of feedback messages is built on top of Java 
internationalization (i18n) support, so it should not be surprising that the 
same infrastructure is used also for localization purpose. However, while so 
far we have used only the <ApplicationClassName>.properties file to store our 
custom messages, in this chapter we will see that also pages, components, 
validators and even Java package [...]
 
-NOTE: Providing a full description of Java support for i18n is clearly out of 
the scope of this document. If you need more information about this topic you 
can find them in the JavaDocs and in the official  
http://docs.oracle.com/javase/tutorial/i18n/index.html[i18n tutorial] .
+NOTE: Providing a full description of Java support for i18n is clearly out of 
the scope of this document. If you need more information about this topic you 
can find it in the JavaDocs and in the official  
https://docs.oracle.com/javase/tutorial/i18n/index.html[i18n tutorial] .
 
 === Class Locale and ResourceBundle
 
diff --git a/wicket-user-guide/src/main/asciidoc/i18n/i18n_2.adoc 
b/wicket-user-guide/src/main/asciidoc/i18n/i18n_2.adoc
index 3c1fae39de..5d123702d1 100644
--- a/wicket-user-guide/src/main/asciidoc/i18n/i18n_2.adoc
+++ b/wicket-user-guide/src/main/asciidoc/i18n/i18n_2.adoc
@@ -39,8 +39,8 @@ Variation's value contributes to the final full name of the 
bundle and is placed
 
 === Using UTF-8 for resource bundles
 
-Java uses the standard character set  
http://en.wikipedia.org/wiki/ISO/IEC_8859-1[ISO 8859-11] to encode text files 
like properties files. Unfortunately ISO 8859-1 does not support most of the 
extra-European languages like Chinese or Japanese. The only way to use 
properties files with such languages is to use escaped  
http://en.wikipedia.org/wiki/List_of_Unicode_characters[Unicode] characters, 
but this leads to not human-readable files. For example if we wanted to write 
the word 'website [...]
-For this reason ISO 8859-11 is being replaced with another Unicode-compliant 
character encoding called UTF-8. Text files created with this encoding can 
contain Unicode symbols in plain format.
+Java uses the standard character set  
http://en.wikipedia.org/wiki/ISO/IEC_8859-1[ISO 8859-1] to encode text files 
like properties files. Unfortunately ISO 8859-1 does not support most of the 
extra-European languages like Chinese or Japanese. The only way to use 
properties files with such languages is to use escaped  
http://en.wikipedia.org/wiki/List_of_Unicode_characters[Unicode] characters, 
but this leads to not human-readable files. For example if we wanted to write 
the word 'website' [...]
+For this reason ISO 8859-1 is being replaced with another Unicode-compliant 
character encoding called UTF-8. Text files created with this encoding can 
contain Unicode symbols in plain format.
 Wicket provides a useful convention to use properties file encoded with UTF-8. 
We just have to add prefix _.utf8._ to file extension (i.e. _.utf8.properties_).
 
 NOTE: If you want to use UTF-8 with your text files, make sure that your 
editor/IDE is actually using this character encoding. Some OS like Windows use 
a different encoding by default.
diff --git a/wicket-user-guide/src/main/asciidoc/i18n/i18n_6.adoc 
b/wicket-user-guide/src/main/asciidoc/i18n/i18n_6.adoc
index 64ce699593..ea0f8dcb00 100644
--- a/wicket-user-guide/src/main/asciidoc/i18n/i18n_6.adoc
+++ b/wicket-user-guide/src/main/asciidoc/i18n/i18n_6.adoc
@@ -1,5 +1,5 @@
 
 
 
-Internationalization is a mandatory step if we want to take our applications 
(and our business!) abroad. Choosing the right strategy to manage our localized 
resources is fundamental to avoid to make a mess of them. In this chapter we 
have explored the built-in support for localization provided by Wicket, and we 
have learnt which solutions it offers to manage resource bundles. In the final 
part of the chapter we have seen how to localize the options displayed by a 
component (such as DropD [...]
+Internationalization is a mandatory step if we want to take our applications 
(and our business!) abroad. Choosing the right strategy to manage our localized 
resources is fundamental to avoid making a mess of them. In this chapter we 
have explored the built-in support for localization provided by Wicket, and we 
have learnt which solutions it offers to manage resource bundles. In the final 
part of the chapter we have seen how to localize the options displayed by a 
component (such as DropDo [...]
 
diff --git a/wicket-user-guide/src/main/asciidoc/internals/autocomponents.adoc 
b/wicket-user-guide/src/main/asciidoc/internals/autocomponents.adoc
index 5458ca6407..88af525fd3 100644
--- a/wicket-user-guide/src/main/asciidoc/internals/autocomponents.adoc
+++ b/wicket-user-guide/src/main/asciidoc/internals/autocomponents.adoc
@@ -11,7 +11,7 @@ Before rendering any component Wicket must retrieve its 
markup calling method _g
  
 After the markup has been loaded by _MarkupFactory_, it's parsed with class 
_org.apache.wicket.markup.MarkupParser_. _MarkupFactory_ creates a new 
_MarkupParser_ with method _newMarkupParser(MarkupResourceStream resource)_. 
The effective markup parsing is performed with a chain of entities implementing 
interface _org.apache.wicket.markup.parser.IMarkupFilter_. The default set of 
_IMarkupFilters_ used by _MarkupParser_ takes care of different tasks such as 
HTML validation, comments removi [...]
 
-To customize the set of _IMarkupFiltersS_ used in our application we can 
create a subclass of _MarkupFactory_ overriding method 
_newMarkupParser(MarkupResourceStream resource)_:
+To customize the set of _IMarkupFilters_ used in our application we can create 
a subclass of _MarkupFactory_ overriding method 
_newMarkupParser(MarkupResourceStream resource)_:
 
 [source,java]
 ----
@@ -39,7 +39,7 @@ public void init()
 }
 ----
 
-Usually we won't need to change the default configuration of 
_IMarkupFiltersS_, but it's important to be aware of this internal mechanism 
before we talk about another advanced feature, which is building auto 
components resolvers.
+Usually we won't need to change the default configuration of _IMarkupFilters_, 
but it's important to be aware of this internal mechanism before we talk about 
another advanced feature, which is building auto components resolvers.
 
 === Auto components resolvers
 
diff --git a/wicket-user-guide/src/main/asciidoc/internals/pagestoring.adoc 
b/wicket-user-guide/src/main/asciidoc/internals/pagestoring.adoc
index 228192ad08..822ce0862e 100644
--- a/wicket-user-guide/src/main/asciidoc/internals/pagestoring.adoc
+++ b/wicket-user-guide/src/main/asciidoc/internals/pagestoring.adoc
@@ -1,5 +1,5 @@
 
-During request handling, Wicket manages page instances through interface 
_org.apache.wicket.request.handler.IPageProvider_. This interface creates a new 
page instance or loads a previously serialized page instance if we provide the 
corresponding page id. _IPageProvider_ delegates page creation and retrieval to 
interface _org.apache.wicket.request.mapper.IPageSource_.
+During request handling, Wicket manages page instances through interface 
_org.apache.wicket.request.handler.IPageProvider_. This interface creates a new 
page instance or loads a previously serialized page instance if we provide the 
corresponding page id. _IPageProvider_ delegates page creation and retrieval to 
interface _org.apache.wicket.core.request.mapper.IPageSource_.
 When page class is provided _IPageSource_ delegates page creation to interface 
_org.apache.wicket.IPageFactory_, while when page id is provided it uses 
interface _org.apache.wicket.page.IPageManager_ to load the previously 
serialized page.
 
 The following workflow diagram summarizes the mechanism seen so far:
@@ -19,7 +19,7 @@ NOTE: Wicket gets the default _IPageManager_ using a supplier 
interface called _
 
 === Default IPageStore chain
 
-_org.apache.wicket.pageStore.IPageStore_'s role is to mediate the storing and 
loading of page instances. The default chain of _IPageStore_ used by Wicket 
contains the following ordered list of _IDataStore_:
+_org.apache.wicket.pageStore.IPageStore_'s role is to mediate the storing and 
loading of page instances. The default chain of _IPageStore_ used by Wicket 
contains the following ordered list of _IPageStore_:
 
 * *RequestPageStore:* collect all page instances involved in the last request. 
During the detach stage, stateful pages are passed to the other steps of the 
chain to be persisted on file.
 * *InSessionPageStore:* with _InSessionPageStore_ the default chain keeps the 
last rendered page instance into the HTTP session for fast access.
@@ -58,7 +58,7 @@ add(new DebugBar("debug"));
 ----
 
 HTML:
-[source,java]
+[source,html]
 ----
 <span wicket:id="debug"/>
 ----
diff --git a/wicket-user-guide/src/main/asciidoc/introduction.adoc 
b/wicket-user-guide/src/main/asciidoc/introduction.adoc
index f13f1f8458..176e7f6a6b 100644
--- a/wicket-user-guide/src/main/asciidoc/introduction.adoc
+++ b/wicket-user-guide/src/main/asciidoc/introduction.adoc
@@ -1,14 +1,14 @@
 
-Wicket has been around since 2004 and it has been an Apache project since 
2007. During these years it has proved to be a solid and valuable solution for 
building enterprise web applications.
+Wicket has been around since 2004 and it has been an Apache project since 
2007. During these years it has proven to be a solid and valuable solution for 
building enterprise web applications.
 
 Wicket core developers have done a wonderful job with this framework and they 
continue to improve it release after release.
-However Wicket never provided a freely available documentation and even if you 
can find many live examples and many technical articles on the Internet (most 
of them at {wicket_examples_url}[Wicket Examples Site] and at 
http://wicketinaction.com[Wicket in Action]), the lack of an organized and 
freely available documentation has always been a sore point for this framework.
+However Wicket never provided freely available documentation and even if you 
can find many live examples and many technical articles on the Internet (most 
of them at {wicket_examples_url}[Wicket Examples Site] and at 
http://wicketinaction.com[Wicket in Action]), the lack of organized and freely 
available documentation has always been a sore point for this framework.
 
-That's quite an issue because many other popular frameworks (like Spring, 
Hibernate or Struts) offer a vast and very good documentation which 
substantially contributed to their success.
+That's quite an issue because many other popular frameworks (like Spring, 
Hibernate or Struts) offer vast and very good documentation which substantially 
contributed to their success.
 
 This document is not intended to be a complete reference for Wicket but it 
simply aims to be a straightforward introduction to the framework that should 
significantly reduce its learning curve. What you will find here reflects my 
experience with Wicket and it's strictly focused on the framework.
 The various Wicket-related topics are gradually introduced using pragmatic 
examples of code that you can find in  
https://github.com/bitstorm/Wicket-tutorial-examples[the according repository 
on Github.]
-However remember that Wicket is a vast and powerful tool, so you should feel 
confident with the topics exposed in this document before starting to code your 
real applications!
+However remember that Wicket is a vast and powerful tool, so you should feel 
confident with the topics covered in this document before starting to code your 
real applications!
 
 For those who need further documentation on Wicket, there are  
http://wicket.apache.org/learn/books/[many good books] available for this 
framework.
 
@@ -27,10 +27,10 @@ Editors: +
 *Emond Papegaaij*
 
 
-*PS*: this guide is based on Wicket 9. However if you are using an older 
version you should find this guide useful as well, but it's likely that the 
code and the snippets won't work with your version. +
+*PS*: this guide is based on Wicket 10. However if you are using an older 
version you should find this guide useful as well, but it's likely that the 
code and the snippets won't work with your version. +
 *PPS*: although we try to do our best working on this guide, this document is 
a work in progress and may contain errors and/or omissions. That's why any 
feedback of any kind is REALLY appreciated!
 
 Project started by
 
-image::./img/comsysto-logo.png[link="http://comsysto.com/";]
+image::./img/comsysto-logo.png[link="https://comsysto.com/";]
 
diff --git a/wicket-user-guide/src/main/asciidoc/jee.adoc 
b/wicket-user-guide/src/main/asciidoc/jee.adoc
index 0be3877414..9d751aee00 100644
--- a/wicket-user-guide/src/main/asciidoc/jee.adoc
+++ b/wicket-user-guide/src/main/asciidoc/jee.adoc
@@ -1,12 +1,12 @@
 
 Writing a web application is not just about producing a good layout and a 
bunch of “cool” pages. We must also integrate our presentation code with 
enterprise resources like data sources, message queues, business objects, etc...
 
-The first decade of 2000s has seen the rising of new frameworks (like  
http://spring.io/[Spring] ) and new specifications (like  
http://en.wikipedia.org/wiki/Enterprise_JavaBeans[EJB 3.1] ) aimed to simplify 
the management of enterprise resources and (among other things) their 
integration with presentation code. 
+The first decade of 2000s has seen the rising of new frameworks (like  
https://spring.io/[Spring] ) and new specifications (like  
http://en.wikipedia.org/wiki/Enterprise_JavaBeans[EJB 3.1] ) aimed to simplify 
the management of enterprise resources and (among other things) their 
integration with presentation code. 
 
 All these new technologies are based on the concepts of container and 
dependency injection. Container is the environment where our enterprise 
resources are created and configured while   
http://en.wikipedia.org/wiki/Dependency_Injection[dependency injection] is a 
pattern implemented by containers to inject into an object the resources it 
depends on.
 
 Wicket can be easily integrated with enterprise containers using component 
instantiation listeners. These entities are instances of interface 
_org.apache.wicket.application.IComponentInstantiationListener_ and can be 
registered during application's initialization.   
IComponentInstantiationListener defines callback method 
onInstantiation(Component component) which can be used to provide custom 
instantiation logic for Wicket components. 
 
-Wicket distribution and project  https://github.com/wicketstuff[WicketStuff] 
already provide a set of built-in listeners to integrate our applications with 
EJB 3.1 compliant containers (like JBoss Seam) or with some of the most popular 
enterprise frameworks like  http://code.google.com/p/google-guice/[Guice] or 
Spring.
+Wicket distribution and project  https://github.com/wicketstuff[WicketStuff] 
already provide a set of built-in listeners to integrate our applications with 
CDI/EJB compliant containers or with some of the most popular enterprise 
frameworks like  https://github.com/google/guice[Guice] or Spring.
 
-In this chapter we will see two basic examples of injecting a 
container-defined object into a page using first an implementation of the EJB 
3.1 specifications (project  http://openejb.apache.org/[OpenEJB] ) and then 
using Spring.
+In this chapter we will see two basic examples of injecting a 
container-defined object into a page using first an implementation of the EJB 
3.1 specifications (project  https://tomee.apache.org/[Apache TomEE] ) and then 
using Spring.
diff --git a/wicket-user-guide/src/main/asciidoc/jee/jee_3.adoc 
b/wicket-user-guide/src/main/asciidoc/jee/jee_3.adoc
index ea383b6f02..186a95ceb7 100644
--- a/wicket-user-guide/src/main/asciidoc/jee/jee_3.adoc
+++ b/wicket-user-guide/src/main/asciidoc/jee/jee_3.adoc
@@ -1,7 +1,7 @@
 
 
 
-Spring (and Guice) users can use standard  
http://jcp.org/en/jsr/detail?id=330[JSR-330] annotations to wire their 
dependencies. This will make their code more interoperable with other 
containers that support this standard:
+Spring (and Guice) users can use standard  
https://jcp.org/en/jsr/detail?id=330[JSR-330] annotations to wire their 
dependencies. This will make their code more interoperable with other 
containers that support this standard:
 
 [source,java]
 ----
diff --git 
a/wicket-user-guide/src/main/asciidoc/jsintegration/jsintegration_1.adoc 
b/wicket-user-guide/src/main/asciidoc/jsintegration/jsintegration_1.adoc
index 867237e464..cc43595d6e 100644
--- a/wicket-user-guide/src/main/asciidoc/jsintegration/jsintegration_1.adoc
+++ b/wicket-user-guide/src/main/asciidoc/jsintegration/jsintegration_1.adoc
@@ -1,11 +1,11 @@
 
 
 
-For end-users a datepicker is one of the most appreciated widget. It allows to 
simply edit a date value with the help of a user-friendly pop-up calendar. 
That's why nearly all UI frameworks provide a version of this widget.
+For end-users a datepicker is one of the most appreciated widgets. It allows 
simply editing a date value with the help of a user-friendly pop-up calendar. 
That's why nearly all UI frameworks provide a version of this widget.
 
-Popular JavaScript libraries like YUI and JQuery come with a ready-to-use 
datepicker to enrich the user experience of our web applications. Wicket 
already provides a component which integrates a text field with a calendar 
widget from YUI library, but there is no built-in component that uses a 
datepicker based on JQuery library.
+Popular JavaScript libraries like jQuery come with a ready-to-use datepicker 
to enrich the user experience of our web applications. Wicket extensions 
provide date picker components, but we can also build our own custom datepicker 
based on jQuery.
 
-As both JQuery and its child project JQueryUI have gained a huge popularity in 
the last years, it's quite interesting to see how to integrate them in Wicket 
building a custom component. In this chapter we will create a custom datepicker 
based on the corresponding widget from JQueryUI project:
+As jQuery and its companion project jQuery UI are widely used, it's quite 
interesting to see how to integrate them in Wicket building a custom component. 
In this chapter we will create a custom datepicker based on the corresponding 
widget from JQueryUI project:
 
 image::./img/datepicker-screenshot.png[]
 
diff --git 
a/wicket-user-guide/src/main/asciidoc/jsintegration/jsintegration_2.adoc 
b/wicket-user-guide/src/main/asciidoc/jsintegration/jsintegration_2.adoc
index b931052951..d226e069e8 100644
--- a/wicket-user-guide/src/main/asciidoc/jsintegration/jsintegration_2.adoc
+++ b/wicket-user-guide/src/main/asciidoc/jsintegration/jsintegration_2.adoc
@@ -22,7 +22,7 @@ image::./img/datepicker-package-resources.png[]
 
 Along with the four static resources listed above, we can find also file 
calendar.jpg, which is the calendar icon used to open the pop up calendar, and 
file JQDatePicker.js which contains the following custom JavaScript code that 
binds our component to a JQuery UI datepicker:
 
-[source,java]
+[source,javascript]
 ----
 function initJQDatepicker(inputId, countryIsoCode, dateFormat,  calendarIcon) {
        var localizedArray = $.datepicker.regional[countryIsoCode];
@@ -47,9 +47,9 @@ Function initJQDatepicker takes in input the following 
parameters:
 * *dateFormat*: the date format to use for parsing and displaying date values.
 * *calendarIcon*: the relative URL of the icon used as calendar icon.
 
-As we will see in the next paragraphs, its up to our component to generate 
this parameters and invoke the initJQDatepicker function.
+As we will see in the next paragraphs, it's up to our component to generate 
this parameters and invoke the initJQDatepicker function.
 
-Function initCalendar is a simple utility function that sets the 
initialization array for datepicker widget. For more details on JQuery UI 
datepicker usage see the documentation at http://jqueryui.com/ datepicker.
+Function initCalendar is a simple utility function that sets the 
initialization array for datepicker widget. For more details on JQuery UI 
datepicker usage see the documentation at https://jqueryui.com/datepicker/.
 
 === Initialization code
 
@@ -100,7 +100,7 @@ NOTE: as you might have noted in the constructor we need to 
pass the ISO languag
 
 === Header contributor code
 
-The rest of the code of our custom component is inside method _renderHeader_, 
which is responsible for adding to page header the bundled JQuery library, the 
three files from JQuery UI distribution, the custom file JQDatePicker.js and 
the invocation of function _initJQDatepicker_:
+The rest of the code of our custom component is inside method _renderHead_, 
which is responsible for adding to page header the bundled JQuery library, the 
three files from JQuery UI distribution, the custom file JQDatePicker.js and 
the invocation of function _initJQDatepicker_:
 
 [source,java]
 ----
@@ -134,11 +134,11 @@ public void renderHead(IHeaderResponse response) {
 }
 ----
 
-If component is disabled the calendar icon must be hidden and no datepicker 
must be displayed. That's why _renderHeader_ is skipped if component is not 
enabled.
+If component is disabled the calendar icon must be hidden and no datepicker 
must be displayed. That's why _renderHead_ is skipped if component is not 
enabled.
 
 To get a reference to the bundled JQuery library we used the JavaScript 
setting class _JavaScriptLibrarySettings_ and its method _getJQueryReference_.
 
-In the last part of _renderHeader_ we build the string to invoke function 
_initJQDatepicker_ using the values obtained inside onInitialize. Unfortunately 
the date format used by JQuery UI is different from the one adopted in Java so 
we have to convert it before building the JavaScript code. This init script is 
rendered into header section using a _OnLoadHeaderItem_ to ensure that it will 
be executed after all the other scripts have been loaded.
+In the last part of _renderHead_ we build the string to invoke function 
_initJQDatepicker_ using the values obtained inside onInitialize. Unfortunately 
the date format used by JQuery UI is different from the one adopted in Java so 
we have to convert it before building the JavaScript code. This init script is 
rendered into header section using a _OnLoadHeaderItem_ to ensure that it will 
be executed after all the other scripts have been loaded.
 
 NOTE: If we add more than one instance of our custom component to a single 
page, static resources are rendered to the header section just once. Wicket 
automatically checks if a static resource is already referenced by a page and 
if so, it will not render it again.
 
diff --git a/wicket-user-guide/src/main/asciidoc/keepControl.adoc 
b/wicket-user-guide/src/main/asciidoc/keepControl.adoc
index 70c4c37831..15bbb482e6 100644
--- a/wicket-user-guide/src/main/asciidoc/keepControl.adoc
+++ b/wicket-user-guide/src/main/asciidoc/keepControl.adoc
@@ -1,4 +1,4 @@
 
-Many Wicket newbies are initially scared by its approach to web development 
because they have the impression that the component-oriented nature of the 
framework prevents them from having direct control over the generated markup. 
This is due to the fact that many developers come from other server-side 
technologies like JSP where we physically implement the logic that controls how 
the final HTML is generated.
+Many Wicket newcomers are initially scared by its approach to web development 
because they have the impression that the component-oriented nature of the 
framework prevents them from having direct control over the generated markup. 
This is due to the fact that many developers come from other server-side 
technologies like JSP where we physically implement the logic that controls how 
the final HTML is generated.
 
-This chapter will prevent you from having any initial misleading feeling about 
Wicket showing you how to control and manipulate the generated HTML with the 
built-in tools shipped with the framework.
+This chapter will dispel common misconceptions about Wicket showing you how to 
control and manipulate the generated HTML with the built-in tools shipped with 
the framework.
diff --git a/wicket-user-guide/src/main/asciidoc/keepControl/keepControl_1.adoc 
b/wicket-user-guide/src/main/asciidoc/keepControl/keepControl_1.adoc
index ccd030d7f6..6369f4ce93 100644
--- a/wicket-user-guide/src/main/asciidoc/keepControl/keepControl_1.adoc
+++ b/wicket-user-guide/src/main/asciidoc/keepControl/keepControl_1.adoc
@@ -3,7 +3,7 @@ At the end of the previous chapter we have seen how to hide a 
component calling
 
 Class _Component_ provides two getter methods to determine if a component is 
visible or enabled: _isVisible_ and _isEnabled_.
 
-Even if nothing prevents us from overriding these two methods to implement a 
custom logic to determine the state of a component, we should keep in mind that 
methods _isVisible_ and _isEnabled_ are called multiple times before a 
component is fully rendered. Hence, if we place non-trivial code inside these 
two methods, we can sensibly deteriorate the responsiveness of our pages.
+Even if nothing prevents us from overriding these two methods to implement a 
custom logic to determine the state of a component, we should keep in mind that 
methods _isVisible_ and _isEnabled_ are called multiple times before a 
component is fully rendered. Hence, if we place non-trivial code inside these 
two methods, we can noticeably deteriorate the responsiveness of our pages.
 
 WARNING: Overriding _isVisible_ or _isEnabled_ can lead to unpredictable 
results when querying visibility information via _isVisibleInHierarchy_ or 
_isEnabledInHierarchy_.
 
diff --git a/wicket-user-guide/src/main/asciidoc/keepControl/keepControl_4.adoc 
b/wicket-user-guide/src/main/asciidoc/keepControl/keepControl_4.adoc
index 12ec5ec910..a813a593f5 100644
--- a/wicket-user-guide/src/main/asciidoc/keepControl/keepControl_4.adoc
+++ b/wicket-user-guide/src/main/asciidoc/keepControl/keepControl_4.adoc
@@ -1,5 +1,5 @@
 
-Creating custom panels is a great way to handle complex user interfaces. 
However, sometimes we may need to create a panel which is used only by a 
specific page and only for a specific task.
+Creating custom panels is a great way to handle complex user interfaces. 
However, sometimes we may need to create a panel that is used only by a 
specific page and only for a specific task.
 
 In situations like these _org.apache.wicket.markup.html.WebMarkupContainer_ 
component is better suited than custom panels because it can be directly 
attached to a tag in the parent markup without needing a corresponding html 
file (hence it is less reusable). Let's consider for example the main page of a 
mail service where users can see a list of received mails. Suppose that this 
page shows a notification box where user can see if new messages have arrived. 
This box must be hidden if ther [...]
 
diff --git a/wicket-user-guide/src/main/asciidoc/keepControl/keepControl_5.adoc 
b/wicket-user-guide/src/main/asciidoc/keepControl/keepControl_5.adoc
index 8efb2dc00a..c4231fca86 100644
--- a/wicket-user-guide/src/main/asciidoc/keepControl/keepControl_5.adoc
+++ b/wicket-user-guide/src/main/asciidoc/keepControl/keepControl_5.adoc
@@ -73,6 +73,6 @@ Fragment fragment = new  Fragment ("contentArea", "formFrag", 
this);
 add(fragment);
 
 //form has been submitted
-Fragment fragment = new  Fragment ("contentArea", "messageFrag", this);
+fragment = new  Fragment ("contentArea", "messageFrag", this);
 replace(fragment);
 ----
diff --git a/wicket-user-guide/src/main/asciidoc/keepControl/keepControl_9.adoc 
b/wicket-user-guide/src/main/asciidoc/keepControl/keepControl_9.adoc
index c8577d81a9..c23c698470 100644
--- a/wicket-user-guide/src/main/asciidoc/keepControl/keepControl_9.adoc
+++ b/wicket-user-guide/src/main/asciidoc/keepControl/keepControl_9.adoc
@@ -39,4 +39,4 @@ _child_ attribute supports also nested components with a 
colon-separated path:
 
 WARNING: _<wicket:enclosure>_ is nice and prevents that users have to add 
boilerplate to their application. But it is not without problems. The child 
components are children in the markup, but the auto component generated for the 
enclosure tag will not magically re-parent the child components. Thus the 
markup hierarchy and the component hierarchy will be out of sync. The 
automatically created enclosure container will be created along side its 
"children" with both attached to the very sam [...]
 On top auto components cannot keep any state. A new instance is created during 
each render process and automatically deleted at the end. That implies that we 
cannot prevent _validation()_ from being called, since _validation()_ is called 
before the actual render process has started.
-Where any of these problems apply, you may replace the tag and manually add a 
https://ci.apache.org/projects/wicket/apidocs/9.x/org/apache/wicket/markup/html/basic/EnclosureContainer.html[EnclosureContainer]
 which basically does the same. But instead of adding the children to the Page, 
Panel, whatever, you must add the children to this container in order to keep 
the component hierarchy in sync. 
+Where any of these problems apply, you may replace the tag and manually add a 
https://nightlies.apache.org/wicket/apidocs/10.x/org/apache/wicket/markup/html/basic/EnclosureContainer.html[EnclosureContainer]
 which basically does the same. But instead of adding the children to the Page, 
Panel, whatever, you must add the children to this container in order to keep 
the component hierarchy in sync. 
diff --git a/wicket-user-guide/src/main/asciidoc/layout/layout_1.adoc 
b/wicket-user-guide/src/main/asciidoc/layout/layout_1.adoc
index 0f1e05798b..2bc47de767 100644
--- a/wicket-user-guide/src/main/asciidoc/layout/layout_1.adoc
+++ b/wicket-user-guide/src/main/asciidoc/layout/layout_1.adoc
@@ -7,7 +7,7 @@ In this chapter we will see how to use Wicket to build a site 
layout. The sample
 
 * *a header* which could contain site title, some logos, a navigation bar, 
etc...
 * *a left* menu with a bunch of links to different areas/functionalities of 
the site.
-* *a footer* with generic information like web master's email, the company 
address, etc...
+* *a footer* with generic information like webmaster's email, the company 
address, etc...
 * *a content* area which usually contains the functional part of the page.
 
 The following picture summarises the layout structure:
diff --git a/wicket-user-guide/src/main/asciidoc/layout/layout_2.adoc 
b/wicket-user-guide/src/main/asciidoc/layout/layout_2.adoc
index 723a6b986b..af3b33a992 100644
--- a/wicket-user-guide/src/main/asciidoc/layout/layout_2.adoc
+++ b/wicket-user-guide/src/main/asciidoc/layout/layout_2.adoc
@@ -1,5 +1,5 @@
 
-The need of ensuring a consistent layout across our pages unveiled a serious 
limit of the HTML: the inability to apply inheritance to web pages and their 
markup. Wouldn't be great if we could write our layout once in a page and then 
inherit it in the other pages of our application?
+The need of ensuring a consistent layout across our pages unveiled a serious 
limit of the HTML: the inability to apply inheritance to web pages and their 
markup. Wouldn't it be great if we could write our layout once in a page and 
then inherit it in the other pages of our application?
 One of the goals of Wicket is to overcome this kind of limit.
 
 === Markup inheritance
@@ -42,7 +42,7 @@ Label name = (Label)get("innerContainer:name");
 ----
 
 * replace a specific child component with a new component having the same id 
(with method _replace_).
-* iterate thought children components. This can be done in the old way 
(pre-Wicket 8) using method _iterator_ or using visitor pattern with method 
_visitChildren_. The same task can be accomplished using Java Streams and 
Lambdas with methods _stream_ (which returns a stream containing only the 
direct children) and _streamChildren_ (which returns a stream containing all 
children).
+* iterate through children components. This can be done in the old way 
(pre-Wicket 8) using method _iterator_ or using visitor pattern with method 
_visitChildren_. The same task can be accomplished using Java Streams and 
Lambdas with methods _stream_ (which returns a stream containing only the 
direct children) and _streamChildren_ (which returns a stream containing all 
children).
 
 Both _Panel_ and _WebPage_ have their own associated markup file which is used 
to render the corresponding component. If such file is not provided, Wicket 
will apply markup inheritance looking for a markup file through their ancestor 
classes. When a panel is attached to a container, the content of its markup 
file is inserted into its related tag.
 
diff --git a/wicket-user-guide/src/main/asciidoc/layout/layout_3.adoc 
b/wicket-user-guide/src/main/asciidoc/layout/layout_3.adoc
index a11284d15b..a2f81fa6fd 100644
--- a/wicket-user-guide/src/main/asciidoc/layout/layout_3.adoc
+++ b/wicket-user-guide/src/main/asciidoc/layout/layout_3.adoc
@@ -32,7 +32,7 @@ we can build a panel called _HeaderPanel_ with a related 
markup file called Head
       </table>
    </wicket:panel>
 </body>
-<html>
+</html>
 ----
 
 The class for this panel simply extends base class _Panel_:
@@ -153,9 +153,6 @@ The resulting Java code for the login page is the following:
 ----
 package helloWorld.layoutTenda;
 import helloWorld.LoginPanel;
-import org.apache.wicket.event.Broadcast;
-import org.apache.wicket.event.IEventSink;
-
 public class SimpleLoginPage extends JugTemplate {
        public SimpleLoginPage(){
                super();
diff --git a/wicket-user-guide/src/main/asciidoc/layout/layout_4.adoc 
b/wicket-user-guide/src/main/asciidoc/layout/layout_4.adoc
index c24efba2f7..b3c9402cb5 100644
--- a/wicket-user-guide/src/main/asciidoc/layout/layout_4.adoc
+++ b/wicket-user-guide/src/main/asciidoc/layout/layout_4.adoc
@@ -17,11 +17,11 @@ An example of a parent page using the tag _<wicket:child>_ 
is the following:
 
 The markup of a child page/panel must be placed inside the tag 
_<wicket:extend>_. Only the markup inside _<wicket:extend>_ will be included in 
final markup. Here is an example of child page markup:
 
-[source,java]
+[source,html]
 ----
 <html>
 <head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 </head>
 <body>
     <wicket:extend>
diff --git a/wicket-user-guide/src/main/asciidoc/modelsforms/modelsforms_3.adoc 
b/wicket-user-guide/src/main/asciidoc/modelsforms/modelsforms_3.adoc
index 0a048ff892..96270ef935 100644
--- a/wicket-user-guide/src/main/asciidoc/modelsforms/modelsforms_3.adoc
+++ b/wicket-user-guide/src/main/asciidoc/modelsforms/modelsforms_3.adoc
@@ -53,7 +53,7 @@ Person person = new Person();
 Label label = new Label("name", new PropertyModel(person, "name"));
 ----
 
-PropertyModel has just one constructor with two parameters: the model object 
(person in our example) and the name of the property we want to read/write ( 
_name_ in our example). This last parameter is called property expression. 
Internally, methods getObject/setObject use property expression to get/set 
property's value. To resolve class properties PropertyModel uses class 
_org.apache.wicket.util.lang.Property_ Resolver which can access any kind of 
property, private fields included.
+PropertyModel has just one constructor with two parameters: the model object 
(person in our example) and the name of the property we want to read/write ( 
_name_ in our example). This last parameter is called property expression. 
Internally, methods getObject/setObject use property expression to get/set 
property's value. To resolve class properties PropertyModel uses class 
_org.apache.wicket.core.util.lang.PropertyResolver_ which can access any kind 
of property, private fields included.
 
 Just like the Java language, property expressions support dotted notation to 
select sub properties. So if we want to display the name of the Person's spouse 
we can write:
 
@@ -81,23 +81,15 @@ mapField[key].subfield ...
 
 === LambdaModel
 
-_PropertyModel_ uses textual expressions to resolve object properties. That's 
nice but it comes with some drawbacks. For example the expression can not be 
checked at compile time and is not refactoring-friendly. To overcome these 
problems with Wicket 8 a new kind of lambda-based model has been introduced: 
_org.apache.wicket.model.LambdaModel_. This model uses lambda expressions to 
get/set model object. Here is the signature of its constructor:
+_PropertyModel_ uses textual expressions to resolve object properties. That's 
nice but it comes with some drawbacks. For example the expression can not be 
checked at compile time and is not refactoring-friendly. To overcome these 
problems with Wicket 8 a new kind of lambda-based model has been introduced: 
_org.apache.wicket.model.LambdaModel_. This model uses lambda expressions to 
get/set model object. Here is the signature of its static factory method:
 
 [source,java]
 ----
-public LambdaModel(SerializableSupplier<T> getter, SerializableConsumer<T> 
setter)
+public static <T> LambdaModel<T> of(SerializableSupplier<T> getter, 
SerializableConsumer<T> setter)
 ----
 
 In the following code we use method references to operate on a specific object 
property:
 
-[source,java]
-----
-Person person = new Person();
-IModel<String> personNameModel = new LambdaModel<>(person::getName, 
person::setName);
-----
-
-As we have seen for _Model_ also _LambdaModel_ comes with factory method 
_LambdaModel.of_:
-
 [source,java]
 ----
 Person person = new Person();
diff --git a/wicket-user-guide/src/main/asciidoc/modelsforms/modelsforms_4.adoc 
b/wicket-user-guide/src/main/asciidoc/modelsforms/modelsforms_4.adoc
index 7e16744ebc..b87e0fb3eb 100644
--- a/wicket-user-guide/src/main/asciidoc/modelsforms/modelsforms_4.adoc
+++ b/wicket-user-guide/src/main/asciidoc/modelsforms/modelsforms_4.adoc
@@ -96,7 +96,7 @@ If we don't provide a model to a form component, we will get 
the following excep
 java.lang.IllegalStateException: Attempt to set model object on null model of 
component:
 ----
 
-Component TextField corresponds to the standard text field, without any 
particular behavior or restriction on the allowed values. We must bind this 
component to the <input> tag with the attribute type set to "text" 
PasswordTextField is a subtype of TextFiled and it must be used with an <input> 
tag with the attribute type set to "password". For security reasons component 
PasswordTextField cleans its value at each request, so it will be always empty 
after the form has been rendered. By def [...]
+Component TextField corresponds to the standard text field, without any 
particular behavior or restriction on the allowed values. We must bind this 
component to the <input> tag with the attribute type set to "text" 
PasswordTextField is a subtype of TextField and it must be used with an <input> 
tag with the attribute type set to "password". For security reasons component 
PasswordTextField cleans its value at each request, so it will be always empty 
after the form has been rendered. By def [...]
 
 The following are the possible markup and code for the login page:
 
@@ -188,4 +188,4 @@ spouseContainer.add(name = new Label("name"));
 add(spouseContainer);
 ----
 
-The value displayed by label "name" will be "John" and not the spouse's name 
"Jill" as you may expect. In this example the label doesn't own a model, so it 
must search up its container hierarchy for an inheritable model. However, its 
container (WebMarkup Container with id 'spouse') doesn't own a model, hence the 
request for a model is forwarded to the parent container, which in this case is 
the page. In the end the label inherits CompoundPropertyModel from page but 
only its own id is use [...]
+The value displayed by label "name" will be "John" and not the spouse's name 
"Jill" as you may expect. In this example the label doesn't own a model, so it 
must search up its container hierarchy for an inheritable model. However, its 
container (WebMarkupContainer with id 'spouse') doesn't own a model, hence the 
request for a model is forwarded to the parent container, which in this case is 
the page. In the end the label inherits CompoundPropertyModel from page but 
only its own id is used [...]
diff --git a/wicket-user-guide/src/main/asciidoc/modelsforms/modelsforms_5.adoc 
b/wicket-user-guide/src/main/asciidoc/modelsforms/modelsforms_5.adoc
index 6b3db73a61..6de0729df7 100644
--- a/wicket-user-guide/src/main/asciidoc/modelsforms/modelsforms_5.adoc
+++ b/wicket-user-guide/src/main/asciidoc/modelsforms/modelsforms_5.adoc
@@ -42,7 +42,7 @@ In the example above the possible options are provided as a 
list of String objec
 </select>
 ----
 
-The first option is a placeholder item corresponding to a null model value. By 
default DropDownChoice cannot have a null value so users are forced to select a 
not-null option. If we want to change this behavior we can set the nullValid 
flag to true via the setNullValid method. Please note that the placeholder text 
(“Chose one”) can be localized, as we will see in chapter 15. The other options 
are identified by the attribute value. By default the value of this attribute 
is the index of th [...]
+The first option is a placeholder item corresponding to a null model value. By 
default DropDownChoice cannot have a null value so users are forced to select a 
not-null option. If we want to change this behavior we can set the nullValid 
flag to true via the setNullValid method. Please note that the placeholder text 
(“Chose one”) can be localized, as we will see in chapter 15. The other options 
are identified by the attribute value. By default the value of this attribute 
is the index of th [...]
 
 In the following code we want to show a list of Person objects using their 
full name as value to display and using their passport code as option id:
 
@@ -53,7 +53,7 @@ Java code:
 List<Person> persons;
 //Initialize the list of persons here...
 ChoiceRenderer personRenderer = new ChoiceRenderer("fullName", "passportCode");
-form.add(new DropDownChoice<String>("persons", new Model<Person>(), persons, 
personRenderer));
+form.add(new DropDownChoice<Person>("persons", new Model<Person>(), persons, 
personRenderer));
 ----
 
 The choice renderer can be assigned to the DropDownChoice using one of its 
constructors that accepts this type of parameter (like we did in the example 
above) or after its creation invoking setChoiceRenderer method.
diff --git a/wicket-user-guide/src/main/asciidoc/modelsforms/modelsforms_7.adoc 
b/wicket-user-guide/src/main/asciidoc/modelsforms/modelsforms_7.adoc
index 10b85c8dd6..7ffe6608e0 100644
--- a/wicket-user-guide/src/main/asciidoc/modelsforms/modelsforms_7.adoc
+++ b/wicket-user-guide/src/main/asciidoc/modelsforms/modelsforms_7.adoc
@@ -73,9 +73,9 @@ public class JpaLoadableModel<T> extends 
LoadableDetachableModel<T> {
 }
 ----
 
-The constructor of the model takes as input two parameters: an implementation 
of the JPA interface  javax.persistence.EntityManagerFactory to manage JPA 
entities and the entity that must be handled by this model. Inside its 
constructor the model saves the class of the entity and its id (which could be 
null if the entity has not been persisted yet). These two information are 
required to retrieve the entity at a later time and are used by the load method.
+The constructor of the model takes as input two parameters: an implementation 
of the JPA interface  jakarta.persistence.EntityManagerFactory to manage JPA 
entities and the entity that must be handled by this model. Inside its 
constructor the model saves the class of the entity and its id (which could be 
null if the entity has not been persisted yet). These two pieces of information 
are required to retrieve the entity at a later time and are used by the load 
method.
 
-onDetach is responsible for updating the entity id before detachment occurs. 
The id can change the first time an entity is persisted (JPA generates a new id 
and assigns it to the entity). Please note that this model is not responsible 
for saving any changes occurred to the entity object before it is detached. If 
we don't want to loose these changes we must explicitly persist the entity 
before the detaching phase occurs.
+onDetach is responsible for updating the entity id before detachment occurs. 
The id can change the first time an entity is persisted (JPA generates a new id 
and assigns it to the entity). Please note that this model is not responsible 
for saving any changes occurred to the entity object before it is detached. If 
we don't want to lose these changes we must explicitly persist the entity 
before the detaching phase occurs.
 
 WARNING: Since the model of this example holds a reference to the 
EntityManager Factory, the implementation in use must be serializable.
 
diff --git a/wicket-user-guide/src/main/asciidoc/modelsforms/modelsforms_8.adoc 
b/wicket-user-guide/src/main/asciidoc/modelsforms/modelsforms_8.adoc
index 348ad5b5e7..fddc250796 100644
--- a/wicket-user-guide/src/main/asciidoc/modelsforms/modelsforms_8.adoc
+++ b/wicket-user-guide/src/main/asciidoc/modelsforms/modelsforms_8.adoc
@@ -1,7 +1,7 @@
 
 
 
-Sometimes our custom components may need to use more than a single model to 
work properly. In such a case we must manually detach the additional models 
used by our components. In order to do this we can overwrite the Component's 
onDetach method that is called at the end of the current request. The following 
is the generic code of a component that uses two models:
+Sometimes our custom components may need to use more than a single model to 
work properly. In such a case we must manually detach the additional models 
used by our components. In order to do this we can override the Component's 
onDetach method that is called at the end of the current request. The following 
is the generic code of a component that uses two models:
 
 [source,java]
 ----
@@ -29,4 +29,4 @@ public class ComponentTwoModels extends Component{
 }
 ----
 
-When we overwrite onDetach we must call the super class implementation of this 
method, usually as last line in our custom implementation.
+When we override onDetach we must call the super class implementation of this 
method, usually as last line in our custom implementation.
diff --git a/wicket-user-guide/src/main/asciidoc/nativewebsockets.adoc 
b/wicket-user-guide/src/main/asciidoc/nativewebsockets.adoc
index f6949d30de..3ac5f460a6 100644
--- a/wicket-user-guide/src/main/asciidoc/nativewebsockets.adoc
+++ b/wicket-user-guide/src/main/asciidoc/nativewebsockets.adoc
@@ -2,9 +2,7 @@
 http://en.wikipedia.org/wiki/WebSocket[WebSockets] is a technology that 
provides full-duplex communications channels over a single TCP connection. 
 This means that once the browser establish a web socket connection to the 
server the server can push data back to the browser without the browser 
explicitly asking again and again whether there is something new for it.
 
-Wicket Native WebSockets modules provide functionality to integrate with the 
non-standard APIs provided by different web containers (like 
http://tomcat.apache.org/[Apache Tomcat])
+Wicket Native WebSockets modules provide functionality to integrate with the 
standard Jakarta WebSocket API as implemented by different web containers (like 
http://tomcat.apache.org/[Apache Tomcat]).
 
-WARNING: Native WebSocket works only when both the browser and the web 
containers support WebSocket technology. There are no plans to add support to 
fallback to long-polling, streaming or any other technology that simulates two 
way communication. Use it only if you really know that you will run your 
application in an environment that supports WebSockets.
-Currently supported web containers are Jetty 7.5+ , Tomcat 7.0.27+ and JBoss 
WildFly 8.0.0+.
-Supported browsers can be found at 
http://caniuse.com/#search=websocket[caniuse.com]
+NOTE: The WebSocket protocol is supported by all modern browsers. Wicket 
provides native WebSocket integration for Jetty 11+, Tomcat 10+, and WildFly 
27+.
 
diff --git 
a/wicket-user-guide/src/main/asciidoc/nativewebsockets/nativewebsockets_2.adoc 
b/wicket-user-guide/src/main/asciidoc/nativewebsockets/nativewebsockets_2.adoc
index 057036b777..96c125bd64 100644
--- 
a/wicket-user-guide/src/main/asciidoc/nativewebsockets/nativewebsockets_2.adoc
+++ 
b/wicket-user-guide/src/main/asciidoc/nativewebsockets/nativewebsockets_2.adoc
@@ -11,7 +11,7 @@ Add the following dependency to your application to get 
access to the _wicket-na
 </dependency>
 ----
 
-- for https://projects.spring.io/spring-boot/[Spring Boot] applications also 
add
+- for https://spring.io/projects/spring-boot[Spring Boot] applications also add
 ----
 <dependency>
  <groupId>org.springframework.boot</groupId>
@@ -30,7 +30,7 @@ In _WEB-INF/web.xml_ replace the usage of *WicketFilter* with 
the following:
 
<filter-class>org.apache.wicket.protocol.ws.javax.JavaxWebSocketFilter</filter-class>
 ----
 
-For https://projects.spring.io/spring-boot/[Spring Boot] application:
+For https://spring.io/projects/spring-boot[Spring Boot] application:
 ----
 @Bean
     public FilterRegistrationBean wicketFilter() {
diff --git 
a/wicket-user-guide/src/main/asciidoc/nativewebsockets/nativewebsockets_3.adoc 
b/wicket-user-guide/src/main/asciidoc/nativewebsockets/nativewebsockets_3.adoc
index 01b57b55d1..c7a32dff2f 100644
--- 
a/wicket-user-guide/src/main/asciidoc/nativewebsockets/nativewebsockets_3.adoc
+++ 
b/wicket-user-guide/src/main/asciidoc/nativewebsockets/nativewebsockets_3.adoc
@@ -1,12 +1,12 @@
 
 By adding a _(Base)WebSocketBehavior_ to your component(s) Wicket will 
contribute _wicket-websocket-jquery.js_ library which provides some helper 
functions to write your client side code. There is a default websocket 
connection per Wicket Page opened for you which you can use like:
-[source,java]
+[source,javascript]
 ----
 Wicket.WebSocket.send('{msg: "my message"}').
 ----
 
 To close the default connection:
-[source,java]
+[source,javascript]
 ----
 Wicket.WebSocket.close()
 ----
@@ -14,7 +14,7 @@ Wicket.WebSocket.close()
 Wicket.WebSocket is a simple wrapper around the native window.WebSocket API 
which is used to intercept the calls and to fire special JavaScript events 
(Wicket.Event PubSub).
 Once a page that contributes _(Base)WebSocketBehavior_ is rendered the client 
may react on messages pushed by the server by subscribing to the 
_'/websocket/message'_ event:
 
-[source,java]
+[source,javascript]
 ----
 Wicket.Event.subscribe("/websocket/message", function(jqEvent, message) {
   var data = JSON.parse(message);
diff --git a/wicket-user-guide/src/main/asciidoc/redirects.adoc 
b/wicket-user-guide/src/main/asciidoc/redirects.adoc
index 240383350a..bd782282fe 100644
--- a/wicket-user-guide/src/main/asciidoc/redirects.adoc
+++ b/wicket-user-guide/src/main/asciidoc/redirects.adoc
@@ -53,7 +53,7 @@ if 
(webApplication.getRequestCycleSettings().getRenderStrategy() == RequestCycle
 
 So what happens in case you have 2 server running your application with 
session replication and load balancing turned on while using the default 
RenderStrategy described above?
 
-Since a Map of buffered responses is cached within a WebApplication instance 
that does not get replicated between the nodes obviously, a redirect request 
that is suppose to pick up the previously cached response (having possibly form 
violation messages inside) potentially get’s directed to the second node in 
your cluster by the load balancer. The second node does not have any responses 
already prepared and cached for your user. The node therefore handles the 
request as a completely new r [...]
+Since a Map of buffered responses is cached within a WebApplication instance 
that does not get replicated between the nodes obviously, a redirect request 
that is suppose to pick up the previously cached response (having possibly form 
violation messages inside) potentially gets directed to the second node in your 
cluster by the load balancer. The second node does not have any responses 
already prepared and cached for your user. The node therefore handles the 
request as a completely new re [...]
 
 image::./img/lost-in-redirection-mockup3.png[]
 
diff --git a/wicket-user-guide/src/main/asciidoc/repeaters.adoc 
b/wicket-user-guide/src/main/asciidoc/repeaters.adoc
index 06b593bfa1..c77a5f52c5 100644
--- a/wicket-user-guide/src/main/asciidoc/repeaters.adoc
+++ b/wicket-user-guide/src/main/asciidoc/repeaters.adoc
@@ -12,7 +12,7 @@ A common task for web applications is to display a set of 
items. The most typica
   <%
     for(int i = 12; i<=32; i++) {
       %>
-      <div>Hello! I'm index n°<%= %></div>
+      <div>Hello! I'm index n°<%= i %></div>
   <% 
     }
   %>
diff --git a/wicket-user-guide/src/main/asciidoc/requestProcessing.adoc 
b/wicket-user-guide/src/main/asciidoc/requestProcessing.adoc
index 07cdcff416..f63ebb95fe 100644
--- a/wicket-user-guide/src/main/asciidoc/requestProcessing.adoc
+++ b/wicket-user-guide/src/main/asciidoc/requestProcessing.adoc
@@ -1,5 +1,5 @@
 
 Although Wicket was born to provide a reliable and comprehensive object 
oriented abstraction for web development, sometimes we might need to work 
directly with “raw” web entities such as user session, web request, query 
parameters, and so on. For example this is necessary if we want to store an 
arbitrary parameter in the user session.
 
-Wicket provides wrapper classes that allow us to easily access to web entities 
without the burden of using the low-level APIs of Java Servlet Specification. 
However it will always be possible to access standard classes (like 
_HttpSession_, _HttpServletRequest_, etc...) that lay under our Wicket 
application.
+Wicket provides wrapper classes that allow us to easily access web entities 
without the burden of using the low-level APIs of Java Servlet Specification. 
However it will always be possible to access standard classes (like 
_HttpSession_, _HttpServletRequest_, etc...) that lay under our Wicket 
application.
 This chapter will introduce these wrapper classes and it will explain how 
Wicket uses them to handle the web requests initiated by the user's browser.
diff --git 
a/wicket-user-guide/src/main/asciidoc/requestProcessing/requestProcessing_3.adoc
 
b/wicket-user-guide/src/main/asciidoc/requestProcessing/requestProcessing_3.adoc
index 9adacc5d6e..1534380923 100644
--- 
a/wicket-user-guide/src/main/asciidoc/requestProcessing/requestProcessing_3.adoc
+++ 
b/wicket-user-guide/src/main/asciidoc/requestProcessing/requestProcessing_3.adoc
@@ -62,7 +62,7 @@ The _RequestCycle_ comes with some hook methods which can be 
overridden to perfo
 * *onEndRequest():* called when the RequestCycle has finished to handle the 
request
 * *onDetach():* called after the request handling has completed and the 
RequestCycle is about to be detached from its thread. The default 
implementation of this method invokes detach() on the current session (the 
Session class will be shortly discussed in paragraph 9.4).
 
-Methods onBeforeRequest and onEndRequest can be used if we need to execute 
custom actions before and after business code is executed, such as opening a 
Hibernate/JPA session and closing it when code has terminated.
+Methods onBeginRequest and onEndRequest can be used if we need to execute 
custom actions before and after business code is executed, such as opening a 
Hibernate/JPA session and closing it when code has terminated.
 
 A more flexible way to interact with the request processing is to use the 
listener interface _org.apache.wicket.request.cycle.IRequestCycleListener_. In 
addition to the three methods already seen for RequestCycle, this interface 
offers further hooks into request processing:
 
diff --git 
a/wicket-user-guide/src/main/asciidoc/requestProcessing/requestProcessing_4.adoc
 
b/wicket-user-guide/src/main/asciidoc/requestProcessing/requestProcessing_4.adoc
index 4100c00b15..4d1d2513be 100644
--- 
a/wicket-user-guide/src/main/asciidoc/requestProcessing/requestProcessing_4.adoc
+++ 
b/wicket-user-guide/src/main/asciidoc/requestProcessing/requestProcessing_4.adoc
@@ -28,7 +28,7 @@ public void init(){
 
 === Handling session attributes
 
-The Session class handles session attributes in much the same way as the 
standard interface _javax.servlet.http.HttpSession_. The following methods are 
provided to create, read and remove session attributes:
+The Session class handles session attributes in much the same way as the 
standard interface _jakarta.servlet.http.HttpSession_. The following methods 
are provided to create, read and remove session attributes:
 
 * *setAttribute(String name, Serializable value):* creates an attribute 
identified by the given name. If the session already contains an attribute with 
the same name, the new value will replace the existing one. The value must be a 
serializable object.
 * *getAttribute(String name):* returns the value of the attribute identified 
by the given name, or _null_ if the name does not correspond to any attribute.
@@ -128,7 +128,7 @@ To retrieve a previously inserted object we must use the 
_getMetaData(MetaDataKe
 Application class code:
 [source,java]
 ----
-public static MetaDataApp extends WebApplication{
+public class MetaDataApp extends WebApplication{
        //Do some stuff...
        /**
        * Metadata key definition
diff --git 
a/wicket-user-guide/src/main/asciidoc/requestProcessing/requestProcessing_5.adoc
 
b/wicket-user-guide/src/main/asciidoc/requestProcessing/requestProcessing_5.adoc
index 30ef66a319..db53219f9b 100644
--- 
a/wicket-user-guide/src/main/asciidoc/requestProcessing/requestProcessing_5.adoc
+++ 
b/wicket-user-guide/src/main/asciidoc/requestProcessing/requestProcessing_5.adoc
@@ -25,16 +25,15 @@ Developers can also decide to use a custom exception mapper 
instead of _DefaultE
 [source,java]
 ----
 @Override
-public IProvider<IExceptionMapper> getExceptionMapperProvider()
+public Supplier<IExceptionMapper> getExceptionMapperProvider()
 {
     //...
 }
 ----
 
-The method returns an instance of _org.apache.wicket.util.IProvider_ that 
should return our custom exception mapper.
+The method returns a _java.util.function.Supplier_ that should return our 
custom exception mapper.
 
 === Ajax requests
 
-To control the behavior in Ajax requests the application may use 
_org.apache.wicket.settings.ExceptionSettings1.  
setAjaxErrorHandlingStrategy(ExceptionSettings.AjaxErrorStrategy)_. By default 
if an error occurs during the 
-processing of an Ajax request Wicket will render the configured error page. By 
configuring _org.apache.wicket.settings.ExceptionSettings.  
AjaxErrorStrategy2.INVOKE_FAILURE_HANDLER_ as the default strategy the 
application will call the JavaScript _onFailure_ callback(s) instead.
+To control the behavior in Ajax requests the application may use 
_org.apache.wicket.settings.ExceptionSettings.setAjaxErrorHandlingStrategy(ExceptionSettings.AjaxErrorStrategy)_.
 By default if an error occurs during the processing of an Ajax request Wicket 
will render the configured error page. By configuring 
_org.apache.wicket.settings.ExceptionSettings.AjaxErrorStrategy.INVOKE_FAILURE_HANDLER_
 as the default strategy the application will call the JavaScript _onFailure_ 
callback(s) instead.
 
diff --git a/wicket-user-guide/src/main/asciidoc/resources.adoc 
b/wicket-user-guide/src/main/asciidoc/resources.adoc
index fbe721254b..c1cd4b2e1f 100644
--- a/wicket-user-guide/src/main/asciidoc/resources.adoc
+++ b/wicket-user-guide/src/main/asciidoc/resources.adoc
@@ -1,5 +1,5 @@
 
-One of the biggest challenge for a web framework is to offer an efficient and 
consistent mechanism to handle internal resources such as CSS/JavaScript files, 
picture files, pdf and so on. Resources can be static (like an icon used across 
the site) or dynamic (they can be generated on the fly) and they can be made 
available to users as a download or as a simple URL.
+One of the biggest challenges for a web framework is to offer an efficient and 
consistent mechanism to handle internal resources such as CSS/JavaScript files, 
picture files, pdf and so on. Resources can be static (like an icon used across 
the site) or dynamic (they can be generated on the fly) and they can be made 
available to users as a download or as a simple URL.
 
 In <<keepControl.adoc#_adding_header_contents_to_the_final_page,paragraph 
6.6>> we have already seen how to add CSS and JavaScript contents to the header 
section of the page. In the first half of this chapter we will learn a more 
sophisticated technique that allows us to manage static resources directly from 
code and “pack” them with our custom components.
 
diff --git a/wicket-user-guide/src/main/asciidoc/resources/resources_10.adoc 
b/wicket-user-guide/src/main/asciidoc/resources/resources_10.adoc
index e1926bf0ad..6b774709d5 100644
--- a/wicket-user-guide/src/main/asciidoc/resources/resources_10.adoc
+++ b/wicket-user-guide/src/main/asciidoc/resources/resources_10.adoc
@@ -39,7 +39,7 @@ public class RSSProducerResource extends AbstractResource {
 
 Method _newResourceResponse_ returns an instance of _ResourceResponse_ 
representing the response generated by the custom resource. Since RSS feeds are 
based on XML, in the code above we have set the type of the response to 
text/xml and the text encoding to utf-8.
 
-To specify the content that will be returned by our resource we must also 
provide an implementation of inner class _WriteCallback_ which is responsible 
for writing content data to response's output stream. In our project we used 
class SyndFeedOutput from Rome framework to write our feed to response. Method 
_getFeed()_ is just an utility method that generates a sample RSS feed (which 
is an instance of interface _com.sun.syndication.feed.synd.SyndFeed_).
+To specify the content that will be returned by our resource we must also 
provide an implementation of inner class _WriteCallback_ which is responsible 
for writing content data to response's output stream. In our project we used 
class SyndFeedOutput from Rome framework to write our feed to response. Method 
_getFeed()_ is just an utility method that generates a sample RSS feed (which 
is an instance of interface _com.rometools.rome.feed.synd.SyndFeed_).
 
 Now that we have our custom resource in place, we can use it in the home page 
of the project. The easiest way to make a resource available to users is to 
expose it with link component _ResourceLink_: 
 
diff --git a/wicket-user-guide/src/main/asciidoc/resources/resources_15.adoc 
b/wicket-user-guide/src/main/asciidoc/resources/resources_15.adoc
index 78c21405a6..8b71437546 100644
--- a/wicket-user-guide/src/main/asciidoc/resources/resources_15.adoc
+++ b/wicket-user-guide/src/main/asciidoc/resources/resources_15.adoc
@@ -1,7 +1,7 @@
 
 
 
-Introduced in Wicket 6.20.0 / Wicket 7.0.0 there is a default way to be used 
in which the output of all CssHeaderItems / JavaScriptHeaderItems is modified 
before they are cached and delivered to the client. You can add a so called 
Compressor by receiving the resource settings and invoke 
setJavaScriptCompressor(...) / setJavaScriptCompressor(...). If you want to add 
several Compressors use _org.apache.wicket.resource.CompositeCssCompressor_ or 
_org.apache.wicket.resource.CompositeJavaScri [...]
+Introduced in Wicket 6.20.0 / Wicket 7.0.0 there is a default way to be used 
in which the output of all CssHeaderItems / JavaScriptHeaderItems is modified 
before they are cached and delivered to the client. You can add a so called 
Compressor by receiving the resource settings and invoke 
setJavaScriptCompressor(...) / setCssCompressor(...). If you want to add 
several Compressors use _org.apache.wicket.resource.CompositeCssCompressor_ or 
_org.apache.wicket.resource.CompositeJavaScriptCompressor_
 
 *Java Code:*
 [source,java]
diff --git a/wicket-user-guide/src/main/asciidoc/resources/resources_16.adoc 
b/wicket-user-guide/src/main/asciidoc/resources/resources_16.adoc
index 199e30d7b7..d4bcfd566e 100644
--- a/wicket-user-guide/src/main/asciidoc/resources/resources_16.adoc
+++ b/wicket-user-guide/src/main/asciidoc/resources/resources_16.adoc
@@ -10,7 +10,7 @@ URI uri = 
URI.create("jar:file:///videosFolder/videos.zip!/folderInZip/Video.mp4
 Path path = FileSystemResourceReference.getPath(uri);
 FileSystemResourceReference ref = new 
FileSystemResourceReference("video",path);
 Video video = new Video("video",ref);
-add(vide);
+add(video);
 ----
 
 HTML:
diff --git a/wicket-user-guide/src/main/asciidoc/resources/resources_3.adoc 
b/wicket-user-guide/src/main/asciidoc/resources/resources_3.adoc
index e7317cf465..dbfd5e093c 100644
--- a/wicket-user-guide/src/main/asciidoc/resources/resources_3.adoc
+++ b/wicket-user-guide/src/main/asciidoc/resources/resources_3.adoc
@@ -114,12 +114,12 @@ The component 
_org.apache.wicket.markup.html.image.Picture_ is used to provide a
 ...
                Picture picture = new Picture("picture");
 
-               Source big = new Source("big", new 
PackageResourceReference(getClass(), "big.jpg"), new 
PackageResourceReference(getClass(), "big-hd.jpg");
+               Source big = new Source("big", new 
PackageResourceReference(getClass(), "big.jpg"), new 
PackageResourceReference(getClass(), "big-hd.jpg"));
                big.setXValues("1x","2x");
                big.setMedia("(min-width: 40em)");
                picture.add(big);
 
-               Source small = new Source("small", new 
PackageResourceReference(getClass(), "small.jpg"), new 
PackageResourceReference(getClass(), "small-hd.jpg");
+               Source small = new Source("small", new 
PackageResourceReference(getClass(), "small.jpg"), new 
PackageResourceReference(getClass(), "small-hd.jpg"));
                small.setXValues("1x","2x");
                picture.add(small);
 
diff --git a/wicket-user-guide/src/main/asciidoc/resources/resources_6.adoc 
b/wicket-user-guide/src/main/asciidoc/resources/resources_6.adoc
index 725f918e4a..ba37f36d1f 100644
--- a/wicket-user-guide/src/main/asciidoc/resources/resources_6.adoc
+++ b/wicket-user-guide/src/main/asciidoc/resources/resources_6.adoc
@@ -7,10 +7,10 @@ For example we can use this method to ensure that a custom 
reference to JQueryUI
 
 [source,java]
 ----
-Url jqueyuiUrl = Url.parse("https://ajax.googleapis.com/ajax/libs/jqueryui/"; + 
+Url jqueryuiUrl = Url.parse("https://ajax.googleapis.com/ajax/libs/jqueryui/"; +
                                                                  
"1.10.2/jquery-ui.min.js");
-               
-UrlResourceReference jqueryuiRef = new UrlResourceReference(jqueyuiUrl){
+
+UrlResourceReference jqueryuiRef = new UrlResourceReference(jqueryuiUrl){
        @Override
        public List<HeaderItem> getDependencies() {
                Application application = Application.get();
diff --git a/wicket-user-guide/src/main/asciidoc/resources/resources_8.adoc 
b/wicket-user-guide/src/main/asciidoc/resources/resources_8.adoc
index c53af32162..7e4032d9a6 100644
--- a/wicket-user-guide/src/main/asciidoc/resources/resources_8.adoc
+++ b/wicket-user-guide/src/main/asciidoc/resources/resources_8.adoc
@@ -53,9 +53,9 @@ Please note that _HeaderResponseContainer_'s needs also a 
name for the correspon
 
 <html>
 
-<header>
+<head>
 <!-- no <script> tag here... -->
-</header>
+</head>
 
 <body>
 <h1 id="click-me">Click me!</h1>
diff --git a/wicket-user-guide/src/main/asciidoc/security/security_3.adoc 
b/wicket-user-guide/src/main/asciidoc/security/security_3.adoc
index 32ea08979d..5dd2e0e6d3 100644
--- a/wicket-user-guide/src/main/asciidoc/security/security_3.adoc
+++ b/wicket-user-guide/src/main/asciidoc/security/security_3.adoc
@@ -54,7 +54,7 @@ public class HttpsPage extends BaseClass {
 }
 
 // Secure page implementing IMarker:
-public class HttpsPage implements IMarker {
+public class HttpsPage extends WebPage implements IMarker {
 //Page code...
 }
 ----
diff --git a/wicket-user-guide/src/main/asciidoc/security/security_4.adoc 
b/wicket-user-guide/src/main/asciidoc/security/security_4.adoc
index 6150dcc47e..17c5939628 100644
--- a/wicket-user-guide/src/main/asciidoc/security/security_4.adoc
+++ b/wicket-user-guide/src/main/asciidoc/security/security_4.adoc
@@ -15,7 +15,7 @@ public interface ICrypt
 
 The default implementation for this interface is class 
_org.apache.wicket.util.crypt.SunJceCrypt_. It provides password-based 
cryptography using _PBEWithMD5AndDES_ algorithm coming with the standard 
security providers in the Java Runtime Environment.
 
-NOTE: For better security it is recommended to install Java Cryptography 
Extension (JCE) Unlimited Strength Jurisdiction 
http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html[Policy
 Files]
+NOTE: Since Java 9, unlimited strength cryptography is enabled by default. No 
additional configuration is needed.
 
 By using _CryptoMapper(IRequestMapper wrappedMapper, Application application)_ 
constructor the mapper will use the configured 
_org.apache.wicket.util.crypt.ICryptFactory_ from 
_org.apache.wicket.settings.SecuritySettings.getCryptFactory()_. To use a 
stronger cryptography mechanism there are the following options:
 
diff --git a/wicket-user-guide/src/main/asciidoc/security/security_5.adoc 
b/wicket-user-guide/src/main/asciidoc/security/security_5.adoc
index bd8b35942c..8225ea6d3d 100644
--- a/wicket-user-guide/src/main/asciidoc/security/security_5.adoc
+++ b/wicket-user-guide/src/main/asciidoc/security/security_5.adoc
@@ -48,7 +48,7 @@ For example:
  protected void init() {
   super.init();
   getRequestCycleListeners().add(
-       new ResourseIsolationRequestCycleListener(
+       new ResourceIsolationRequestCycleListener(
                new FetchMetadataResourceIsolationPolicy(),
                new OriginResourceIsolationPolicy(),
                new MyCustomResourceIsolationPolicy()
diff --git a/wicket-user-guide/src/main/asciidoc/single.adoc 
b/wicket-user-guide/src/main/asciidoc/single.adoc
index f9083e8a16..f9a7f7191f 100644
--- a/wicket-user-guide/src/main/asciidoc/single.adoc
+++ b/wicket-user-guide/src/main/asciidoc/single.adoc
@@ -9,8 +9,8 @@ The Apache Software Foundation
 :sectnums:
 
 //custom variables used inside the guide
-:wicket_examples_url: http://examples10x.wicket.apache.org
-:wicket_tutorial_examples_url: https://wicket-guide.herokuapp.com/
+:wicket_examples_url: https://examples10x.wicket.apache.org
+:wicket_tutorial_examples_url: 
https://github.com/bitstorm/Wicket-tutorial-examples
 
 == Introduction
 include::introduction.adoc[]
diff --git a/wicket-user-guide/src/main/asciidoc/testing/testing_1.adoc 
b/wicket-user-guide/src/main/asciidoc/testing/testing_1.adoc
index 2234152779..cb2212a939 100644
--- a/wicket-user-guide/src/main/asciidoc/testing/testing_1.adoc
+++ b/wicket-user-guide/src/main/asciidoc/testing/testing_1.adoc
@@ -9,15 +9,15 @@ Here is the content of TestHomePage:
 
 [source,java]
 ----
-public class TestHomePage{
+class TestHomePage{
        private WicketTester tester;
 
-       @Before
-       public void setUp(){
+       @BeforeEach
+       void setUp(){
                tester = new WicketTester(new WicketApplication());
        }
        @Test
-       public void homepageRendersSuccessfully(){
+       void homepageRendersSuccessfully(){
                //start and render the test page
                tester.startPage(HomePage.class);
                //assert rendered page class
@@ -44,7 +44,7 @@ To see an example of usage of clickLink, let's consider again 
project _LifeCycle
 ----
 //...
 @Test
-public void switchLabelTest(){
+void switchLabelTest(){
        //start and render the test page
        tester.startPage(HomePage.class);
        //assert rendered page class
@@ -85,7 +85,7 @@ In the test case from project _CustomDatepickerAjax_ we used 
_assertEnabled_/_as
 ----
 //...
 @Test
-public void testDisableDatePickerWithButton(){
+void testDisableDatePickerWithButton(){
        //start and render the test page
        tester.startPage(HomePage.class);
        //assert that datepicker is enabled
@@ -106,12 +106,12 @@ Method _startComponentInPage(Component)_ can be used to 
test a component in isol
 ----
 //...
 @Test
-public void testCustomPanelContainsLabel(){
+void testCustomPanelContainsLabel(){
        TemperatureDegreeField field = new TemperatureDegreeField("field", 
Model.of(0.00));
-       //Use standard JUnit class Assert
-       Assert.assertNull(field.get("measurementUnit"));
+       //Use standard JUnit class Assertions
+       Assertions.assertNull(field.get("measurementUnit"));
        tester.startComponentInPage(field);
-       Assert.assertNotNull(field.get("measurementUnit"));
+       Assertions.assertNotNull(field.get("measurementUnit"));
 }
 //...
 ----
@@ -126,7 +126,7 @@ In the test case from project _CustomResourceMounting_ we 
extract the text conta
 ----
 //...
 @Test
-public void testMountedResourceResponse() throws IOException, 
FeedException{tester.startResource(new RSSProducerResource());
+void testMountedResourceResponse() throws IOException, 
FeedException{tester.startResource(new RSSProducerResource());
        String responseTxt = tester.getLastResponse().getDocument();
        //write the RSS feed used in the test into a ByteArrayOutputStream
        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
@@ -135,7 +135,7 @@ public void testMountedResourceResponse() throws 
IOException, FeedException{test
 
        output.output(RSSProducerResource.getFeed(), writer);
        //the response and the RSS must be equal
-       Assert.assertEquals(responseTxt, outputStream.toString());
+       Assertions.assertEquals(responseTxt, outputStream.toString());
 }
 //...
 ----
@@ -216,7 +216,7 @@ public class HomePage extends WebPage {
 [source,java]
 ----
 @Test
-public void testAjaxBehavior(){
+void testAjaxBehavior(){
        //start and render the test page
        tester.startPage(HomePage.class);
        //test if label has the initial expected value
@@ -259,11 +259,11 @@ Webapp root folder can be passed to _WicketTester_'s 
constructor as further para
 
 [source,java]
 ----
-public class TestHomePage{
+class TestHomePage{
    private WicketTester tester;
 
-   @Before
-   public void setUp(){
+   @BeforeEach
+   void setUp(){
       //build the path to webapp root folder
       File curDirectory = new File(System.getProperty("user.dir"));
       File webContextDir = new File(curDirectory, "src/main/webapp");
@@ -278,8 +278,8 @@ NOTE: After a test method has been executed, we may need to 
clear any possible s
 
 [source,java]
 ----
-@After
-public void tearDown(){
+@AfterEach
+void tearDown(){
        //clear any side effect occurred during test.
        tester.destroy();
 }
@@ -294,18 +294,18 @@ In some cases you might need to set one or more specific 
request headers to make
 import static 
org.apache.wicket.protocol.http.FetchMetadataResourceIsolationPolicy.SAME_SITE;
 import static 
org.apache.wicket.protocol.http.FetchMetadataResourceIsolationPolicy.SEC_FETCH_SITE_HEADER;
 
-public class TestHomePage
+class TestHomePage
 {
        private WicketTester tester;
 
        @BeforeEach
-       public void setUp()
+       void setUp()
        {
                tester = new WicketTester(new WicketApplication());
        }
 
        @Test
-       public void homepageRendersSuccessfully()
+       void homepageRendersSuccessfully()
        {
                //start and render the test page
                tester.startPage(HomePage.class);
diff --git a/wicket-user-guide/src/main/asciidoc/testing/testing_2.adoc 
b/wicket-user-guide/src/main/asciidoc/testing/testing_2.adoc
index e77171579d..7da088cf9f 100644
--- a/wicket-user-guide/src/main/asciidoc/testing/testing_2.adoc
+++ b/wicket-user-guide/src/main/asciidoc/testing/testing_2.adoc
@@ -69,13 +69,13 @@ _assertInfoMessages_ and _assertErrorMessages_ are used in 
the test case from pr
 [source,java]
 ----
 @Test
-public void testMessageForSuccessfulLogin(){
+void testMessageForSuccessfulLogin(){
        inserUsernamePassword("user", "user");  
        tester.assertInfoMessages("Username and password are correct!");
 }      
        
 @Test
-public void testMessageForFailedLogin (){
+void testMessageForFailedLogin (){
        inserUsernamePassword("wrongCredential", "wrongCredential");            
        tester.assertErrorMessages("Wrong username or password");
 }
@@ -90,7 +90,7 @@ This method has been used in the test case of project 
_ModelChainingExample_ to
 [source,java]
 ----
 @Test
-public void testFormSelectSameModelObject(){
+void testFormSelectSameModelObject(){
        PersonListDetails personListDetails = new PersonListDetails();
        DropDownChoice dropDownChoice = (DropDownChoice) 
personListDetails.get("persons");
        List choices = dropDownChoice.getChoices();
diff --git a/wicket-user-guide/src/main/asciidoc/testing/testing_3.adoc 
b/wicket-user-guide/src/main/asciidoc/testing/testing_3.adoc
index e17bd3b629..d888c9519c 100644
--- a/wicket-user-guide/src/main/asciidoc/testing/testing_3.adoc
+++ b/wicket-user-guide/src/main/asciidoc/testing/testing_3.adoc
@@ -26,7 +26,7 @@ This test class allows to check if the generated markup 
contains one or more tag
 [source,java]
 ----
 @Test
-public void homePageMarkupTest()
+void homePageMarkupTest()
 {
        //start and render the test page
        tester.startPage(HomePage.class);
@@ -35,13 +35,13 @@ public void homePageMarkupTest()
 
        TagTester tagTester = TagTester.createTagByAttribute(responseTxt, 
"class", "myClass"); 
 
-       Assert.assertNotNull(tagTester);
-       Assert.assertEquals("span", tagTester.getName());       
+       Assertions.assertNotNull(tagTester);
+       Assertions.assertEquals("span", tagTester.getName());   
 
        List<TagTester> tagTesterList = 
TagTester.createTagsByAttribute(responseTxt, 
                                                "class", "myClass", false);
        
-       Assert.assertEquals(2, tagTesterList.size());
+       Assertions.assertEquals(2, tagTesterList.size());
 }
 ----
 
@@ -52,7 +52,7 @@ Another utility class that comes in handy when we want to 
test components markup
 [source,java]
 ----
 @Test
-public void customComponentMarkupTest()
+void customComponentMarkupTest()
 {
        //instantiate MyComponent
        MyComponent myComponent = //...
diff --git 
a/wicket-user-guide/src/main/asciidoc/testingspring/testingspring_2.adoc 
b/wicket-user-guide/src/main/asciidoc/testingspring/testingspring_2.adoc
index edd8f0c5c9..c98f3f8472 100644
--- a/wicket-user-guide/src/main/asciidoc/testingspring/testingspring_2.adoc
+++ b/wicket-user-guide/src/main/asciidoc/testingspring/testingspring_2.adoc
@@ -1,14 +1,13 @@
 
 
 
-One of the main features of Apache Wicket framework is the ability to easily 
write and run plain unit tests for your Pages and all other kinds of Components 
that even include the verification of the rendering process itself by using 
JUnit framework and the WicketTester API only. When using Spring framework for 
application configuration together with Wicket, as we do, you can even use the 
same tools to easily write and run full blown integration tests for your web 
application as well. All [...]
+One of the main features of Apache Wicket framework is the ability to easily 
write and run plain unit tests for your Pages and all other kinds of Components 
that even include the verification of the rendering process itself by using 
JUnit framework and the WicketTester API only. When using Spring framework for 
application configuration together with Wicket, as we do, you can even use the 
same tools to easily write and run full blown integration tests for your web 
application as well. All [...]
 
 [source,java]
 ----
-@RunWith(SpringJUnit4ClassRunner.class)
+@ExtendWith(SpringExtension.class)
 @ContextConfiguration(locations = {"classpath:WEB-INF/applicationContext.xml"})
-@TransactionConfiguration(transactionManager = "txManager", defaultRollback = 
false)
-public class LoginPageTest {
+class LoginPageTest {
 
     private WicketTester tester;
 
@@ -18,15 +17,15 @@ public class LoginPageTest {
     @Autowired
     private MyWebApplication myWebApplication;
 
-    @Before
-    public void setUp() {
+    @BeforeEach
+    void setUp() {
         tester = new WicketTester(myWebApplication);
     }
 
     @Test
     @Transactional
     @Rollback(true)
-    public void testRenderMyPage() {
+    void testRenderMyPage() {
         tester.startPage(LoginPage.class);
         tester.assertRenderedPage(LoginPage.class);
         tester.assertComponent("login", LoginComponent.class);
@@ -34,7 +33,7 @@ public class LoginPageTest {
 }
 ----
 
-By defining three annotations on the class level (see code snippet above) in 
your test, Spring's TestContext framework takes care of preparing and 
initializing an ApplicationContext instance having all the beans defined in the 
according Spring context file as well as the transaction management in case 
your integration test includes some kind of database access. Fields marked with 
_Autowired_ annotation will be automatically dependency injected as well so 
that you can easily access and us [...]
+By defining two annotations on the class level (see code snippet above) in 
your test, Spring's TestContext framework takes care of preparing and 
initializing an ApplicationContext instance having all the beans defined in the 
according Spring context file as well as the transaction management in case 
your integration test includes some kind of database access. Fields marked with 
_Autowired_ annotation will be automatically dependency injected as well so 
that you can easily access and use  [...]
 
 When you run this test though, you'll unfortunately get the following 
exception raised:
 
@@ -105,7 +104,7 @@ public SpringComponentInjector(WebApplication webapp, 
ApplicationContext ctx,
 }
 ----
 
-In order to use this constructor instead of the one we used previously, we now 
obviously need to get hold of the _ApplicationContext_ instance on our own in 
our _MyWebApplication_ implementation. The easiest way to do this is to use 
Spring's own concept of  
http://docs.spring.io/spring/docs/3.0.x/spring-framework-reference/html/beans.html#beans-factory-aware[lifecycle
 callbacks] provided to the beans managed by the Spring container. Since our 
_MyWebApplication_ is also a bean managed by  [...]
+In order to use this constructor instead of the one we used previously, we now 
obviously need to get hold of the _ApplicationContext_ instance on our own in 
our _MyWebApplication_ implementation. The easiest way to do this is to use 
Spring's own concept of  
https://docs.spring.io/spring-framework/reference/core/beans/factory-nature.html#beans-factory-aware[lifecycle
 callbacks] provided to the beans managed by the Spring container. Since our 
_MyWebApplication_ is also a bean managed by th [...]
 
 [source,java]
 ----
diff --git a/wicket-user-guide/src/main/asciidoc/urls/urls_2.adoc 
b/wicket-user-guide/src/main/asciidoc/urls/urls_2.adoc
index b2552d08df..251fc924a1 100644
--- a/wicket-user-guide/src/main/asciidoc/urls/urls_2.adoc
+++ b/wicket-user-guide/src/main/asciidoc/urls/urls_2.adoc
@@ -5,7 +5,7 @@ A link to a bookmarkable page can be built with the link 
component _org.apache.w
 
 [source,java]
 ----
-BookmarkablePageLink bpl=new 
BookmarkablePageLink<Void>(PageWithParameters.class, pageParameters);
+BookmarkablePageLink bpl=new BookmarkablePageLink<Void>("myLink", 
PageWithParameters.class, pageParameters);
 ----
 
 The specific purpose of this component is to provide an anchor to a 
bookmarkable page, hence we don't have to implement any abstract method like we 
do with Link component.
diff --git a/wicket-user-guide/src/main/asciidoc/urls/urls_3.adoc 
b/wicket-user-guide/src/main/asciidoc/urls/urls_3.adoc
index 4e4604806a..e1d91ff7a8 100644
--- a/wicket-user-guide/src/main/asciidoc/urls/urls_3.adoc
+++ b/wicket-user-guide/src/main/asciidoc/urls/urls_3.adoc
@@ -57,19 +57,7 @@ Please note that any link to the current page (aka self 
link) is disabled. For e
 <a disabled="disabled">HomePage</a>
 ----
 
-The markup used to render disabled links can be customized using the markup 
settings (class org.apache.wicket.settings.MarkupSettings) available in the 
application class:
-
-[source,java]
-----
-@Override
-public void init()
-{
-       super.init();
-       //wrap disabled links with <b> tag
-       getMarkupSettings().setDefaultBeforeDisabledLink("<b>");
-       getMarkupSettings().setDefaultAfterDisabledLink("</b>");                
-}
-----
+NOTE: In previous versions of Wicket, the markup used to render disabled links 
could be customized using methods `setDefaultBeforeDisabledLink` and 
`setDefaultAfterDisabledLink` on the markup settings. This customization is no 
longer available in Wicket 10.
 
 The purpose of <wicket:link> tag is not limited to just simplifying the usage 
of bookmarkable pages. As we will see in chapter 13, this tag can also be 
adopted to manage web resources like pictures, CSS files, JavaScript files and 
so on.
 
diff --git a/wicket-user-guide/src/main/asciidoc/urls/urls_6.adoc 
b/wicket-user-guide/src/main/asciidoc/urls/urls_6.adoc
index 171a196b9b..7f0ab3b16f 100644
--- a/wicket-user-guide/src/main/asciidoc/urls/urls_6.adoc
+++ b/wicket-user-guide/src/main/asciidoc/urls/urls_6.adoc
@@ -5,7 +5,7 @@ Having structured URLs in our site is a basic requirement if we 
want to build an
 
 === Mounting a single page
 
-With Wicket we can mount a page to a given path in much the same way as we map 
a servlet filter to a desired path inside file web.xml (see 
<<helloWorld.adoc#_configuration_of_wicket_applications,paragraph 4.2>>). Using 
mountPage(String path, Class <T> pageClass) method of the WepApplication class 
we tell Wicket to respond with a new instance of pageClass whenever a user 
navigates to the given path. In the application class of the project 
MountedPagesExample we mount MountedPage to the "/ [...]
+With Wicket we can mount a page to a given path in much the same way as we map 
a servlet filter to a desired path inside file web.xml (see 
<<helloWorld.adoc#_configuration_of_wicket_applications,paragraph 4.2>>). Using 
mountPage(String path, Class <T> pageClass) method of the WebApplication class 
we tell Wicket to respond with a new instance of pageClass whenever a user 
navigates to the given path. In the application class of the project 
MountedPagesExample we mount MountedPage to the "/ [...]
 
 [source,java]
 ----
@@ -93,7 +93,7 @@ Generated URL:
 
 === Mounting a package
 
-In addition to mounting a single page, Wicket allows to mount all of the pages 
inside a package to a given path. Method mountPackage(String path, Class<T> 
pageClass) of class WepApplication will mount every page inside pageClass's 
package to the specified path.
+In addition to mounting a single page, Wicket allows to mount all of the pages 
inside a package to a given path. Method mountPackage(String path, Class<T> 
pageClass) of class WebApplication will mount every page inside pageClass's 
package to the specified path.
 
 The resulting URL for package-mounted pages will have the following structure:
 
@@ -160,9 +160,9 @@ protected IMapperContext newMapperContext() {
 
 === Controlling how page parameters are encoded with IPageParametersEncoder
 
-Some request mappers (like MountedMapper and PackageMapper) can delegate page 
parameters encoding/decoding to interface 
_org.apache.wicket.request.mapper.parameter.IPage ParametersEncoder_. This 
entity exposes two methods: encodePageParameters() and decodePageParameters(): 
the first  one is invoked to encode page parameters into an URL while the 
second one extracts parameters from the URL.
+Some request mappers (like MountedMapper and PackageMapper) can delegate page 
parameters encoding/decoding to interface 
_org.apache.wicket.request.mapper.parameter.IPageParametersEncoder_. This 
entity exposes two methods: encodePageParameters() and decodePageParameters(): 
the first  one is invoked to encode page parameters into an URL while the 
second one extracts parameters from the URL.
 
-Wicket comes with a built-in implementation of this interface which encodes 
named page parameters as URL segments using the following pattern: 
/paramName1/paramValue1/paramName2/param Value2...
+Wicket comes with a built-in implementation of this interface which encodes 
named page parameters as URL segments using the following pattern: 
/paramName1/paramValue1/paramName2/paramValue2...
 
 This built-in encoder is 
_org.apache.wicket.request.mapper.parameter.UrlPathPageParametersEncoder_ 
class. In the _PageParametersEncoderExample_ project we have manually mounted a 
_MountedMapper_ that takes as input also an _UrlPathPageParametersEncoder_:
 
diff --git a/wicket-user-guide/src/main/asciidoc/whyLearn.adoc 
b/wicket-user-guide/src/main/asciidoc/whyLearn.adoc
index a987b6748e..e54dac6e52 100644
--- a/wicket-user-guide/src/main/asciidoc/whyLearn.adoc
+++ b/wicket-user-guide/src/main/asciidoc/whyLearn.adoc
@@ -1,7 +1,7 @@
 
 Software development is a challenging activity and developers must keep their 
skills up-to-date with new technologies.
 
-But before starting to learn the last “coolest” framework we should always ask 
ourself if it is the right tool for us and how it can improve our everyday job.
+But before starting to learn the latest “coolest” framework we should always 
ask ourselves if it is the right tool for us and how it can improve our 
everyday job.
 Java's ecosystem is already full of many well-known web frameworks, so why 
should we spend our time learning Wicket?
 
 This chapter will show you how Wicket is different from other web frameworks 
you may know and it will explain also how it can improve your life as web 
developer.
diff --git a/wicket-user-guide/src/main/asciidoc/whyLearn/whyLearn_1.adoc 
b/wicket-user-guide/src/main/asciidoc/whyLearn/whyLearn_1.adoc
index 54f33c9717..07d9673bfa 100644
--- a/wicket-user-guide/src/main/asciidoc/whyLearn/whyLearn_1.adoc
+++ b/wicket-user-guide/src/main/asciidoc/whyLearn/whyLearn_1.adoc
@@ -1,5 +1,5 @@
 
-...but we all hate spaghetti code! That's why in the first half of the 2000s 
we have seen the birth of so many web frameworks. Their mission was to separate 
our business code from presentation layer (like JSP pages).
+...but we all hate spaghetti code! That's why in the first half of the 2000s 
we saw the birth of so many web frameworks. Their mission was to separate our 
business code from presentation layer (like JSP pages).
 
 Some of them (like Struts, Spring MVC, Velocity, etc...) have become widely 
adopted and they made the MVC pattern very popular among developers.
 However, none of these frameworks offers a real object-oriented (OO) 
abstraction for web pages and we still have to take care of web-related tasks 
such as HTTP request/response handling, URL mapping, storing data into user 
sessions and so on.
diff --git a/wicket-user-guide/src/main/asciidoc/whyLearn/whyLearn_2.adoc 
b/wicket-user-guide/src/main/asciidoc/whyLearn/whyLearn_2.adoc
index 658ac6b2df..7dcc9c7d91 100644
--- a/wicket-user-guide/src/main/asciidoc/whyLearn/whyLearn_2.adoc
+++ b/wicket-user-guide/src/main/asciidoc/whyLearn/whyLearn_2.adoc
@@ -10,7 +10,7 @@ image::./img/requesthandling-general.png[]
 _General schema of page request handling for a component oriented framework_
 
 With this kind of framework our web pages and their HTML components (forms, 
input controls, links, etc...), are pure class instances.
-Since pages are class instances they live inside the JVM heap and we can 
handle them as we do with any other Java class.
+Since pages are class instances, they live inside the JVM heap and we can 
handle them as we do with any other Java class.
 This approach is very similar to what GUI frameworks (like Swing or SWT) do 
with desktop windows and their components. Wicket and the other component 
oriented frameworks bring to web development the same kind of abstraction that 
GUI frameworks offer when we build a desktop application. Most of those kind of 
frameworks hide the details of the HTTP protocol and naturally solve the 
problem of its stateless nature.
 
 
diff --git a/wicket-user-guide/src/main/asciidoc/whyLearn/whyLearn_4.adoc 
b/wicket-user-guide/src/main/asciidoc/whyLearn/whyLearn_4.adoc
index a44dcd97bf..e939486d3e 100644
--- a/wicket-user-guide/src/main/asciidoc/whyLearn/whyLearn_4.adoc
+++ b/wicket-user-guide/src/main/asciidoc/whyLearn/whyLearn_4.adoc
@@ -1,13 +1,13 @@
 
-Wicket is not the only component oriented framework available in the Java 
ecosystem. Among its competitors we can find GWT (from Google), JSF (from 
Oracle), Vaadin (from Vaadin Ltd.), etc... Even if Wicket and all those other 
frameworks have their pros and cons, there are good reasons to prefer Wicket 
over them:
+Wicket is not the only component oriented framework available in the Java 
ecosystem. Among its competitors we can find GWT (from Google), JSF (Jakarta 
Faces), Vaadin (from Vaadin Ltd.), etc... Even if Wicket and all those other 
frameworks have their pros and cons, there are good reasons to prefer Wicket 
over them:
 
 * *Wicket is 100% open source*: Wicket is a top Apache project and it doesn't 
depend on any private company. You don't have to worry about future licensing 
changes, Wicket will always be released under Apache license 2.0 and freely 
available.
 
-* *Wicket is a community driven project*: The Wicket team supports and 
promotes the dialogue with the framework's users through two mailing lists  
http://wicket.apache.org/help/email.html[(one for users and another one for 
framework developers)] and an  
https://issues.apache.org/jira/browse/WICKET[Apache JIRA] (the issue tracking 
system). Moreover, as any other Apache project, Wicket is developed paying 
great attention to user feedback and to suggested features.
+* *Wicket is a community driven project*: The Wicket team supports and 
promotes the dialogue with the framework's users through two mailing lists  
https://wicket.apache.org/help/email.html[(one for users and another one for 
framework developers)] and an  https://github.com/apache/wicket/issues[GitHub 
Issues] (the issue tracking system). Moreover, as any other Apache project, 
Wicket is developed paying great attention to user feedback and to suggested 
features.
 
 * *Wicket is just about Java and good old HTML*: almost all web frameworks 
force users to adopt special tags or to use server side code inside HTML 
markup. This is clearly in contrast with the concept of separation between 
presentation and business logic and it leads to a more confusing code in our 
pages. In Wicket we don't have to take care of generating HTML inside the page 
itself, and we won't need to use any tag other than standard HTML tags. All we 
have to do is to attach our compon [...]
 
-* *With Wicket we can easily use JavaBeans and  
http://en.wikipedia.org/wiki/Plain_Old_Java_Object[POJO] in our web tier*: one 
of the most annoying and error-prone tasks in web development is collecting 
user input through a form and keeping form fields updated with previously 
inserted values. This usually requires a huge amount of code to extract input 
from request parameters (which are strings), parse them to Java types and store 
them into some kind of variable. And this is just half of [...]
+* *With Wicket we can easily use JavaBeans and  
https://en.wikipedia.org/wiki/Plain_Old_Java_Object[POJO] in our web tier*: one 
of the most annoying and error-prone tasks in web development is collecting 
user input through a form and keeping form fields updated with previously 
inserted values. This usually requires a huge amount of code to extract input 
from request parameters (which are strings), parse them to Java types and store 
them into some kind of variable. And this is just half o [...]
 <<_wicket_models_and_forms,Chapter 10>> will introduce a Wicket model concept 
and we will learn how to harness this entity with forms.
 
-* *No complex XML needed*: Wicket was designed to minimize the amount of 
configuration files needed to run our applications. No XML file is required 
except for the standard deployment descriptor web.xml (unless you are using 
Servlet 3 or a later version. See 
<<whyLearn.adoc#_component_oriented_frameworks_an_overview,Chapter 4>> for more 
details).
+* *No complex XML needed*: Wicket was designed to minimize the amount of 
configuration files needed to run our applications. No XML file is required 
except for the standard deployment descriptor web.xml (unless you are using 
Jakarta Servlet. See 
<<whyLearn.adoc#_component_oriented_frameworks_an_overview,Chapter 4>> for more 
details).


Reply via email to