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