You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@deltaspike.apache.org by bu...@apache.org on 2014/12/15 23:31:43 UTC
svn commit: r932889 [5/7] - in /websites/staging/deltaspike/trunk/content:
./ documentation/
Modified: websites/staging/deltaspike/trunk/content/documentation/jsf.html
==============================================================================
--- websites/staging/deltaspike/trunk/content/documentation/jsf.html (original)
+++ websites/staging/deltaspike/trunk/content/documentation/jsf.html Mon Dec 15 22:31:42 2014
@@ -6,7 +6,7 @@
<meta name="description" content="deltaspike-generate-pages">
<meta name="author" content="chm">
-<title>JSF</title>
+<title>JSF Module</title>
<!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at . http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -->
@@ -134,7 +134,7 @@ body {
data-target=".nav-collapse"> <span class="icon-bar"></span> <span
class="icon-bar"></span> <span class="icon-bar"></span>
</a> <a class="brand logocolor"
- href="http://deltaspike.apache.org/index.html">Apache DeltaSpike</a>
+ href="http://deltaspike.apache.org/index.html">Apache DeltaSpike []</a>
<div class="nav-collapse">
<ul class="nav">
<li class="active"><a
@@ -164,93 +164,80 @@ body {
<div class="row">
<div class="span12">
<div class="page-title">
- <h1>JSF</h1>
+ <h1>JSF Module</h1>
</div>
<div id="toc" class="toc">
<ul class="sectlevel1">
-<li><a href="#_multi_window_handling">Multi-Window Handling</a>
+<li><a href="#_overview">Overview</a></li>
+<li><a href="#_configure_your_projects">Configure Your Projects</a>
<ul class="sectlevel2">
-<li><a href="#_intro">Intro</a>
-<ul class="sectlevel3">
-<li><a href="#_historic_considerations">Historic Considerations</a></li>
-<li><a href="#_how_jsf_2_changed_the_world">How JSF-2 changed the world</a></li>
-<li><a href="#_standard_windowid_handling">Standard windowId Handling</a></li>
+<li><a href="#_declare_jsf_module_dependencies">Declare JSF Module Dependencies</a></li>
</ul>
</li>
-<li><a href="#_available_modes">Available modes</a>
+<li><a href="#_use_the_module_features">Use the Module Features</a>
+<ul class="sectlevel2">
+<li><a href="#_multi_window_handling">Multi-Window Handling</a>
<ul class="sectlevel3">
-<li><a href="#_clientwindow">CLIENTWINDOW</a>
+<li><a href="#_background">Background</a>
<ul class="sectlevel4">
-<li><a href="#_advantage">Advantage</a></li>
-<li><a href="#_disadvantage">Disadvantage</a></li>
-<li><a href="#_change_windowhandler_html">Change windowhandler.html</a></li>
+<li><a href="#_historic_considerations">Historic Considerations</a></li>
+<li><a href="#_how_jsf_2_changed_the_world">How JSF-2 Changed the World</a></li>
+<li><a href="#_standard_windowid_handling">Standard windowId Handling</a></li>
</ul>
</li>
-<li><a href="#_lazy">LAZY</a>
+<li><a href="#_available_modes">Available Modes</a>
<ul class="sectlevel4">
-<li><a href="#_advantage_2">Advantage</a></li>
-<li><a href="#_disadvantage_2">Disadvantage</a></li>
-<li><a href="#_workflow_example">Workflow example</a></li>
-</ul>
-</li>
+<li><a href="#_clientwindow">CLIENTWINDOW</a></li>
+<li><a href="#_lazy">LAZY</a></li>
<li><a href="#_none">NONE</a></li>
<li><a href="#_delegated">DELEGATED</a></li>
<li><a href="#_custom">CUSTOM</a></li>
</ul>
</li>
<li><a href="#_configuration">Configuration</a>
-<ul class="sectlevel3">
+<ul class="sectlevel4">
<li><a href="#_ds_windowid">ds:windowId</a></li>
<li><a href="#_ds_disableclientwindow">ds:disableClientWindow</a></li>
-<li><a href="#_number_of_active_windows">Number of active windows</a></li>
+<li><a href="#_number_of_active_windows">Number of Active Windows</a></li>
<li><a href="#_switch_mode">Switch Mode</a></li>
-<li><a href="#_provide_a_custom_clientwindow">Provide a custom ClientWindow</a></li>
+<li><a href="#_provide_a_custom_clientwindow">Provide a Custom ClientWindow</a></li>
</ul>
</li>
<li><a href="#_based_scopes">Based Scopes</a></li>
</ul>
</li>
<li><a href="#_scopes">Scopes</a>
-<ul class="sectlevel2">
+<ul class="sectlevel3">
<li><a href="#__windowscoped">@WindowScoped</a></li>
<li><a href="#__viewaccessscoped">@ViewAccessScoped</a></li>
-<li><a href="#__groupedconversationscoped_since_0_6">@GroupedConversationScoped (since 0.6)</a></li>
+<li><a href="#__groupedconversationscoped_from_deltaspike_0_6">@GroupedConversationScoped (From DeltaSpike 0.6)</a></li>
<li><a href="#__viewscoped">@ViewScoped</a></li>
<li><a href="#_jsf_2_0_scopes">JSF 2.0 Scopes</a></li>
</ul>
</li>
-<li><a href="#_integration_with_deltaspike_type_safe_messages">Integration with DeltaSpike type-safe messages</a></li>
+<li><a href="#_integration_with_deltaspike_type_safe_messages">Integration with DeltaSpike Type-safe Messages</a></li>
<li><a href="#_type_safe_view_configs">Type-safe View-Configs</a>
-<ul class="sectlevel2">
-<li><a href="#_intro_2">Intro</a></li>
-<li><a href="#_motivation">Motivation</a></li>
-<li><a href="#_bean_discovery_mode_annotated">Bean-discovery-mode annotated</a></li>
-<li><a href="#_basic_api_usages">Basic API usages</a>
<ul class="sectlevel3">
-<li><a href="#_file_view_and_folder_folder_paths">File (@View) and Folder (@Folder) paths</a>
+<li><a href="#_intro">Intro</a></li>
+<li><a href="#_motivation">Motivation</a></li>
+<li><a href="#_bean_discovery_mode_annotated">Bean-discovery-mode Annotated</a></li>
+<li><a href="#_basic_api_usages">Basic API Usages</a>
<ul class="sectlevel4">
-<li><a href="#__folder_name">@Folder#name</a></li>
-<li><a href="#__view">@View</a></li>
-</ul>
-</li>
+<li><a href="#_file_view_and_folder_folder_paths">File (@View) and Folder (@Folder) Paths</a></li>
<li><a href="#_navigation_parameters">Navigation Parameters</a></li>
-<li><a href="#_static_configuration_via_navigationparameter">Static Configuration via @NavigationParameter</a>
-<ul class="sectlevel4">
-<li><a href="#_dynamic_configuration_via_navigationparametercontext">Dynamic Configuration via NavigationParameterContext</a></li>
-</ul>
-</li>
+<li><a href="#_static_configuration_via_navigationparameter">Static Configuration via @NavigationParameter</a></li>
<li><a href="#_security_integration_via_secured">Security Integration via @Secured</a></li>
<li><a href="#_view_controller_callbacks_via_viewcontrollerref">View-Controller Callbacks via @ViewControllerRef</a></li>
<li><a href="#_referencing_views_via_viewref">Referencing Views via @ViewRef</a></li>
-<li><a href="#_using_the_optional_viewnavigationhandler">Using the (optional) ViewNavigationHandler</a></li>
+<li><a href="#_using_the_optional_viewnavigationhandler">Using the (Optional) ViewNavigationHandler</a></li>
<li><a href="#_configuring_a_default_error_view">Configuring a Default Error-View</a></li>
<li><a href="#_using_matches">Using @Matches</a></li>
<li><a href="#_using_viewconfigresolver">Using ViewConfigResolver</a></li>
</ul>
</li>
-<li><a href="#_advanced_api_usages">Advanced API usages</a>
-<ul class="sectlevel3">
+<li><a href="#_advanced_api_usages">Advanced API Usages</a>
+<ul class="sectlevel4">
<li><a href="#_creating_custom_meta_data_via_viewmetadata">Creating Custom Meta-Data via @ViewMetaData</a></li>
<li><a href="#_creating_custom_meta_data_via_stereotype">Creating Custom Meta-Data via @Stereotype</a></li>
<li><a href="#_creating_custom_callbacks_via_viewmetadata">Creating Custom Callbacks via @ViewMetaData</a></li>
@@ -259,7 +246,7 @@ body {
</li>
<li><a href="#_path_validation">Path-Validation</a></li>
<li><a href="#_view_config_spi">View-Config SPI</a>
-<ul class="sectlevel3">
+<ul class="sectlevel4">
<li><a href="#_configdescriptorvalidator">ConfigDescriptorValidator</a></li>
<li><a href="#_confignodeconverter">ConfigNodeConverter</a></li>
<li><a href="#_configpreprocessor">ConfigPreProcessor</a></li>
@@ -270,52 +257,123 @@ body {
<li><a href="#__viewconfigroot">@ViewConfigRoot</a></li>
</ul>
</li>
-<li><a href="#_activation_of_custom_naming_conventions">Activation of custom naming conventions</a></li>
+<li><a href="#_activation_of_custom_naming_conventions">Activation of Custom Naming Conventions</a></li>
</ul>
</li>
<li><a href="#__grouped_conversations">(Grouped-)Conversations</a>
-<ul class="sectlevel2">
+<ul class="sectlevel3">
<li><a href="#_terminating_conversations">Terminating Conversations</a></li>
<li><a href="#_sub_conversation_groups">Sub-Conversation-Groups</a></li>
</ul>
</li>
<li><a href="#_injection_in_jsf_artifacts_todo">Injection in JSF Artifacts (TODO)</a>
-<ul class="sectlevel2">
-<li><a href="#_converter_validator">Converter & Validator</a></li>
+<ul class="sectlevel3">
+<li><a href="#_converter_and_validator">Converter and Validator</a></li>
<li><a href="#_phaselistener">PhaseListener</a></li>
</ul>
</li>
<li><a href="#_event_broadcasting">Event broadcasting</a>
-<ul class="sectlevel2">
+<ul class="sectlevel3">
<li><a href="#_beforejsfrequest_afterjsfrequest_todo">BeforeJsfRequest / AfterJsfRequest (TODO)</a></li>
<li><a href="#_beforephase_afterphase_todo">BeforePhase / AfterPhase (TODO)</a></li>
<li><a href="#_jsf_systemevents">JSF SystemEvents</a></li>
</ul>
</li>
-<li><a href="#_intergration_with_exception_control_since_0_6">Intergration with Exception Control (since 0.6)</a>
-<ul class="sectlevel2">
-<li><a href="#_examples">Examples</a>
+<li><a href="#_intergration_with_exception_control_from_deltaspike_0_6">Intergration with Exception Control (from DeltaSpike 0.6)</a>
<ul class="sectlevel3">
+<li><a href="#_examples">Examples</a>
+<ul class="sectlevel4">
<li><a href="#_basic">Basic</a></li>
<li><a href="#_redirect">Redirect</a></li>
</ul>
</li>
-<li><a href="#_using_a_custom_qualifier_for_jsf_exceptions">Using a custom qualifier for JSF Exceptions</a></li>
+<li><a href="#_using_a_custom_qualifier_for_jsf_exceptions">Using a Custom Qualifier for JSF Exceptions</a></li>
+</ul>
+</li>
+<li><a href="#_double_submit_prevention">Double-Submit Prevention</a></li>
+<li><a href="#_tips">Tips</a></li>
</ul>
</li>
-<li><a href="#_double_submit_prevention">Double-Submit prevention</a></li>
-<li><a href="#_support_of_ear_deployments">Support of EAR deployments</a></li>
-<li><a href="#_hints">Hints</a></li>
</ul>
<hr>
<div class="sect1">
-<h2 id="_multi_window_handling">Multi-Window Handling</h2>
+<h2 id="_overview">Overview</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>The JSF module provides CDI integration with JSF, with type-safe view config, multi-window handling, new scopes (WindowScoped, ViewScope, ViewAccessScoped, GroupedConversationScoped) and integration with DeltaSpike âcoreâ messages and exception handling.</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_configure_your_projects">Configure Your Projects</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>The configuration information provided here is for Maven-based projects and it assumes that you have already declared the DeltaSpike version and DeltaSpike Core module for your projects, as detailed in <a href="configure.html">Configure DeltaSpike in Your Projects</a>. For Maven-independent projects, see <a href="configure.html#config-maven-indep">Configure DeltaSpike in Maven-independent Projects</a>.</p>
+</div>
+<div class="sect2">
+<h3 id="_declare_jsf_module_dependencies">Declare JSF Module Dependencies</h3>
+<div class="paragraph">
+<p>Add the JSF module to the list of dependencies in the project <code>pom.xml</code> file using this code snippet:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="xml"><span class="tag"><dependency></span>
+ <span class="tag"><groupId></span>org.apache.deltaspike.modules<span class="tag"></groupId></span>
+ <span class="tag"><artifactId></span>deltaspike-jsf-module-api<span class="tag"></artifactId></span>
+ <span class="tag"><version></span>${deltaspike.version}<span class="tag"></version></span>
+ <span class="tag"><scope></span>compile<span class="tag"></scope></span>
+<span class="tag"></dependency></span>
+
+<span class="tag"><dependency></span>
+ <span class="tag"><groupId></span>org.apache.deltaspike.modules<span class="tag"></groupId></span>
+ <span class="tag"><artifactId></span>deltaspike-jsf-module-impl<span class="tag"></artifactId></span>
+ <span class="tag"><version></span>${deltaspike.version}<span class="tag"></version></span>
+ <span class="tag"><scope></span>runtime<span class="tag"></scope></span>
+<span class="tag"></dependency></span></code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Some EE6 servers cannot handle optional classes. From DeltaSpike 1.0.1, if you do not like the corresponding log entries during startup or the deployment fails, you can use an alternative impl-module (instead of deltaspike-jsf-module-impl):</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="xml"><span class="tag"><dependency></span>
+ <span class="tag"><groupId></span>org.apache.deltaspike.modules<span class="tag"></groupId></span>
+ <span class="tag"><artifactId></span>deltaspike-jsf-module-impl-ee6<span class="tag"></artifactId></span>
+ <span class="tag"><version></span>${deltaspike.version}<span class="tag"></version></span>
+ <span class="tag"><scope></span>runtime<span class="tag"></scope></span>
+<span class="tag"></dependency></span></code></pre>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_use_the_module_features">Use the Module Features</h2>
<div class="sectionbody">
+<div class="admonitionblock important">
+<table>
+<tr>
+<td class="icon">
+<div class="title">Important</div>
+</td>
+<td class="content">
+<div class="title">Support of EAR deployments</div>
+Before using features described by this page, please ensure that you are
+aware of
+<a href="https://issues.apache.org/jira/browse/DELTASPIKE-335">DELTASPIKE-335</a> and
+the corresponding impact.
+</td>
+</tr>
+</table>
+</div>
<div class="sect2">
-<h3 id="_intro">Intro</h3>
+<h3 id="_multi_window_handling">Multi-Window Handling</h3>
<div class="sect3">
-<h4 id="_historic_considerations">Historic Considerations</h4>
+<h4 id="_background">Background</h4>
+<div class="sect4">
+<h5 id="_historic_considerations">Historic Considerations</h5>
<div class="paragraph">
<p>Until the end of the 1990s web browsers are usually single threaded and
only had one window. But in the last years browsers supporting multiple
@@ -326,8 +384,8 @@ maintaining web application data in @Ses
still used in most of the cases.</p>
</div>
</div>
-<div class="sect3">
-<h4 id="_how_jsf_2_changed_the_world">How JSF-2 changed the world</h4>
+<div class="sect4">
+<h5 id="_how_jsf_2_changed_the_world">How JSF-2 Changed the World</h5>
<div class="paragraph">
<p>The MyFaces Orchestra community did a good summary about the various
ways to handle multiple window support in JSF Applications. Those
@@ -339,8 +397,8 @@ links, a typical JSF-2 application conta
used to see in JSF-1, thus we have far more href links to cope with.</p>
</div>
</div>
-<div class="sect3">
-<h4 id="_standard_windowid_handling">Standard windowId Handling</h4>
+<div class="sect4">
+<h5 id="_standard_windowid_handling">Standard windowId Handling</h5>
<div class="paragraph">
<p>With a classical approach we would not be able to simply add a windowId
parameter to such links because if the user would open the link in a new
@@ -358,10 +416,10 @@ not feasible as general solution.</p>
</div>
</div>
</div>
-<div class="sect2">
-<h3 id="_available_modes">Available modes</h3>
<div class="sect3">
-<h4 id="_clientwindow">CLIENTWINDOW</h4>
+<h4 id="_available_modes">Available Modes</h4>
+<div class="sect4">
+<h5 id="_clientwindow">CLIENTWINDOW</h5>
<div class="paragraph">
<p>Each GET request results in an intermediate small html page which checks
if the browser tab fits the requested windowId. When the windowId is
@@ -371,8 +429,8 @@ dsRid/windowId will be added. On the ser
will be extracted from the cookie. For POST request detection, the
windowId will be added as hidden input to all forms.</p>
</div>
-<div class="sect4">
-<h5 id="_advantage">Advantage</h5>
+<div class="sect5">
+<h6 id="_advantage">Advantage</h6>
<div class="ulist">
<ul>
<li>
@@ -381,8 +439,8 @@ windowId will be added as hidden input t
</ul>
</div>
</div>
-<div class="sect4">
-<h5 id="_disadvantage">Disadvantage</h5>
+<div class="sect5">
+<h6 id="_disadvantage">Disadvantage</h6>
<div class="ulist">
<ul>
<li>
@@ -404,10 +462,10 @@ directly.</p>
</ul>
</div>
</div>
-<div class="sect4">
-<h5 id="_change_windowhandler_html">Change windowhandler.html</h5>
+<div class="sect5">
+<h6 id="_change_windowhandler_html">Change windowhandler.html</h6>
<div class="paragraph">
-<p>To customize the look & feel of the windowhandler.html, you can simply
+<p>To customize the look and feel of the windowhandler.html, you can simply
provide a own via:</p>
</div>
<div class="listingblock">
@@ -425,8 +483,8 @@ provide a own via:</p>
</div>
</div>
</div>
-<div class="sect3">
-<h4 id="_lazy">LAZY</h4>
+<div class="sect4">
+<h5 id="_lazy">LAZY</h5>
<div class="paragraph">
<p>Always appends the windowId to all, from JSF generated, URLs. On the
first GET request without a windowId, it will generate a new windowId
@@ -434,11 +492,11 @@ and redirect, with the windowId in the U
current windowId will be stored in the <code>window.name</code> variable on the
client side. For all further requests, a lazy check will be performed to
check if the windowId in the URL is matching with the <code>window.name</code>. If
-it’s not matching, the view will be refreshed with the right windowId in
+it is not matching, the view will be refreshed with the right windowId in
the URL.</p>
</div>
-<div class="sect4">
-<h5 id="_advantage_2">Advantage</h5>
+<div class="sect5">
+<h6 id="_advantage_2">Advantage</h6>
<div class="ulist">
<ul>
<li>
@@ -447,8 +505,8 @@ the URL.</p>
</ul>
</div>
</div>
-<div class="sect4">
-<h5 id="_disadvantage_2">Disadvantage</h5>
+<div class="sect5">
+<h6 id="_disadvantage_2">Disadvantage</h6>
<div class="ulist">
<ul>
<li>
@@ -460,8 +518,8 @@ the windowId matches the <code>window.na
</ul>
</div>
</div>
-<div class="sect4">
-<h5 id="_workflow_example">Workflow example</h5>
+<div class="sect5">
+<h6 id="_workflow_example">Workflow Example</h6>
<div class="paragraph">
<p>First GET request with windowId</p>
</div>
@@ -527,25 +585,25 @@ from <code>window.name</code></p>
</div>
</div>
</div>
-<div class="sect3">
-<h4 id="_none">NONE</h4>
+<div class="sect4">
+<h5 id="_none">NONE</h5>
<div class="paragraph">
<p>Any window or browser tab detection will be disabled for the current
request. Scopes like @WindowScoped, @GroupedConversationScoped or
@ViewAccessScoped will not work. This is also the default mode if the
-current request doesn’t support Javascript or if the user agent is a
+current request doesis not support Javascript or if the user agent is a
bot/crawler.</p>
</div>
</div>
-<div class="sect3">
-<h4 id="_delegated">DELEGATED</h4>
+<div class="sect4">
+<h5 id="_delegated">DELEGATED</h5>
<div class="paragraph">
<p>Delegates the complete window handling to the new JSF 2.2 ClientWindow
(if not disabled).</p>
</div>
</div>
-<div class="sect3">
-<h4 id="_custom">CUSTOM</h4>
+<div class="sect4">
+<h5 id="_custom">CUSTOM</h5>
<div class="paragraph">
<p>Enables to use an complete own
<code>org.apache.deltaspike.jsf.spi.scope.window.ClientWindow</code>
@@ -553,10 +611,10 @@ implementation.</p>
</div>
</div>
</div>
-<div class="sect2">
-<h3 id="_configuration">Configuration</h3>
<div class="sect3">
-<h4 id="_ds_windowid">ds:windowId</h4>
+<h4 id="_configuration">Configuration</h4>
+<div class="sect4">
+<h5 id="_ds_windowid">ds:windowId</h5>
<div class="paragraph">
<p>The component <code>ds:windowId</code>
(<code>xmlns:ds="http://deltaspike.apache.org/jsf"</code>) is required to enable
@@ -566,8 +624,8 @@ mode. The best way, to apply it for all
to all of your templates.</p>
</div>
</div>
-<div class="sect3">
-<h4 id="_ds_disableclientwindow">ds:disableClientWindow</h4>
+<div class="sect4">
+<h5 id="_ds_disableclientwindow">ds:disableClientWindow</h5>
<div class="paragraph">
<p>Similiar to JSF 2.2' <code>disableClientWindow</code> attribute,
<code>ds:disableClientWindow</code> provides the ability to disable the rendering
@@ -582,8 +640,8 @@ of the windowId to all links of all chil
</div>
</div>
</div>
-<div class="sect3">
-<h4 id="_number_of_active_windows">Number of active windows</h4>
+<div class="sect4">
+<h5 id="_number_of_active_windows">Number of Active Windows</h5>
<div class="paragraph">
<p>By default, DeltaSpike allows <code>1024</code> active windows per session. Anyway, this number is reduced inside this JSF module to <code>64</code> for JSF applications. Once that the limit number of active windows is reached, DeltaSpike will drop the oldest active window.</p>
</div>
@@ -608,8 +666,8 @@ of the windowId to all links of all chil
</div>
</div>
</div>
-<div class="sect3">
-<h4 id="_switch_mode">Switch Mode</h4>
+<div class="sect4">
+<h5 id="_switch_mode">Switch Mode</h5>
<div class="paragraph">
<p>To switch the mode, just provide a
<code>org.apache.deltaspike.jsf.api.config.JsfModuleConfig</code> and overwrite
@@ -629,12 +687,12 @@ of the windowId to all links of all chil
</div>
</div>
</div>
-<div class="sect3">
-<h4 id="_provide_a_custom_clientwindow">Provide a custom ClientWindow</h4>
+<div class="sect4">
+<h5 id="_provide_a_custom_clientwindow">Provide a Custom ClientWindow</h5>
<div class="paragraph">
<p>If you would like to provide an custom
<code>org.apache.deltaspike.jsf.spi.scope.window.ClientWindow</code>
-implementation, you can just do it e.g. via CDI alternatives:</p>
+implementation, you can just do it, for example, via CDI alternatives:</p>
</div>
<div class="listingblock">
<div class="content">
@@ -646,7 +704,7 @@ implementation, you can just do it e.g.
</div>
</div>
<div class="paragraph">
-<p>Don’t forget to set the <code>ClientWindowRenderMode</code> to 'CUSTOM' via the
+<p>Do not forget to set the <code>ClientWindowRenderMode</code> to 'CUSTOM' via the
<code>JsfModuleConfig</code>:</p>
</div>
<div class="listingblock">
@@ -664,8 +722,8 @@ implementation, you can just do it e.g.
</div>
</div>
</div>
-<div class="sect2">
-<h3 id="_based_scopes">Based Scopes</h3>
+<div class="sect3">
+<h4 id="_based_scopes">Based Scopes</h4>
<div class="ulist">
<ul>
<li>
@@ -681,17 +739,15 @@ implementation, you can just do it e.g.
</div>
</div>
</div>
-</div>
-<div class="sect1">
-<h2 id="_scopes">Scopes</h2>
-<div class="sectionbody">
<div class="sect2">
-<h3 id="__windowscoped">@WindowScoped</h3>
+<h3 id="_scopes">Scopes</h3>
+<div class="sect3">
+<h4 id="__windowscoped">@WindowScoped</h4>
<div class="paragraph">
<p>The window-scope is like a session per window. That means that the data
is bound to a window/tab and it not shared between windows (like the
session scope does). Usually you need the window-scope instead of the
-session-scope. There aren’t a lot of use-cases which need shared data
+session-scope. There areis not a lot of use-cases which need shared data
between windows.</p>
</div>
<div class="listingblock">
@@ -704,8 +760,8 @@ between windows.</p>
</div>
</div>
</div>
-<div class="sect2">
-<h3 id="__viewaccessscoped">@ViewAccessScoped</h3>
+<div class="sect3">
+<h4 id="__viewaccessscoped">@ViewAccessScoped</h4>
<div class="paragraph">
<p>In case of conversations you have to un-scope beans manually (or they
will be terminated automatically after a timeout). However, sometimes
@@ -713,10 +769,10 @@ you need beans with a lifetime which is
as possible - which are terminated automatically (as soon as possible).
In such an use-case you can use this scope. The simple rule is, as long
as the bean is referenced by a page - the bean will be available for the
-next page (if it’s used again the bean will be forwarded again). It is
-important that it’s based on the view-id of a page (it isn’t based on
-the request) so e.g. Ajax requests don’t trigger a cleanup if the
-request doesn’t access all view-access scoped beans of the page. That’s
+next page (if it is used again the bean will be forwarded again). It is
+important that it is based on the view-id of a page (it isis not based on
+the request) so, for example, Ajax requests do not trigger a cleanup if the
+request doesis not access all view-access scoped beans of the page. That’s
also the reason for the name @<em>View</em>AccessScoped.</p>
</div>
<div class="listingblock">
@@ -728,30 +784,39 @@ also the reason for the name @<em>View</
}</code></pre>
</div>
</div>
-<div class="paragraph">
-<p>Hint: @ViewAccessScoped beans are best used in conjunction with the
+<div class="admonitionblock tip">
+<table>
+<tr>
+<td class="icon">
+<div class="title">Tip</div>
+</td>
+<td class="content">
+@ViewAccessScoped beans are best used in conjunction with the
<code>CLIENTWINDOW</code> window handling, which ensures a clean browser-tab
separation without touching the old windowId. Otherwise a 'open in new
tab' on a page with a @ViewAccessScoped bean might cause the termination
-(and re-initialization) of that bean.</p>
+(and re-initialization) of that bean.
+</td>
+</tr>
+</table>
</div>
</div>
-<div class="sect2">
-<h3 id="__groupedconversationscoped_since_0_6">@GroupedConversationScoped (since 0.6)</h3>
+<div class="sect3">
+<h4 id="__groupedconversationscoped_from_deltaspike_0_6">@GroupedConversationScoped (From DeltaSpike 0.6)</h4>
<div class="paragraph">
<p>See (Grouped-)Conversations</p>
</div>
</div>
-<div class="sect2">
-<h3 id="__viewscoped">@ViewScoped</h3>
+<div class="sect3">
+<h4 id="__viewscoped">@ViewScoped</h4>
<div class="paragraph">
<p>DeltaSpike provides an CDI context for the JSF 2.0/2.1
@javax.faces.bean.ViewScoped. You can simply annotate your bean with
@javax.faces.bean.ViewScoped and @Named.</p>
</div>
</div>
-<div class="sect2">
-<h3 id="_jsf_2_0_scopes">JSF 2.0 Scopes</h3>
+<div class="sect3">
+<h4 id="_jsf_2_0_scopes">JSF 2.0 Scopes</h4>
<div class="paragraph">
<p>JSF 2.0 introduced new annotations as well as a new scope - the View
Scope. CODI allows to use all the CDI mechanisms in beans annotated
@@ -778,16 +843,14 @@ with:</p>
is mapped to @Named from CDI.</p>
</div>
<div class="paragraph">
-<p>All these annotations are mapped automatically. So you won’t face
+<p>All these annotations are mapped automatically. So you will not face
issues, if you import a JSF 2 annotation instead of the corresponding
CDI annotation.</p>
</div>
</div>
</div>
-</div>
-<div class="sect1">
-<h2 id="_integration_with_deltaspike_type_safe_messages">Integration with DeltaSpike type-safe messages</h2>
-<div class="sectionbody">
+<div class="sect2">
+<h3 id="_integration_with_deltaspike_type_safe_messages">Integration with DeltaSpike Type-safe Messages</h3>
<div class="paragraph">
<p>You can use <a href="core.html#_messages_i18n">DeltaSpike type-safe messages</a>
with JSF to provide i18n messages and test to an JSF appplicaton.</p>
@@ -800,14 +863,12 @@ all JSF default messages that could be o
</div>
<div class="paragraph">
<p>DeltaSpike can also reuse the same file to provide type-safe messages so
-you don’t have to use the naming convention nor <code>@MessageContextConfig</code>.
+you do not have to use the naming convention nor <code>@MessageContextConfig</code>.
If there is a config for supported locales it will be checked as well
and fallback to the configured default locale.</p>
</div>
-<div class="paragraph">
-<p>Example:</p>
-</div>
<div class="listingblock">
+<div class="title">Example</div>
<div class="content">
<pre class="CodeRay highlight"><code data-lang="java"><span class="annotation">@MessageBundle</span>
<span class="directive">public</span> <span class="type">interface</span> <span class="class">SimpleMessage</span>
@@ -847,10 +908,8 @@ welcome_to_deltaspike=Welcome to DeltaSp
javax.faces.component.UIInput.REQUIRED = {<span class="integer">0</span>}: Please enter a value</code></pre>
</div>
</div>
-<div class="paragraph">
-<p>On faces-config.xml file:</p>
-</div>
<div class="listingblock">
+<div class="title">Faces-config.xml File</div>
<div class="content">
<pre class="CodeRay highlight"><code data-lang="xml"><span class="tag"><faces-config></span>
<span class="tag"><application></span>
@@ -860,12 +919,10 @@ javax.faces.component.UIInput.REQUIRED =
</div>
</div>
</div>
-</div>
-<div class="sect1">
-<h2 id="_type_safe_view_configs">Type-safe View-Configs</h2>
-<div class="sectionbody">
<div class="sect2">
-<h3 id="_intro_2">Intro</h3>
+<h3 id="_type_safe_view_configs">Type-safe View-Configs</h3>
+<div class="sect3">
+<h4 id="_intro">Intro</h4>
<div class="paragraph">
<p>Type-safe view-configs are static configs which can be used in
combination with every view-technology which is based on Java. Currently
@@ -877,21 +934,21 @@ located here.)</p>
<div class="paragraph">
<p>Thanks to features like multiple (meta-data-)inheritance via interfaces,
it provides a powerful approach to bind meta-data to one or multiple
-views. In case of the JSF integration it’s possible to provide e.g.
+views. In case of the JSF integration it is possible to provide, for example,
type-safe meta-data for security, navigation, callbacks for
view-controllers. Beyond configuring view (/pages) via this concept,
-it’s also possible to use the (view-)config classes for type-safe
-navigation. Since it’s std. Java, you can benefit from any Java-IDE and
-you don’t need special IDE-Addons to use it efficiently.</p>
+it is also possible to use the (view-)config classes for type-safe
+navigation. Since it is standard Java, you can benefit from any Java-IDE and
+you do not need special IDE-Addons to use it efficiently.</p>
</div>
<div class="paragraph">
<p>Even the concepts provided by modules (of DeltaSpike itself) are based
-on the basic API provided by the Core. So it’s possible to introduce
+on the basic API provided by the Core. So it is possible to introduce
custom concepts the same way DeltaSpike itself does.</p>
</div>
</div>
-<div class="sect2">
-<h3 id="_motivation">Motivation</h3>
+<div class="sect3">
+<h4 id="_motivation">Motivation</h4>
<div class="paragraph">
<p>Instead of learning the concepts and rules of view-configs provided by
DeltaSpike, it might be easier for simple demos to just type some
@@ -899,25 +956,19 @@ simple(r) strings. So why should you use
more work <strong>initially</strong>?</p>
</div>
<div class="paragraph">
-<p><strong>The short answer is:</strong></p>
+<p><strong>The short answer is:</strong> It gives a good return in case of real applications (especially beyond simple demos).</p>
</div>
<div class="paragraph">
-<p>It gives a good return in case of real applications (esp. beyond simple demos).</p>
-</div>
-<div class="paragraph">
-<p><strong>The long answer is:</strong></p>
-</div>
-<div class="paragraph">
-<p>You can benefit from it from the first second:</p>
+<p><strong>The long answer is:</strong> You can benefit from it from the first second:</p>
</div>
<div class="ulist">
<ul>
<li>
-<p>It’s type-safe →</p>
+<p>It is type-safe</p>
<div class="ulist">
<ul>
<li>
-<p>the Java compiler ensures that you don’t have typos at the final usages (and the rest can be checked during bootstrapping of the application)</p>
+<p>the Java compiler ensures that you do not have typos at the final usages (and the rest can be checked during bootstrapping of the application)</p>
</li>
<li>
<p>you can benefit from the auto.complete features of any modern Java IDE.</p>
@@ -926,10 +977,10 @@ more work <strong>initially</strong>?</p
</div>
</li>
<li>
-<p>If you change the name of a file/folder, you need only one (easy) code-change in a single place and your (std. Java-) IDE will do the rest for you (= update all usages) without a special plug-in</p>
+<p>If you change the name of a file/folder, you need only one (easy) code-change in a single place and your (standard Java-) IDE will do the rest for you (= update all usages) without a special plug-in</p>
</li>
<li>
-<p>It’s possible to restrict the navigation target → you can ensure that the navigation target is still the intended one (e.g. after a refactoring)</p>
+<p>It is possible to restrict the navigation target → you can ensure that the navigation target is still the intended one (e.g. after a refactoring)</p>
</li>
<li>
<p>You can configure meta-data in a central place (which can get inherited via <strong>multiple</strong> inheritance based on Java interfaces)</p>
@@ -941,10 +992,10 @@ more work <strong>initially</strong>?</p
<p>Allows easy(er) refactorings and maintenance</p>
</li>
<li>
-<p>You can use your IDE more efficiently esp. in large projects (there are some users who initially switched to it, because their tools for displaying the config they had before open large config files very slowly…​)</p>
+<p>You can use your IDE more efficiently especially in large projects (there are some users who initially switched to it, because their tools for displaying the config they had before open large config files very slowly…​)</p>
</li>
<li>
-<p>Modern Java IDEs show inheritance of interfaces and classes in a nice way. Since the view-config is based on std. classes and interfaces, you can benefit from it easily.</p>
+<p>Modern Java IDEs show inheritance of interfaces and classes in a nice way. Since the view-config is based on standard classes and interfaces, you can benefit from it easily.</p>
</li>
</ul>
</div>
@@ -954,13 +1005,13 @@ more work <strong>initially</strong>?</p
<div class="ulist">
<ul>
<li>
-<p>It’s possible to check if the configured folders and files really exist during/after the bootstrapping phase of the application (currently it isn’t implemented, but it’s possible to do it).</p>
+<p>It is possible to check if the configured folders and files really exist during/after the bootstrapping phase of the application (currently it is not implemented, but it is possible to do it).</p>
</li>
<li>
-<p>It’s also easy(er) for tools (IDE plugins,…​) to validate it</p>
+<p>It is also easy(er) for tools (IDE plugins,…​) to validate it</p>
</li>
<li>
-<p>It’s possible to validate the config (if the corresponding path (view or folder) really exists (after v0.5 it’s done out-of-the-box)</p>
+<p>It is possible to validate the config (if the corresponding path (view or folder) really exists (after v0.5 it is done out-of-the-box)</p>
</li>
</ul>
</div>
@@ -968,21 +1019,21 @@ more work <strong>initially</strong>?</p
<p>If you are still not convinced, you just have to try it. You will see how your daily workflow benefits from it pretty soon.</p>
</div>
</div>
-<div class="sect2">
-<h3 id="_bean_discovery_mode_annotated">Bean-discovery-mode annotated</h3>
+<div class="sect3">
+<h4 id="_bean_discovery_mode_annotated">Bean-discovery-mode Annotated</h4>
<div class="paragraph">
<p>CDI 1.1 introduced a concept called bean-discovery-mode. If you would
-like to use the mode <code>annotated</code>, please have a look at the hint at
+like to use the mode <code>annotated</code>, please have a look at the tip at
@ViewConfigRoot</p>
</div>
</div>
-<div class="sect2">
-<h3 id="_basic_api_usages">Basic API usages</h3>
+<div class="sect3">
+<h4 id="_basic_api_usages">Basic API Usages</h4>
<div class="paragraph">
<p>While reading this section keep the following simple rules in mind:
Meta-data gets inherited along the path of Java inheritance
File-/Folder- paths are build based on nesting classes and interfaces
-Usually users don’t need to be aware of all descriptors, SPIs,…​ which
+Usually users do not need to be aware of all descriptors, SPIs,…​ which
are described by this documentation.</p>
</div>
<div class="paragraph">
@@ -1002,10 +1053,10 @@ for a view (/page).</p>
</div>
</div>
<div class="paragraph">
-<p>Since it’s a class (and not an interface) it’s autom. recognized as
+<p>Since it is a class (and not an interface), it is automatically recognized as
config for a page (and not a folder) and the default settings get
applied during bootstrapping. In case of JSF you can use it for
-navigation e.g. via action-methods.</p>
+navigation, for example, via action-methods.</p>
</div>
<div class="listingblock">
<div class="content">
@@ -1032,7 +1083,7 @@ leads to the same as the first one.</p>
</div>
</div>
<div class="paragraph">
-<p>But it’s also possible to reflect the folder structure via nesting of
+<p>But it is also possible to reflect the folder structure via nesting of
interfaces and classes. An example for it is:</p>
</div>
<div class="listingblock">
@@ -1053,19 +1104,19 @@ interfaces and classes. An example for i
/pages/index.xhtml /pages/adminArea/index.xhtml</p>
</div>
<div class="paragraph">
-<p>Like the optional <code>@View</code> for pages represented by the classes, it’s
+<p>Like the optional <code>@View</code> for pages represented by the classes, it is
possible to use the optional <code>@Folder</code> annotation for directories
represented by the (nested) interfaces.</p>
</div>
<div class="paragraph">
-<p>Furthermore, it’s possible to inherit meta-data along with the normal
+<p>Furthermore, it is possible to inherit meta-data along with the normal
inheritance.</p>
</div>
<div class="paragraph">
<p>In the following example <code>Pages.Admin.Index</code>, <code>Pages.Admin.Home</code> and
<code>Pages.Admin.Statistics.Home</code> inherit the meta-data from <code>Pages.Admin</code>
because they implement the interface whereas
-<code>Pages.Admin.Statistics.Index</code> doesn’t. However, <code>Pages.Admin.Home</code>
+<code>Pages.Admin.Statistics.Index</code> doesis not. However, <code>Pages.Admin.Home</code>
overrides <code>View#navigation</code>. During the bootstrapping process the
meta-data gets merged and at runtime you only see the final result
(which is cached).</p>
@@ -1098,7 +1149,7 @@ meta-data gets merged and at runtime you
</div>
<div class="paragraph">
<p>In this case <code>Pages.Admin.Statistics</code> is just an interface to reflect
-the folder structure. For sure it’s also possible that it extends an
+the folder structure. For sure it is also possible that it extends an
existing view-config interface and other folders and/or pages inherit
its meta-data (like <code>Pages.Admin</code>).</p>
</div>
@@ -1116,18 +1167,18 @@ navigation target of this method is with
}</code></pre>
</div>
</div>
-<div class="sect3">
-<h4 id="_file_view_and_folder_folder_paths">File (@View) and Folder (@Folder) paths</h4>
+<div class="sect4">
+<h5 id="_file_view_and_folder_folder_paths">File (@View) and Folder (@Folder) Paths</h5>
<div class="paragraph">
<p><code>@View</code> as well as <code>@Folder</code> are optional annotations. <code>@Folder</code> is only
needed for using a different folder-name or for marking folder configs
-if they don’t inherit from
+if they do not inherit from
<code>org.apache.deltaspike.core.api.config.view.ViewConfig</code> <strong>nor</strong> have a
view-config for a page nested into them (like Pages.Wizard1.Step1). If
-it isn’t used explicitly, it gets added automatically (so you can query
-the meta-data at runtime even in cases you haven’t placed the
+it isis not used explicitly, it gets added automatically (so you can query
+the meta-data at runtime even in cases you haveis not placed the
annotations explicitly). <code>@View</code> allows to customize a bit more and it
-also gets added automatically if it isn’t used explicitly. Whereas
+also gets added automatically if it isis not used explicitly. Whereas
<code>@Folder</code> gets added to all nested interfaces (above a view-config class
- like Pages and Pages.Wizard1), <code>@View</code> only gets added to classes
which in-/directly inherit from
@@ -1182,8 +1233,8 @@ Pages.Wizard1.Step1).</p>
<code>@View#name</code> and <code>@View#extension</code> (or you register custom
`NameBuilder`s inline or globally).</p>
</div>
-<div class="sect4">
-<h5 id="__folder_name">@Folder#name</h5>
+<div class="sect5">
+<h6 id="__folder_name">@Folder#name</h6>
<div class="paragraph">
<p>The rules are pretty simple. You will get what you write. There are only
two additional features:</p>
@@ -1191,7 +1242,7 @@ two additional features:</p>
<div class="ulist">
<ul>
<li>
-<p>You don’t have to care about duplicated '/' (e.g. /folder1//folder2/step1.xhtml would get corrected auto. to /folder1/folder2/step1.xhtml)</p>
+<p>You do not have to care about duplicated '/' (e.g. /folder1//folder2/step1.xhtml would get corrected auto. to /folder1/folder2/step1.xhtml)</p>
</li>
<li>
<p>With "." at the beginning (e.g. "./") you can keep the path before.</p>
@@ -1239,10 +1290,10 @@ two additional features:</p>
</ul>
</div>
</div>
-<div class="sect4">
-<h5 id="__view">@View</h5>
+<div class="sect5">
+<h6 id="__view">@View</h6>
<div class="paragraph">
-<p>The same naming rules apply to <code>@View#basePath</code>. However, it’s only
+<p>The same naming rules apply to <code>@View#basePath</code>. However, it is only
valid to be used at view-config nodes which represent pages (→ classes
and not interfaces). On interfaces always use <code>@Folder</code>
(<code>@View#basePath</code> will get ignored there).</p>
@@ -1334,24 +1385,24 @@ inherited along the inheritance path.</p
</div>
</div>
</div>
-<div class="sect3">
-<h4 id="_navigation_parameters">Navigation Parameters</h4>
+<div class="sect4">
+<h5 id="_navigation_parameters">Navigation Parameters</h5>
<div class="paragraph">
<p>Since the view-config is static, an approach to add parameters is
needed. The following part shows different possibilities to add
parameters which end up in the final URL after '?' (in case of the
-integration with JSF). It isn’t needed to add all (types of) parameters
-that way. Some get added autom. based on special meta-data (e.g.
+integration with JSF). It isis not needed to add all (types of) parameters
+that way. Some get added automatically based on special meta-data (e.g.
<code>@View#navigation</code> and <code>@View#viewParams</code>). Instead of adding
-<code>"faces-redirect=true"</code> manually it’s done for you as soon as you are
+<code>"faces-redirect=true"</code> manually it is done for you as soon as you are
using <code>@View(navigation = REDIRECT)</code>. The same goes for
<code>"includeViewParams=true"</code> and <code>@View(viewParams = INCLUDE)</code>.</p>
</div>
</div>
-<div class="sect3">
-<h4 id="_static_configuration_via_navigationparameter">Static Configuration via @NavigationParameter</h4>
+<div class="sect4">
+<h5 id="_static_configuration_via_navigationparameter">Static Configuration via @NavigationParameter</h5>
<div class="paragraph">
-<p>In some cases it’s needed to add an information in any case. So you can
+<p>In some cases, it is needed to add an information in any case. So you can
annotate the view-config class with <code>@NavigationParameter</code>. Supported
values are static strings or EL-expressions.</p>
</div>
@@ -1371,7 +1422,7 @@ values are static strings or EL-expressi
</div>
</div>
<div class="paragraph">
-<p>Instead of using parameters in any case, it’s also possible to configure
+<p>Instead of using parameters in any case, it is also possible to configure
them statically for particular methods:</p>
</div>
<div class="listingblock">
@@ -1396,10 +1447,10 @@ them statically for particular methods:<
}</code></pre>
</div>
</div>
-<div class="sect4">
-<h5 id="_dynamic_configuration_via_navigationparametercontext">Dynamic Configuration via NavigationParameterContext</h5>
+<div class="sect5">
+<h6 id="_dynamic_configuration_via_navigationparametercontext">Dynamic Configuration via NavigationParameterContext</h6>
<div class="paragraph">
-<p>Instead of using parameters in a static fashion (as shown above), it’s
+<p>Instead of using parameters in a static fashion (as shown above), it is
also possible to add them dynamically (e.g. in case of special
conditions).</p>
</div>
@@ -1429,23 +1480,23 @@ conditions).</p>
</div>
</div>
</div>
-<div class="sect3">
-<h4 id="_security_integration_via_secured">Security Integration via @Secured</h4>
+<div class="sect4">
+<h5 id="_security_integration_via_secured">Security Integration via @Secured</h5>
<div class="paragraph">
<p>This annotation is a custom view-meta-data provided by the
-Security-module which allows to integrate 3rd party frameworks (or
+Security-module which allows to integrate third-party frameworks (or
custom approaches) to secure pages as well as whole folders. You can
annotate specific parts or a marker-interface.
<code>CustomAccessDecisionVoter</code> used in the following example can be any
implementation of
<code>org.apache.deltaspike.security.api.authorization.AccessDecisionVoter</code>
-and needs to be a std. CDI bean which means you can use
+and needs to be a standard CDI bean which means you can use
dependecy-injection to trigger any kind of security check. All parts
which inherit from <code>SecuredPages</code> (<code>Pages.Admin</code>, <code>Pages.Admin.Index</code>
and <code>Pages.Admin.Home</code>) are protected by <code>CustomAccessDecisionVoter</code>.</p>
</div>
<div class="paragraph">
-<p>(It’s easy to check this hierarchy in a modern Java-IDE. Only for
+<p>(It is easy to check this hierarchy in a modern Java-IDE. Only for
displaying the final meta-data for every node in the IDE a special
plug-in would be needed.)</p>
</div>
@@ -1470,7 +1521,7 @@ plug-in would be needed.)</p>
</div>
</div>
<div class="paragraph">
-<p>For sure it’s also possible to use it without a special interface. In
+<p>For sure it is also possible to use it without a special interface. In
this case you would need:</p>
</div>
<div class="listingblock">
@@ -1514,8 +1565,8 @@ this case you would need:</p>
</div>
</div>
</div>
-<div class="sect3">
-<h4 id="_view_controller_callbacks_via_viewcontrollerref">View-Controller Callbacks via @ViewControllerRef</h4>
+<div class="sect4">
+<h5 id="_view_controller_callbacks_via_viewcontrollerref">View-Controller Callbacks via @ViewControllerRef</h5>
<div class="paragraph">
<p>This annotation is a custom view-meta-data provided by the JSF-module
which allows to configure beans which should act as view-controllers.
@@ -1543,14 +1594,12 @@ example shows the usage of <code>@PreRen
</div>
</div>
<div class="paragraph">
-<p>Since v0.7 it’s possible to observe exceptions thrown by a
+<p>From DeltaSpike 0.7, it is possible to observe exceptions thrown by a
@PreRenderView callback and use your configured Default-Error-View to
display the exception.</p>
</div>
-<div class="paragraph">
-<p>Example:</p>
-</div>
<div class="listingblock">
+<div class="title">Example</div>
<div class="content">
<pre class="CodeRay highlight"><code data-lang="java"><span class="annotation">@ExceptionHandler</span>
<span class="directive">public</span> <span class="type">class</span> <span class="class">ErrorViewAwareExceptionHandler</span> {
@@ -1570,18 +1619,16 @@ display the exception.</p>
</div>
</div>
</div>
-<div class="sect3">
-<h4 id="_referencing_views_via_viewref">Referencing Views via @ViewRef</h4>
+<div class="sect4">
+<h5 id="_referencing_views_via_viewref">Referencing Views via @ViewRef</h5>
<div class="paragraph">
<p>With <code>@ViewControllerRef#value</code> you can annotate a view-config class to
bind (/reference) a controller to it. <code>@ViewRef#config</code> allows the same
in the other direction. Use an existing view-config to reference one or
many view/s.</p>
</div>
-<div class="paragraph">
-<p>That means e.g.</p>
-</div>
<div class="listingblock">
+<div class="title">Example</div>
<div class="content">
<pre class="CodeRay highlight"><code data-lang="java"><span class="directive">public</span> <span class="type">interface</span> <span class="class">Pages</span> <span class="directive">extends</span> ViewConfig
{
@@ -1603,13 +1650,13 @@ many view/s.</p>
</div>
</div>
<div class="paragraph">
-<p>leads to the invocation of the pre-render-view logic before
-/pages/page1.xhtml gets rendered (and it won’t be called for other
+<p>The above example leads to the invocation of the pre-render-view logic before
+/pages/page1.xhtml gets rendered (and it will not be called for other
pages).</p>
</div>
</div>
-<div class="sect3">
-<h4 id="_using_the_optional_viewnavigationhandler">Using the (optional) ViewNavigationHandler</h4>
+<div class="sect4">
+<h5 id="_using_the_optional_viewnavigationhandler">Using the (Optional) ViewNavigationHandler</h5>
<div class="paragraph">
<p>With JSF you typically navigate with the action-method bound to a
command-component. However, also JSF supports manual navigation via
@@ -1618,10 +1665,8 @@ command-component. However, also JSF sup
type-safe view-configs which is easier to use (and can be used also for
other (supported) view technology).</p>
</div>
-<div class="paragraph">
-<p>A simple example is:</p>
-</div>
<div class="listingblock">
+<div class="title">Simple Example</div>
<div class="content">
<pre class="CodeRay highlight"><code data-lang="java"><span class="directive">public</span> <span class="type">interface</span> <span class="class">Pages</span> {
<span class="type">class</span> <span class="class">Index</span> <span class="directive">implements</span> ViewConfig { }
@@ -1647,12 +1692,12 @@ process, since <code>ViewNavigationHandl
navigation-handler (of JSF).</p>
</div>
</div>
-<div class="sect3">
-<h4 id="_configuring_a_default_error_view">Configuring a Default Error-View</h4>
+<div class="sect4">
+<h5 id="_configuring_a_default_error_view">Configuring a Default Error-View</h5>
<div class="paragraph">
-<p>It’s possible to mark one view-config class as default error-view. That
+<p>It is possible to mark one view-config class as default error-view. That
means in case of errors it will be used as navigation target
-automatically. Furthermore, it’s also possible to use it in your code
+automatically. Furthermore, it is also possible to use it in your code
instead of hardcoding your error-view across the whole application.</p>
</div>
<div class="paragraph">
@@ -1668,7 +1713,7 @@ instead of hardcoding your error-view ac
</div>
</div>
<div class="paragraph">
-<p>it’s possible to navigate with <code>DefaultErrorView.class</code> instead of
+<p>it is possible to navigate with <code>DefaultErrorView.class</code> instead of
hardcoding it to <code>Pages.CustomErrorPage.class</code>.</p>
</div>
<div class="listingblock">
@@ -1712,17 +1757,17 @@ combination with <code>ViewNavigationHan
<div class="paragraph">
<p>However, in case of JSF you have to ensure that you are at a valid point
in the JSF request-lifecycle for a navigation, because invocation gets
-transformed to a std. (implicit) JSF navigation.</p>
+transformed to a standard (implicit) JSF navigation.</p>
</div>
</div>
-<div class="sect3">
-<h4 id="_using_matches">Using @Matches</h4>
+<div class="sect4">
+<h5 id="_using_matches">Using @Matches</h5>
<div class="paragraph">
<p>This annotation is currently not integrated. [TODO]</p>
</div>
</div>
-<div class="sect3">
-<h4 id="_using_viewconfigresolver">Using ViewConfigResolver</h4>
+<div class="sect4">
+<h5 id="_using_viewconfigresolver">Using ViewConfigResolver</h5>
<div class="paragraph">
<p>If you would like to query view-meta-data yourself (for whatever
reason), you can do that with <code>ViewConfigResolver</code>.</p>
@@ -1769,25 +1814,25 @@ reason), you can do that with <code>View
</div>
</div>
<div class="paragraph">
-<p>For folders it’s optional to implement the <code>ViewConfig</code> interface,
+<p>For folders it is optional to implement the <code>ViewConfig</code> interface,
therefore you see 2 different types of API. <code>#getConfigDescriptor</code> as
the general API and <code>#getViewConfigDescriptor</code> which is specific for
pages (which have to implement the <code>ViewConfig</code> interface).</p>
</div>
<div class="paragraph">
<p><strong>Besides</strong> translating a config class to the final path of the folder or
-page, it’s possible to get the implicitly as well as explicitly
+page, it is possible to get the implicitly as well as explicitly
configured (view-)meta-data and get and/or execute configured callbacks.</p>
</div>
</div>
</div>
-<div class="sect2">
-<h3 id="_advanced_api_usages">Advanced API usages</h3>
<div class="sect3">
-<h4 id="_creating_custom_meta_data_via_viewmetadata">Creating Custom Meta-Data via @ViewMetaData</h4>
+<h4 id="_advanced_api_usages">Advanced API Usages</h4>
+<div class="sect4">
+<h5 id="_creating_custom_meta_data_via_viewmetadata">Creating Custom Meta-Data via @ViewMetaData</h5>
<div class="paragraph">
<p>This meta-annotation allows to create custom view-meta-data which can be
-used for view-configs. Per default meta-data of a lower level overrides
+used for view-configs. By default meta-data of a lower level overrides
meta-data on a higher level which has the same type. That can be
customized via annotating the final annotation as a whole via
<code>@Aggregated(true)</code>.</p>
@@ -1814,16 +1859,14 @@ ViewConfigDescriptor viewConfigDescripto
</div>
</div>
</div>
-<div class="sect3">
-<h4 id="_creating_custom_meta_data_via_stereotype">Creating Custom Meta-Data via @Stereotype</h4>
+<div class="sect4">
+<h5 id="_creating_custom_meta_data_via_stereotype">Creating Custom Meta-Data via @Stereotype</h5>
<div class="paragraph">
<p>Like with CDI itself you can encapsulate multiple view meta-data
annotation in one annotation.</p>
</div>
-<div class="paragraph">
-<p>e.g.:</p>
-</div>
<div class="listingblock">
+<div class="title">Example</div>
<div class="content">
<pre class="CodeRay highlight"><code data-lang="java"><span class="annotation">@Target</span>({TYPE})
<span class="annotation">@Retention</span>(RUNTIME)
@@ -1838,19 +1881,19 @@ annotation in one annotation.</p>
<p>Instead of using the same combination of annotations in multiple places,
you can use the stereotype annotation. If you query the meta-data at
runtime (see <code>ViewConfigDescriptor#getMetaData</code>), you can access
-<code>@Secured</code> as well as <code>@View</code> (in the example above). however, you won’t
+<code>@Secured</code> as well as <code>@View</code> (in the example above). however, you will not
see <code>@MySecuredView</code> itself at runtime, because stereotype annotations
-are per default transparent.</p>
+are by default transparent.</p>
</div>
<div class="paragraph">
-<p>Since v1.0.1+ it’s possible to access such stereotype annotations as
+<p>From DeltaSpike 1.0.1, it is possible to access such stereotype annotations as
well, once you annotate them with <code>@ViewMetaData</code>.</p>
</div>
</div>
-<div class="sect3">
-<h4 id="_creating_custom_callbacks_via_viewmetadata">Creating Custom Callbacks via @ViewMetaData</h4>
+<div class="sect4">
+<h5 id="_creating_custom_callbacks_via_viewmetadata">Creating Custom Callbacks via @ViewMetaData</h5>
<div class="paragraph">
-<p>Via a custom ConfigPreProcessor it’s possible to register custom
+<p>Via a custom ConfigPreProcessor it is possible to register custom
callbacks dynamically. The following listing shows a view-config which
adds a simple callback including the corresponding <code>ConfigPreProcessor</code>
and <code>ExecutableCallbackDescriptor</code>.</p>
@@ -1905,36 +1948,36 @@ ViewConfigDescriptor viewConfigDescripto
</div>
</div>
<div class="paragraph">
-<p>It’s also possible do register different callback-types per
+<p>It is also possible do register different callback-types per
view-meta-data. An example can be found at <code>ViewControllerRef</code> which
registers different callback-types for <code>InitView</code>, <code>PreViewAction</code>,
-<code>PreRenderView</code> and <code>PostRenderView</code>. In this case it’s needed to use
+<code>PreRenderView</code> and <code>PostRenderView</code>. In this case it is needed to use
the type of the callback (= class of the annotation) as additional
parameter for <code>#getExecutableCallbackDescriptor</code>.</p>
</div>
</div>
-<div class="sect3">
-<h4 id="_creating_custom_inline_meta_data_via_inlineviewmetadata">Creating Custom inline Meta-Data via @InlineViewMetaData</h4>
+<div class="sect4">
+<h5 id="_creating_custom_inline_meta_data_via_inlineviewmetadata">Creating Custom inline Meta-Data via @InlineViewMetaData</h5>
<div class="paragraph">
<p>This annotation can be used for view-meta-data which can be placed on
-other classes than view-config-classes. It’s used e.g. for <code>@ViewRef</code>.
-Via a <code>TargetViewConfigProvider</code> it’s possible to point to the
+other classes than view-config-classes. It is used, for example, for <code>@ViewRef</code>.
+Via a <code>TargetViewConfigProvider</code> it is possible to point to the
view-config the meta-data should get applied to and via
-<code>InlineMetaDataTransformer</code> it’s possible to convert it to a different
+<code>InlineMetaDataTransformer</code> it is possible to convert it to a different
meta-data-representation (which allows that at runtime you only have to
support one side since the inline-meta-data was converted to the same
meta-data representation which is used for the normal view-meta-data).</p>
</div>
</div>
</div>
-<div class="sect2">
-<h3 id="_path_validation">Path-Validation</h3>
+<div class="sect3">
+<h4 id="_path_validation">Path-Validation</h4>
<div class="paragraph">
<p>DeltaSpike (after v0.5) validates your configs out-of-the-box. The
application will fail to start, if there is an invalid config (e.g. a
view-config without a corresponding view). Right now the validation is
restricted to folders and view-ids with .xhtml or .jsp as suffix. Other
-view-ids (e.g. *.faces) don’t get checked. In such cases a custom
+view-ids (e.g. *.faces) do not get checked. In such cases a custom
validator can be used (e.g. based on <code>ViewConfigPathValidator</code>).</p>
</div>
<div class="paragraph">
@@ -1943,67 +1986,67 @@ which restricts
<code>org.apache.deltaspike.jsf.impl.config.view.ViewConfigPathValidator</code>.</p>
</div>
</div>
-<div class="sect2">
-<h3 id="_view_config_spi">View-Config SPI</h3>
<div class="sect3">
-<h4 id="_configdescriptorvalidator">ConfigDescriptorValidator</h4>
+<h4 id="_view_config_spi">View-Config SPI</h4>
+<div class="sect4">
+<h5 id="_configdescriptorvalidator">ConfigDescriptorValidator</h5>
<div class="paragraph">
<p>Allows to validate the final view-config descriptors before they get
-deployed. Since the config-descriptor contains e.g. the final path, it’s
+deployed. Since the config-descriptor contains, for example, the final path, it is
also possible to validate if the corresponding file exists. Use
<code>@ViewConfigRoot</code> to configure 1-n validators.</p>
</div>
</div>
-<div class="sect3">
-<h4 id="_confignodeconverter">ConfigNodeConverter</h4>
+<div class="sect4">
+<h5 id="_confignodeconverter">ConfigNodeConverter</h5>
<div class="paragraph">
<p>Allows to provide custom strategies to process the nodes of the built
config-tree. Use <code>@ViewConfigRoot</code> to configure a custom converter.</p>
</div>
</div>
-<div class="sect3">
-<h4 id="_configpreprocessor">ConfigPreProcessor</h4>
+<div class="sect4">
+<h5 id="_configpreprocessor">ConfigPreProcessor</h5>
<div class="paragraph">
<p>Allows to change the found meta-data (e.g. replace default values,
callbacks,…​) or the <code>ViewConfigNode</code> itself.</p>
</div>
</div>
-<div class="sect3">
-<h4 id="_inlinemetadatatransformer">InlineMetaDataTransformer</h4>
+<div class="sect4">
+<h5 id="_inlinemetadatatransformer">InlineMetaDataTransformer</h5>
<div class="paragraph">
<p>Allows to transform an annotation annotated with <code>@InlineViewMetaData</code>
to an annotation annotated with <code>@ViewMetaData</code>. This transformer is
optional and only needed if it should result in the same at runtime, but
the inline-meta-data needs a different syntax via a different annotation
-(compared to the view-config meta-data). See e.g. <code>@ViewRef</code> vs.
+(compared to the view-config meta-data). See for example <code>@ViewRef</code> vs.
<code>@ViewControllerRef</code>.</p>
</div>
</div>
-<div class="sect3">
-<h4 id="_targetviewconfigprovider">TargetViewConfigProvider</h4>
+<div class="sect4">
+<h5 id="_targetviewconfigprovider">TargetViewConfigProvider</h5>
<div class="paragraph">
-<p>Allows to provide a custom reference to <code>ViewConfig</code> classes (see e.g.
+<p>Allows to provide a custom reference to <code>ViewConfig</code> classes (see for example
<code>@InlineViewMetaData</code> and <code>@ViewRef</code>)</p>
</div>
</div>
-<div class="sect3">
-<h4 id="_viewconfiginheritancestrategy">ViewConfigInheritanceStrategy</h4>
+<div class="sect4">
+<h5 id="_viewconfiginheritancestrategy">ViewConfigInheritanceStrategy</h5>
<div class="paragraph">
-<p>Allows to customize the inheritance-strategy for meta-data. E.g.
-inheritance via std. java inheritance vs. inheritance via nested
+<p>Allows to customize the inheritance-strategy for meta-data. For example,
+inheritance via standard java inheritance vs. inheritance via nested
interfaces. Use <code>@ViewConfigRoot</code> to configure a custom
inheritance-strategy.</p>
</div>
</div>
-<div class="sect3">
-<h4 id="_viewconfignode">ViewConfigNode</h4>
+<div class="sect4">
+<h5 id="_viewconfignode">ViewConfigNode</h5>
<div class="paragraph">
<p>Node-type used for building the meta-data-tree during the bootstrapping
process.</p>
</div>
</div>
-<div class="sect3">
-<h4 id="__viewconfigroot">@ViewConfigRoot</h4>
+<div class="sect4">
+<h5 id="__viewconfigroot">@ViewConfigRoot</h5>
<div class="paragraph">
<p>Optional annotation which allows to provide custom implementations. Only
annotate one <code>ViewConfig</code> class which represents the root node.</p>
@@ -2011,7 +2054,7 @@ annotate one <code>ViewConfig</code> cla
<div class="paragraph">
<p>If you are using CDI 1.1+ with bean-discovery-mode <code>annotated</code>, you can
use <code>@ViewConfigRoot</code> in combination with <code>@ApplicationScoped</code> as marker
-annotations. Since DeltaSpike 1.0.1 this combination allows to add all
+annotations. From DeltaSpike 1.0.1, this combination allows to add all
nested interfaces and classes and therefore no additional annotations
(required by bean-discovery-mode <code>annotated</code>) are needed. Minimal
example:</p>
@@ -2028,12 +2071,12 @@ example:</p>
</div>
</div>
</div>
-<div class="sect2">
-<h3 id="_activation_of_custom_naming_conventions">Activation of custom naming conventions</h3>
+<div class="sect3">
+<h4 id="_activation_of_custom_naming_conventions">Activation of Custom Naming Conventions</h4>
<div class="paragraph">
<p>DeltaSpike allows to customize the default naming convention via
<code>View.DefaultBasePathBuilder</code> and/or <code>View.DefaultFileNameBuilder</code>
-and/or <code>View.DefaultExtensionBuilder</code>. It’s possible to change it for
+and/or <code>View.DefaultExtensionBuilder</code>. It is possible to change it for
one usage via <code>View.basePathBuilder</code> and/or <code>View.fileNameBuilder</code>
and/or <code>View.extensionBuilder</code> or globally via the config mechanism
provided by DeltaSpike. The same is supported for folders via
@@ -2042,25 +2085,23 @@ is possible via <code>Folder.folderNameB
</div>
</div>
</div>
-</div>
-<div class="sect1">
-<h2 id="__grouped_conversations">(Grouped-)Conversations</h2>
-<div class="sectionbody">
+<div class="sect2">
+<h3 id="__grouped_conversations">(Grouped-)Conversations</h3>
<div class="paragraph">
-<p>Available with all versions after 0.5.</p>
+<p>Available from DeltaSpike 0.6.</p>
</div>
<div class="paragraph">
-<p>DeltaSpike conversations are based on the window-scope. Therefore, don’t
+<p>DeltaSpike conversations are based on the window-scope. Therefore, do not
forget to add the <code>ds:windowId</code>
(<code>xmlns:ds="http://deltaspike.apache.org/jsf"</code>) component in case of
<code>ClientWindowConfig#CLIENTWINDOW</code> to your page(/template) and ensure
-that the window-handling works properly (otherwise conversations won’t
+that the window-handling works properly (otherwise conversations will not
work correctly). The base principle is similar to CODI-Conversations.
CODI users just have to ensure that they have to add <code>ds:windowId</code> and
the names are slightly different.</p>
</div>
<div class="paragraph">
-<p>First of all it’s important to mention that DeltaSpike starts (grouped)
+<p>First of all, it is important to mention that DeltaSpike starts (grouped)
conversations automatically as soon as you access conversation scoped
beans. Furthermore, the invocation of <code>GroupedConversation#close</code> leads
to an immediate termination of the conversation.</p>
@@ -2082,21 +2123,28 @@ DemoBean1.</p>
</li>
</ol>
</div>
-<div class="paragraph">
-<p>Hint: If you would like to use the bean within your JSF pages, you have
-to add <code>@Named</code> (javax.inject.Named ).</p>
+<div class="admonitionblock tip">
+<table>
+<tr>
+<td class="icon">
+<div class="title">Tip</div>
+</td>
+<td class="content">
+If you would like to use the bean within your JSF pages, you have
+to add <code>@Named</code> (javax.inject.Named ).
+</td>
+</tr>
+</table>
</div>
<div class="paragraph">
-<p>(In case of CDI std. conversations there is just one big conversation
+<p>(In case of CDI standard conversations there is just one big conversation
which contains all conversation scoped beans.) The grouped conversations
provided by DeltaSpike are completely different. By default every
conversation scoped bean exists in an "isolated" conversation. That
means there are several parallel conversations within the same window.</p>
</div>
-<div class="paragraph">
-<p>Example - Separated DeltaSpike conversations:</p>
-</div>
<div class="listingblock">
+<div class="title">Separated DeltaSpike Conversations</div>
<div class="content">
<pre class="CodeRay highlight"><code data-lang="java"><span class="annotation">@GroupedConversationScoped</span>
<span class="directive">public</span> <span class="type">class</span> <span class="class">DemoBean2</span> <span class="directive">implements</span> <span class="predefined-type">Serializable</span>
@@ -2111,21 +2159,15 @@ means there are several parallel convers
}</code></pre>
</div>
</div>
-<div class="olist lowerroman">
-<ol class="lowerroman" type="i">
-<li>
-<p>leads to two independent conversations in the same window (context).
+<div class="paragraph">
+<p>The above example leads to two independent conversations in the same window (context).
If you close the conversation of DemoBean2, the conversation of
DemoBean3 is still active. If you have an use-case (e.g. a wizard) which
uses multiple beans which are linked together very tightly, you can
create a type-safe conversation group.</p>
-</li>
-</ol>
-</div>
-<div class="paragraph">
-<p>Example - Grouped conversation scoped beans:</p>
</div>
<div class="listingblock">
+<div class="title">Grouped Conversation Scoped Beans</div>
<div class="content">
<pre class="CodeRay highlight"><code data-lang="java"><span class="type">interface</span> <span class="class">Wizard1</span> {}
@@ -2150,13 +2192,11 @@ logical group of beans. Technically <cod
qualifier. Internally DeltaSpike uses this information to identify a
conversation. In the previous example both beans exist in the same
conversation (group). If you terminate the conversation group, both
-beans will be destroyed. If you don’t use <code>@ConversationGroup</code>
+beans will be destroyed. If you do not use <code>@ConversationGroup</code>
explicitly, DeltaSpike uses the class of the bean as conversation group.</p>
</div>
-<div class="paragraph">
-<p>Example - Injecting a conversation scoped bean with an explicit group:</p>
-</div>
<div class="listingblock">
+<div class="title">Injecting a Conversation Scoped Bean with an Explicit Group</div>
<div class="content">
<pre class="CodeRay highlight"><code data-lang="java"><span class="comment">//...</span>
<span class="directive">public</span> <span class="type">class</span> <span class="class">CustomBean1</span>
@@ -2172,14 +2212,14 @@ explicitly, DeltaSpike uses the class of
</div>
</div>
<div class="paragraph">
-<p>Since <code>@ConversationGroup</code> is a std. CDI qualifier you have to use it at
-the injection point. You have to do that esp. because it’s possible to
+<p>Since <code>@ConversationGroup</code> is a standard CDI qualifier you have to use it at
+the injection point. You have to do that especially because it is possible to
create beans of the same type which exist in different groups (e.g. via
producer methods).</p>
</div>
<div class="paragraph">
-<p>Example - Producer methods which produce conversation scoped beans with
-different groups:</p>
+<div class="title">Producer Methods which Produce Conversation Scoped Beans with</div>
+<p>Different Groups</p>
</div>
<div class="listingblock">
<div class="content">
@@ -2206,19 +2246,17 @@ different groups:</p>
}</code></pre>
</div>
</div>
-<div class="sect2">
-<h3 id="_terminating_conversations">Terminating Conversations</h3>
+<div class="sect3">
+<h4 id="_terminating_conversations">Terminating Conversations</h4>
<div class="paragraph">
<p>You can inject the conversation via <code>@Inject</code> and use it to terminate
the conversation immediately or you inject the
<code>GroupedConversationManager</code> which can be used to terminate a given
conversation (group). All conversations within a window are closed
-autom., once <code>WindowContext#closeWindow</code> gets called for the window.</p>
-</div>
-<div class="paragraph">
-<p>Example - Injecting and using the current conversation:</p>
+automatically, once <code>WindowContext#closeWindow</code> gets called for the window.</p>
</div>
<div class="listingblock">
+<div class="title">Injecting and Using the Current Conversation</div>
<div class="content">
<pre class="CodeRay highlight"><code data-lang="java"><span class="annotation">@GroupedConversationScoped</span>
<span class="directive">public</span> <span class="type">class</span> <span class="class">DemoBean6</span> <span class="directive">implements</span> <span class="predefined-type">Serializable</span>
@@ -2249,10 +2287,8 @@ autom., once <code>WindowContext#closeWi
}</code></pre>
</div>
</div>
-<div class="paragraph">
-<p>Example - Injecting and using the explicitly grouped conversation:</p>
-</div>
<div class="listingblock">
+<div class="title">Injecting and Using the Explicitly Grouped Conversation</div>
<div class="content">
<pre class="CodeRay highlight"><code data-lang="java"><span class="type">interface</span> <span class="class">Wizard2</span> {}
@@ -2287,11 +2323,8 @@ autom., once <code>WindowContext#closeWi
}</code></pre>
</div>
</div>
-<div class="paragraph">
-<p>Example - Terminating a grouped conversation outside of the
-conversation:</p>
-</div>
<div class="listingblock">
+<div class="title">Terminating a Grouped Conversation Outside of the Conversation</div>
<div class="content">
<pre class="CodeRay highlight"><code data-lang="java"><span class="comment">//...</span>
<span class="directive">public</span> <span class="type">class</span> <span class="class">DemoBean10</span> <span class="directive">implements</span> <span class="predefined-type">Serializable</span>
@@ -2308,10 +2341,8 @@ conversation:</p>
}</code></pre>
</div>
</div>
-<div class="paragraph">
-<p>Example - Terminate all conversations:</p>
-</div>
<div class="listingblock">
+<div class="title">Terminate All Conversations</div>
<div class="content">
<pre class="CodeRay highlight"><code data-lang="java"><span class="comment">//...</span>
<span class="directive">public</span> <span class="type">class</span> <span class="class">DemoBean11</span> <span class="directive">implements</span> <span class="predefined-type">Serializable</span>
@@ -2328,34 +2359,41 @@ conversation:</p>
}</code></pre>
</div>
</div>
-<div class="paragraph">
-<p>Hint: DeltaSpike conversations get closed/restarted immediately instead
-of keeping them until the end of the request like std. conversations do,
-because the behaviour of std. conversations breaks a lot of use-cases.
+<div class="admonitionblock tip">
+<table>
+<tr>
+<td class="icon">
+<div class="title">Tip</div>
+</td>
+<td class="content">
+DeltaSpike conversations get closed/restarted immediately instead
+of keeping them until the end of the request like standard conversations do,
+because the behaviour of standard conversations breaks a lot of use-cases.
However, if you really need to keep them until the end of the request,
-you can close them in a <code>@PostRenderView</code> callback.</p>
+you can close them in a <code>@PostRenderView</code> callback.
+</td>
+</tr>
+</table>
</div>
</div>
-<div class="sect2">
-<h3 id="_sub_conversation_groups">Sub-Conversation-Groups</h3>
+<div class="sect3">
+<h4 id="_sub_conversation_groups">Sub-Conversation-Groups</h4>
<div class="paragraph">
<p>Due to the parallel conversation concept of DeltaSpike there is no need
of something like nested conversations. Just use them in parallel and
-terminate them in a fine-granular way as soon as you don’t need them any
+terminate them in a fine-granular way as soon as you do not need them any
longer. As described above, you can terminate a whole
-conversation-group. However, sometimes it’s essential to have subgroups
+conversation-group. However, sometimes it is essential to have subgroups
if you need to end just a part of an use-case instead of all beans
related to an use-case. A sub-group is just a class or an interface used
to identify a bunch of beans within a group. To terminate such a
-sub-group, it’s just needed to pass the class/interface to the
+sub-group, it is just needed to pass the class/interface to the
corresponding API for terminating a conversation. The sub-group gets
-detected autom. and instead of terminating a whole conversation-group,
+detected automatically and instead of terminating a whole conversation-group,
the beans of the sub-group get un-scoped.</p>
</div>
-<div class="paragraph">
-<p>Example - Explicitly listing beans of a sub-group:</p>
-</div>
<div class="listingblock">
+<div class="title">Explicitly Listing Beans of a Sub-group</div>
<div class="content">
<pre class="CodeRay highlight"><code data-lang="java"><span class="directive">public</span> <span class="type">class</span> <span class="class">MyGroup</span>{}
@@ -2380,10 +2418,8 @@ the beans of the sub-group get un-scoped
<span class="directive">public</span> <span class="type">class</span> <span class="class">MySubGroup</span> {}</code></pre>
</div>
</div>
-<div class="paragraph">
-<p>Example - Terminating a sub-group:</p>
-</div>
<div class="listingblock">
+<div class="title">Terminating a Sub-group</div>
<div class="content">
<pre class="CodeRay highlight"><code data-lang="java"><span class="annotation">@Inject</span>
<span class="directive">private</span> GroupedConversationManager conversationManager;
@@ -2399,10 +2435,8 @@ the group or you specify it via the <cod
the sub-group. If you have a lot of such beans or you would like to form
(sub-)use-case oriented groups, you can use implicit groups:</p>
</div>
-<div class="paragraph">
-<p>Example - Implicit sub-group:</p>
-</div>
<div class="listingblock">
+<div class="title">Implicit Sub-group</div>
<div class="content">
<pre class="CodeRay highlight"><code data-lang="java"><span class="directive">public</span> <span class="type">interface</span> <span class="class">Wizard</span> {}
@@ -2428,33 +2462,29 @@ be closed as soon as you close the Impli
</div>
</div>
</div>
-</div>
-<div class="sect1">
-<h2 id="_injection_in_jsf_artifacts_todo">Injection in JSF Artifacts (TODO)</h2>
-<div class="sectionbody">
<div class="sect2">
-<h3 id="_converter_validator">Converter & Validator</h3>
+<h3 id="_injection_in_jsf_artifacts_todo">Injection in JSF Artifacts (TODO)</h3>
+<div class="sect3">
+<h4 id="_converter_and_validator">Converter and Validator</h4>
</div>
-<div class="sect2">
-<h3 id="_phaselistener">PhaseListener</h3>
+<div class="sect3">
+<h4 id="_phaselistener">PhaseListener</h4>
</div>
</div>
-</div>
-<div class="sect1">
-<h2 id="_event_broadcasting">Event broadcasting</h2>
-<div class="sectionbody">
<div class="sect2">
-<h3 id="_beforejsfrequest_afterjsfrequest_todo">BeforeJsfRequest / AfterJsfRequest (TODO)</h3>
+<h3 id="_event_broadcasting">Event broadcasting</h3>
+<div class="sect3">
+<h4 id="_beforejsfrequest_afterjsfrequest_todo">BeforeJsfRequest / AfterJsfRequest (TODO)</h4>
</div>
-<div class="sect2">
-<h3 id="_beforephase_afterphase_todo">BeforePhase / AfterPhase (TODO)</h3>
+<div class="sect3">
+<h4 id="_beforephase_afterphase_todo">BeforePhase / AfterPhase (TODO)</h4>
</div>
-<div class="sect2">
-<h3 id="_jsf_systemevents">JSF SystemEvents</h3>
+<div class="sect3">
+<h4 id="_jsf_systemevents">JSF SystemEvents</h4>
<div class="paragraph">
<p>Following JSF SystemEvents can be observed via CDI:</p>
</div>
@@ -2471,10 +2501,8 @@ be closed as soon as you close the Impli
</li>
</ul>
</div>
-<div class="paragraph">
-<p>Example:</p>
-</div>
<div class="listingblock">
+<div class="title">Example</div>
<div class="content">
<pre class="CodeRay highlight"><code data-lang="java"><span class="annotation">@ApplicationScoped</span>
<span class="directive">public</span> <span class="type">class</span> <span class="class">ApplicationConfig</span>
@@ -2488,19 +2516,17 @@ be closed as soon as you close the Impli
</div>
</div>
</div>
-</div>
-<div class="sect1">
-<h2 id="_intergration_with_exception_control_since_0_6">Intergration with Exception Control (since 0.6)</h2>
-<div class="sectionbody">
+<div class="sect2">
+<h3 id="_intergration_with_exception_control_from_deltaspike_0_6">Intergration with Exception Control (from DeltaSpike 0.6)</h3>
<div class="paragraph">
<p>Whenever a unhandled exception occurs within the JSF lifecycle, our JSF
ExceptionHandler provides a integration to the DeltaSpike Exception
Control.</p>
</div>
-<div class="sect2">
-<h3 id="_examples">Examples</h3>
<div class="sect3">
-<h4 id="_basic">Basic</h4>
+<h4 id="_examples">Examples</h4>
+<div class="sect4">
+<h5 id="_basic">Basic</h5>
<div class="listingblock">
<div class="content">
<pre>@ExceptionHandler
@@ -2517,8 +2543,8 @@ public class ApplicationExceptionHandler
</div>
</div>
</div>
-<div class="sect3">
-<h4 id="_redirect">Redirect</h4>
+<div class="sect4">
+<h5 id="_redirect">Redirect</h5>
<div class="listingblock">
<div class="content">
<pre class="CodeRay highlight"><code data-lang="java"><span class="annotation">@ExceptionHandler</span>
@@ -2539,10 +2565,10 @@ public class ApplicationExceptionHandler
</div>
</div>
</div>
-<div class="sect2">
-<h3 id="_using_a_custom_qualifier_for_jsf_exceptions">Using a custom qualifier for JSF Exceptions</h3>
+<div class="sect3">
+<h4 id="_using_a_custom_qualifier_for_jsf_exceptions">Using a Custom Qualifier for JSF Exceptions</h4>
<div class="paragraph">
-<p>In some cases, it’s required to differentiate exceptions from JSF and
+<p>In some cases, it is required to differentiate exceptions from JSF and
normal exceptions. This is possible via a CDI qualifier:</p>
</div>
<div class="listingblock">
@@ -2582,13 +2608,11 @@ normal exceptions. This is possible via
</div>
</div>
</div>
-</div>
-<div class="sect1">
-<h2 id="_double_submit_prevention">Double-Submit prevention</h2>
-<div class="sectionbody">
+<div class="sect2">
+<h3 id="_double_submit_prevention">Double-Submit Prevention</h3>
<div class="paragraph">
<p>To avoid that the same content of a form gets submitted and therefore
-processed multiple times, it’s possible to use the tag
+processed multiple times, it is possible to use the tag
<code><ds:preventDoubleSubmit/></code>. As usual for DeltaSpike JSF-tags, the <code>ds</code>
namespace is <code><a href="http://deltaspike.apache.org/jsf" class="bare">http://deltaspike.apache.org/jsf</a></code>. Just add this tag
within every JSF form-tag, you would like to safeguard.</p>
@@ -2611,28 +2635,16 @@ within every JSF form-tag, you would lik
</div>
</div>
</div>
-</div>
-<div class="sect1">
-<h2 id="_support_of_ear_deployments">Support of EAR deployments</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>Before using features described by this page, please ensure that you are
-aware of
-<a href="https://issues.apache.org/jira/browse/DELTASPIKE-335">DELTASPIKE-335</a> and
-the corresponding impact.</p>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_hints">Hints</h2>
-<div class="sectionbody">
+<div class="sect2">
+<h3 id="_tips">Tips</h3>
<div class="paragraph">
<p>Using errorView, DefaultErrorView or ViewNavigationHandler will fail
-with Weld versions below 1.1.10 due to
+with Weld versions older than 1.1.10 due to
<a href="https://issues.jboss.org/browse/WELD-1178">WELD-1178</a>.</p>
</div>
</div>
</div>
+</div>
</div>
<hr>