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 2013/03/31 00:17:56 UTC

svn commit: r856640 - in /websites/staging/deltaspike/trunk/content: ./ deltaspike/jsf.html

Author: buildbot
Date: Sat Mar 30 23:17:56 2013
New Revision: 856640

Log:
Staging update by buildbot for deltaspike

Modified:
    websites/staging/deltaspike/trunk/content/   (props changed)
    websites/staging/deltaspike/trunk/content/deltaspike/jsf.html

Propchange: websites/staging/deltaspike/trunk/content/
------------------------------------------------------------------------------
--- cms:source-revision (original)
+++ cms:source-revision Sat Mar 30 23:17:56 2013
@@ -1 +1 @@
-1462359
+1462858

Modified: websites/staging/deltaspike/trunk/content/deltaspike/jsf.html
==============================================================================
--- websites/staging/deltaspike/trunk/content/deltaspike/jsf.html (original)
+++ websites/staging/deltaspike/trunk/content/deltaspike/jsf.html Sat Mar 30 23:17:56 2013
@@ -208,14 +208,74 @@ One of those annotations provided by the
 <h3 id="using-folder">Using @Folder</h3>
 <p>[TODO]</p>
 <h3 id="navigation-parameters">Navigation Parameters</h3>
-<p>[TODO]</p>
+<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. <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 using <code>@View(navigation = REDIRECT)</code>. The same goes for <code>includeViewParams=true</code> and <code>@View(viewParams = INCLUDE)</code>.</p>
 <h4 id="static-configuration-via-navigationparameter">Static Configuration via @NavigationParameter</h4>
