You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by ad...@apache.org on 2026/04/17 09:07:57 UTC
(wicket) branch wicket-10.x updated: WICKET-7180 Fix typos, language and links (#1424)
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 <da...@apache.org>
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).