Author: buildbot
Date: Sat Feb 15 19:54:59 2014
New Revision: 898057
Log:
Staging update by buildbot for deltaspike
Modified:
websites/staging/deltaspike/trunk/content/ (props changed)
websites/staging/deltaspike/trunk/content/jsf.html
Propchange: websites/staging/deltaspike/trunk/content/
------------------------------------------------------------------------------
--- cms:source-revision (original)
+++ cms:source-revision Sat Feb 15 19:54:59 2014
@@ -1 +1 @@
-1568628
+1568671
Modified: websites/staging/deltaspike/trunk/content/jsf.html
==============================================================================
--- websites/staging/deltaspike/trunk/content/jsf.html (original)
+++ websites/staging/deltaspike/trunk/content/jsf.html Sat Feb 15 19:54:59 2014
@@ -188,6 +188,15 @@
<li><a href="#jsf-systemevents">JSF SystemEvents</a></li>
</ul>
</li>
+<li><a href="#intergration-with-exception-control">Intergration with Exception
Control</a><ul>
+<li><a href="#examples">Examples</a><ul>
+<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>
+</ul>
+</li>
<li><a href="#support-of-ear-deployments">Support of EAR deployments</a></li>
<li><a href="#hints">Hints</a></li>
</ul>
@@ -1309,6 +1318,76 @@ A sub-group is just a class or an interf
</pre></div>
+<h1 id="intergration-with-exception-control">Intergration with Exception
Control</h1>
+<p>Whenever a unhandled exception occurs within the JSF lifecycle, our JSF
ExceptionHandler provides a integration to the DeltaSpike Exception Control.</p>
+<h2 id="examples">Examples</h2>
+<h3 id="basic">Basic</h3>
+<div class="codehilite"><pre><span class="nd">@ExceptionHandler</span>
+<span class="kd">public</span> <span class="kd">class</span> <span
class="nc">ApplicationExceptionHandler</span>
+<span class="o">{</span>
+ <span class="kd">public</span> <span class="kt">void</span> <span
class="nf">handleELException</span><span class="o">(</span><span
class="nd">@Handles</span> <span class="n">ExceptionEvent</span><span
class="o"><</span><span class="n">ELException</span><span
class="o">></span> <span class="n">event</span><span class="o">)</span>
+ <span class="o">{</span>
+ <span class="c1">// ...</span>
+
+ <span class="n">event</span><span class="o">.</span><span
class="na">handled</span><span class="o">();</span>
+ <span class="o">}</span>
+<span class="o">}</span>
+</pre></div>
+
+
+<h3 id="redirect">Redirect</h3>
+<div class="codehilite"><pre><span class="nd">@ExceptionHandler</span>
+<span class="kd">public</span> <span class="kd">class</span> <span
class="nc">ApplicationExceptionHandler</span>
+<span class="o">{</span>
+ <span class="kd">public</span> <span class="kt">void</span> <span
class="nf">handleELException</span><span class="o">(</span><span
class="nd">@Handles</span> <span class="n">ExceptionEvent</span><span
class="o"><</span><span class="n">ELException</span><span
class="o">></span> <span class="n">event</span><span class="o">)</span>
+ <span class="o">{</span>
+ <span class="n">FacesContext</span><span class="o">.</span><span
class="na">getCurrentInstance</span><span class="o">().</span><span
class="na">getApplication</span><span class="o">().</span><span
class="na">getNavigationHandler</span><span class="o">().</span><span
class="na">handleNavigation</span><span class="o">(...);</span> <span
class="c1">// or ExternalContext etc.</span>
+
+ <span class="c1">// required - "stops" the JSF
lifecycle</span>
+ <span class="n">FacesContext</span><span class="o">.</span><span
class="na">getCurrentInstance</span><span class="o">().</span><span
class="na">setResponseComplete</span><span class="o">();</span>
+
+ <span class="n">event</span><span class="o">.</span><span
class="na">handled</span><span class="o">();</span>
+ <span class="o">}</span>
+<span class="o">}</span>
+</pre></div>
+
+
+<h2 id="using-a-custom-qualifier-for-jsf-exceptions">Using a custom qualifier
for JSF Exceptions</h2>
+<p>In some cases, it's required to differentiate exceptions from JSF and
normal exceptions.
+This is possible via a CDI qualifier:</p>
+<div class="codehilite"><pre><span class="nd">@Target</span><span
class="o">({</span> <span class="n">ElementType</span><span
class="o">.</span><span class="na">TYPE</span><span class="o">,</span> <span
class="n">ElementType</span><span class="o">.</span><span
class="na">PARAMETER</span> <span class="o">})</span>
+<span class="nd">@Retention</span><span class="o">(</span><span
class="n">RetentionPolicy</span><span class="o">.</span><span
class="na">RUNTIME</span><span class="o">)</span>
+<span class="nd">@Documented</span>
+<span class="nd">@Qualifier</span>
+<span class="kd">public</span> <span class="nd">@interface</span> <span
class="n">Jsf</span>
+<span class="o">{</span>
+<span class="o">}</span>
+
+<span class="nd">@Specializes</span>
+<span class="kd">public</span> <span class="kd">class</span> <span
class="nc">MyJsfModuleConfig</span> <span class="kd">extends</span> <span
class="n">JsfModuleConfig</span>
+<span class="o">{</span>
+ <span class="kd">public</span> <span class="n">Class</span><span
class="o"><?</span> <span class="kd">extends</span> <span
class="n">Annotation</span><span class="o">></span> <span
class="n">getExceptionQualifier</span><span class="o">()</span>
+ <span class="o">{</span>
+ <span class="k">return</span> <span class="n">Jsf</span><span
class="o">.</span><span class="na">class</span><span class="o">;</span>
+ <span class="o">}</span>
+<span class="o">}</span>
+
+<span class="nd">@ExceptionHandler</span>
+<span class="kd">public</span> <span class="kd">class</span> <span
class="nc">ApplicationExceptionHandler</span>
+<span class="o">{</span>
+ <span class="kd">public</span> <span class="kt">void</span> <span
class="nf">handleELException</span><span class="o">(</span><span
class="nd">@Handles</span> <span class="nd">@JsfExceptionEvent</span><span
class="o"><</span><span class="n">ELException</span><span
class="o">></span> <span class="n">event</span><span class="o">)</span>
+ <span class="o">{</span>
+ <span class="n">FacesContext</span><span class="o">.</span><span
class="na">getCurrentInstance</span><span class="o">().</span><span
class="na">getApplication</span><span class="o">().</span><span
class="na">getNavigationHandler</span><span class="o">().</span><span
class="na">handleNavigation</span><span class="o">(...);</span> <span
class="c1">// or ExternalContext etc.</span>
+
+ <span class="c1">// required - "stops" the JSF
lifecycle</span>
+ <span class="n">FacesContext</span><span class="o">.</span><span
class="na">getCurrentInstance</span><span class="o">().</span><span
class="na">setResponseComplete</span><span class="o">();</span>
+
+ <span class="n">event</span><span class="o">.</span><span
class="na">handled</span><span class="o">();</span>
+ <span class="o">}</span>
+<span class="o">}</span>
+</pre></div>
+
+
<h1 id="support-of-ear-deployments">Support of EAR deployments</h1>
<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>
<h1 id="hints">Hints</h1>