-<p>[TODO]</p>
+<p>In some cases it's 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 class="codehilite"><pre><span class="kd">public</span> <span class="kd">interface</span> <span class="nc">Pages</span> <span class="kd">extends</span> <span class="n">ViewConfig</span>
+<span class="o">{</span>
+    <span class="nd">@NavigationParameter</span><span class="o">(</span><span class="n">key</span> <span class="o">=</span> <span class="s">&quot;param1&quot;</span><span class="o">,</span> <span class="n">value</span> <span class="o">=</span> <span class="s">&quot;staticValue1&quot;</span><span class="o">)</span>
+    <span class="kd">class</span> <span class="nc">Index</span> <span class="kd">implements</span> <span class="n">Pages</span> <span class="o">{</span> <span class="o">}</span>
+
+    <span class="nd">@NavigationParameter.List</span><span class="o">({</span>
+        <span class="nd">@NavigationParameter</span><span class="o">(</span><span class="n">key</span> <span class="o">=</span> <span class="s">&quot;param1&quot;</span><span class="o">,</span> <span class="n">value</span> <span class="o">=</span> <span class="s">&quot;staticValue1&quot;</span><span class="o">),</span>
+        <span class="nd">@NavigationParameter</span><span class="o">(</span><span class="n">key</span> <span class="o">=</span> <span class="s">&quot;param2&quot;</span><span class="o">,</span> <span class="n">value</span> <span class="o">=</span> <span class="s">&quot;#{myBean.property1}&quot;</span><span class="o">)</span>
+    <span class="o">})</span>
+    <span class="kd">class</span> <span class="nc">Overview</span> <span class="kd">implements</span> <span class="n">Pages</span> <span class="o">{</span> <span class="o">}</span>
+<span class="o">}</span>
+</pre></div>
+
+
+<p>Instead of using parameters in any case, it's also possible to configure them statically for particular methods:</p>
+<div class="codehilite"><pre><span class="nd">@Model</span>
+<span class="kd">public</span> <span class="kd">class</span> <span class="nc">PageBean</span>
+<span class="o">{</span>
+    <span class="nd">@NavigationParameter</span><span class="o">(</span><span class="n">key</span> <span class="o">=</span> <span class="s">&quot;param2&quot;</span><span class="o">,</span> <span class="n">value</span> <span class="o">=</span> <span class="s">&quot;#{myBean.property1}&quot;</span><span class="o">)</span>
+    <span class="kd">public</span> <span class="n">Class</span><span class="o">&lt;?</span> <span class="kd">extends</span> <span class="n">ViewConfig</span><span class="o">&gt;</span> <span class="n">actionMethod1</span><span class="o">()</span>
+    <span class="o">{</span>
+        <span class="k">return</span> <span class="n">SimplePageConfig</span><span class="o">.</span><span class="na">class</span><span class="o">;</span>
+    <span class="o">}</span>
+
+    <span class="nd">@NavigationParameter.List</span><span class="o">({</span>
+        <span class="nd">@NavigationParameter</span><span class="o">(</span><span class="n">key</span> <span class="o">=</span> <span class="s">&quot;param1&quot;</span><span class="o">,</span> <span class="n">value</span> <span class="o">=</span> <span class="s">&quot;staticValue1&quot;</span><span class="o">),</span>
+        <span class="nd">@NavigationParameter</span><span class="o">(</span><span class="n">key</span> <span class="o">=</span> <span class="s">&quot;param2&quot;</span><span class="o">,</span> <span class="n">value</span> <span class="o">=</span> <span class="s">&quot;staticValue2&quot;</span><span class="o">)</span>
+    <span class="o">})</span>
+    <span class="kd">public</span> <span class="n">Class</span><span class="o">&lt;?</span> <span class="kd">extends</span> <span class="n">ViewConfig</span><span class="o">&gt;</span> <span class="n">actionMethod2</span><span class="o">()</span>
+    <span class="o">{</span>
+        <span class="k">return</span> <span class="n">SimplePageConfig</span><span class="o">.</span><span class="na">class</span><span class="o">;</span>
+    <span class="o">}</span>
+<span class="o">}</span>
+</pre></div>
+
+
 <h4 id="dynamic-configuration-via-navigationparametercontext">Dynamic Configuration via NavigationParameterContext</h4>
-<p>[TODO]</p>
+<p>Instead of using parameters in a static fashion (as shown above), it's also possible to add them dynamically (e.g. in case of special conditions).</p>
+<div class="codehilite"><pre><span class="nd">@Named</span>
+<span class="nd">@SessionScoped</span>
+<span class="kd">public</span> <span class="kd">class</span> <span class="nc">PageBean</span>
+<span class="o">{</span>
+    <span class="kd">private</span> <span class="kt">int</span> <span class="n">currentValue</span> <span class="o">=</span> <span class="o">-</span><span class="mi">10</span><span class="o">;</span>
+
+    <span class="nd">@Inject</span>
+    <span class="kd">private</span> <span class="n">NavigationParameterContext</span> <span class="n">navigationParameterContext</span><span class="o">;</span>
+
+    <span class="kd">public</span> <span class="n">Class</span><span class="o">&lt;?</span> <span class="kd">extends</span> <span class="n">ViewConfig</span><span class="o">&gt;</span> <span class="n">actionMethod</span><span class="o">()</span>
+    <span class="o">{</span>
+        <span class="n">currentValue</span><span class="o">++;</span>
+
+        <span class="k">if</span> <span class="o">(</span><span class="n">currentValue</span> <span class="o">&gt;=</span> <span class="mi">0</span><span class="o">)</span>
+        <span class="o">{</span>
+            <span class="k">this</span><span class="o">.</span><span class="na">navigationParameterContext</span><span class="o">.</span><span class="na">addPageParameter</span><span class="o">(</span><span class="s">&quot;cv&quot;</span><span class="o">,</span> <span class="k">this</span><span class="o">.</span><span class="na">currentValue</span><span class="o">);</span>
+        <span class="o">}</span>
+        <span class="k">return</span> <span class="n">SimplePageConfig</span><span class="o">.</span><span class="na">class</span><span class="o">;</span>
+    <span class="o">}</span>
+<span class="o">}</span>
+</pre></div>
+
+
 <h3 id="security-integration-via-secured">Security Integration via @Secured</h3>
 <p>This annotation is a custom view-meta-data provided by the Security-module which allows to integrate 3rd 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>.
+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 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>.<br/></p>
 <p>(It's 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 class="codehilite"><pre><span class="nd">@Secured</span><span class="o">(</span><span class="n">CustomAccessDecisionVoter</span><span class="o">.</span><span class="na">class</span><span class="o">)</span>