This is an automated email from the ASF dual-hosted git repository. git-site-role pushed a commit to branch asf-site in repository https://gitbox.apache.org/repos/asf/struts-site.git
The following commit(s) were added to refs/heads/asf-site by this push: new 8e8f1a2fc Automatic Site Publish by Buildbot 8e8f1a2fc is described below commit 8e8f1a2fceeeb1a71f624488a7379bd6ff08ae5a Author: buildbot <us...@infra.apache.org> AuthorDate: Wed Oct 19 14:05:35 2022 +0000 Automatic Site Publish by Buildbot --- output/core-developers/chain-result.html | 2 +- output/core-developers/dispatcher-result.html | 2 +- .../execute-and-wait-interceptor.html | 149 ++++++++++----------- output/core-developers/freemarker-result.html | 2 +- output/core-developers/httpheader-result.html | 2 +- output/core-developers/plain-result.html | 2 +- output/core-developers/plaintext-result.html | 2 +- output/core-developers/postback-result.html | 97 +++++++------- output/core-developers/redirect-action-result.html | 2 +- output/core-developers/redirect-result.html | 2 +- output/core-developers/result-types.html | 65 ++++++--- output/core-developers/stream-result.html | 2 +- output/core-developers/xsl-result.html | 2 +- output/plugins/index.html | 25 ++-- 14 files changed, 192 insertions(+), 164 deletions(-) diff --git a/output/core-developers/chain-result.html b/output/core-developers/chain-result.html index 640b94819..a8af6a94c 100644 --- a/output/core-developers/chain-result.html +++ b/output/core-developers/chain-result.html @@ -129,7 +129,7 @@ <section class="col-md-12"> <a class="edit-on-gh" href="https://github.com/apache/struts-site/edit/master/source/core-developers/chain-result.md" title="Edit this page on GitHub">Edit on GitHub</a> - <a href="index.html" title="back to Core Developers Guide"><< back to Core Developers Guide</a> + <a href="result-types" title="back to Result types"><< back to Result types</a> <h1 id="chain-result">Chain Result</h1> diff --git a/output/core-developers/dispatcher-result.html b/output/core-developers/dispatcher-result.html index dd2b223da..7b7c751ed 100644 --- a/output/core-developers/dispatcher-result.html +++ b/output/core-developers/dispatcher-result.html @@ -129,7 +129,7 @@ <section class="col-md-12"> <a class="edit-on-gh" href="https://github.com/apache/struts-site/edit/master/source/core-developers/dispatcher-result.md" title="Edit this page on GitHub">Edit on GitHub</a> - <a href="index.html" title="back to Core Developers Guide"><< back to Core Developers Guide</a> + <a href="result-types" title="back to Result types"><< back to Result types</a> <h1 id="dispatcher-result">Dispatcher Result</h1> diff --git a/output/core-developers/execute-and-wait-interceptor.html b/output/core-developers/execute-and-wait-interceptor.html index d66a395a0..d90537c0b 100644 --- a/output/core-developers/execute-and-wait-interceptor.html +++ b/output/core-developers/execute-and-wait-interceptor.html @@ -133,36 +133,36 @@ <h1 id="execute-and-wait-interceptor">Execute and Wait Interceptor</h1> -<p>The ExecuteAndWaitInterceptor is great for running long-lived actions in the background while showing the user a nice +<p>The ExecuteAndWaitInterceptor is great for running long-lived actions in the background while showing the user a nice progress meter. This also prevents the HTTP request from timing out when the action takes more than 5 or 10 minutes.</p> -<p>Using this interceptor is pretty straight forward. Assuming that you are including struts-default.xml, this interceptor -is already configured but is not part of any of the default stacks. Because of the nature of this interceptor, it must +<p>Using this interceptor is pretty straight forward. Assuming that you are including struts-default.xml, this interceptor +is already configured but is not part of any of the default stacks. Because of the nature of this interceptor, it must be the <code class="language-plaintext highlighter-rouge">last</code> interceptor in the stack.</p> -<p>This interceptor works on a per-session basis. That means that the same action name (<code class="language-plaintext highlighter-rouge">myLongRunningAction</code>, in +<p>This interceptor works on a per-session basis. That means that the same action name (<code class="language-plaintext highlighter-rouge">myLongRunningAction</code>, in the above example) cannot be run more than once at a time in a given session. On the initial request or any subsequent requests (before the action has completed), the <code class="language-plaintext highlighter-rouge">wait</code> result will be returned.</p> <blockquote> - <p>The wait result is responsible for issuing a subsequent request back to the action, giving the effect + <p>The wait result is responsible for issuing a subsequent request back to the action, giving the effect of a self-updating progress meter.</p> </blockquote> -<p>If no <code class="language-plaintext highlighter-rouge">wait</code> result is found, Struts will automatically generate a wait result on the fly. This result is written -in FreeMarker and cannot run unless FreeMarker is installed. If you don’t wish to deploy with FreeMarker, you must +<p>If no <code class="language-plaintext highlighter-rouge">wait</code> result is found, Struts will automatically generate a wait result on the fly. This result is written +in FreeMarker and cannot run unless FreeMarker is installed. If you don’t wish to deploy with FreeMarker, you must provide your own wait result. This is generally a good thing to do anyway, as the default wait page is very plain.</p> -<p>Whenever the wait result is returned, the action that is currently running in the background will be placed on top -of the stack. This allows you to display progress data, such as a count, in the wait page. By making the wait page +<p>Whenever the wait result is returned, the action that is currently running in the background will be placed on top +of the stack. This allows you to display progress data, such as a count, in the wait page. By making the wait page automatically reload the request to the action (which will be short-circuited by the interceptor), you can give the appearance of an automatic progress meter.</p> -<p>This interceptor also supports using an initial wait delay. An initial delay is a time in milliseconds we let the server -wait before the wait page is shown to the user. During the wait this interceptor will wake every 100 millis to check -if the background process is done premature, thus if the job for some reason doesn’t take to long the wait page is not +<p>This interceptor also supports using an initial wait delay. An initial delay is a time in milliseconds we let the server +wait before the wait page is shown to the user. During the wait this interceptor will wake every 100 millis to check +if the background process is done premature, thus if the job for some reason doesn’t take to long the wait page is not shown to the user. -This is useful for e.g. search actions that have a wide span of execution time. Using a delay time of 2000 millis we +This is useful for e.g. search actions that have a wide span of execution time. Using a delay time of 2000 millis we ensure the user is presented fast search results immediately and for the slow results a wait page is used.</p> <blockquote> @@ -178,77 +178,76 @@ For example, the <code class="language-plaintext highlighter-rouge">search</code <ul> <li><code class="language-plaintext highlighter-rouge">threadPriority</code> (optional) - the priority to assign the thread. Default is <code class="language-plaintext highlighter-rouge">Thread.NORM_PRIORITY</code>.</li> - <li><code class="language-plaintext highlighter-rouge">delay</code> (optional) - an initial delay in millis to wait before the wait page is shown (returning <code class="language-plaintext highlighter-rouge">wait</code> as result code). -Default is no initial delay.</li> - <li><code class="language-plaintext highlighter-rouge">delaySleepInterval</code> (optional) - only used with delay. Used for waking up at certain intervals to check if the background -process is already done. Default is 100 millis.</li> + <li><code class="language-plaintext highlighter-rouge">delay</code> (optional) - an initial delay in millis to wait before the wait page is shown (returning <code class="language-plaintext highlighter-rouge">wait</code> as result +code). Default is no initial delay.</li> + <li><code class="language-plaintext highlighter-rouge">delaySleepInterval</code> (optional) - only used with delay. Used for waking up at certain intervals to check if the +background process is already done. Default is 100 millis.</li> </ul> <h2 id="extending-the-interceptor">Extending the Interceptor</h2> -<p>If you wish to make special preparations before and/or after the invocation of the background thread, you can extend -the <code class="language-plaintext highlighter-rouge">BackgroundProcess</code> class and implement the <code class="language-plaintext highlighter-rouge">beforeInvocation()</code> and <code class="language-plaintext highlighter-rouge">afterInvocation()</code> methods. This may be useful -for obtaining and releasing resources that the background process will need to execute successfully. To use your background +<p>If you wish to make special preparations before and/or after the invocation of the background thread, you can extend +the <code class="language-plaintext highlighter-rouge">BackgroundProcess</code> class and implement the <code class="language-plaintext highlighter-rouge">beforeInvocation()</code> and <code class="language-plaintext highlighter-rouge">afterInvocation()</code> methods. This may be useful +for obtaining and releasing resources that the background process will need to execute successfully. To use your +background process extension, extend <code class="language-plaintext highlighter-rouge">ExecuteAndWaitInterceptor</code> and implement the <code class="language-plaintext highlighter-rouge">getNewBackgroundProcess()</code> method.</p> <h2 id="examples">Examples</h2> -<div class="language-xml highlighter-rouge"><div class="highlight"><pre class="highlight"><code> <span class="nt"><action</span> <span class="na">name=</span><span class="s">"someAction"</span> <span class="na">class=</span><span class="s">"com.examples.SomeAction"</span><span class="nt">></span> - <span class="nt"><interceptor-ref</span> <span class="na">name=</span><span class="s">"completeStack"</span><span class="nt">/></span> - <span class="nt"><interceptor-ref</span> <span class="na">name=</span><span class="s">"execAndWait"</span><span class="nt">/></span> - <span class="nt"><result</span> <span class="na">name=</span><span class="s">"wait"</span><span class="nt">></span>longRunningAction-wait.jsp<span class="nt"></result></span> - <span class="nt"><result</span> <span class="na">name=</span><span class="s">"success"</span><span class="nt">></span>longRunningAction-success.jsp<span class="nt"></result></span> - <span class="nt"></action></span> - - <span class="err"><</span>%@ taglib prefix="s" uri="/struts" %> - <span class="nt"><html></span> - <span class="nt"><head></span> - <span class="nt"><title></span>Please wait<span class="nt"></title></span> - <span class="nt"><meta</span> <span class="na">http-equiv=</span><span class="s">"refresh"</span> <span class="na">content=</span><span class="s">"5;url=<s:url includeParams="</span><span class="err">all"</span> <span class="nt">/></span>"/> - <span class="nt"></head></span> - <span class="nt"><body></span> - Please wait while we process your request. - Click <span class="nt"><a</span> <span class="na">href=</span><span class="s">"<s:url includeParams="</span><span class="err">all"</span> <span class="nt">/></span>"><span class="nt"></a></span> if this page does not reload automatically. - <span class="nt"></body></span> - <span class="nt"></html></span> - <span class="nt"></pre></span> - - <span class="nt"><p><u></span>Example code2:<span class="nt"></u></p></span> - <span class="nt"><p></span> - This example will wait 2 second (2000 millis) before the wait page is shown to the user. Therefore - if the long process didn't last long anyway the user isn't shown a wait page. - <span class="nt"></p></span> - - <span class="nt"><pre></span> - <span class="nt"><action</span> <span class="na">name=</span><span class="s">"someAction"</span> <span class="na">class=</span><span class="s">"com.examples.SomeAction"</span><span class="nt">></span> - <span class="nt"><interceptor-ref</span> <span class="na">name=</span><span class="s">"completeStack"</span><span class="nt">/></span> - <span class="nt"><interceptor-ref</span> <span class="na">name=</span><span class="s">"execAndWait"</span><span class="nt">></span> - <span class="nt"><param</span> <span class="na">name=</span><span class="s">"delay"</span><span class="nt">></span>2000<span class="nt"><param></span> - <span class="nt"><interceptor-ref></span> - <span class="nt"><result</span> <span class="na">name=</span><span class="s">"wait"</span><span class="nt">></span>longRunningAction-wait.jsp<span class="nt"></result></span> - <span class="nt"><result</span> <span class="na">name=</span><span class="s">"success"</span><span class="nt">></span>longRunningAction-success.jsp<span class="nt"></result></span> - <span class="nt"></action></span> - <span class="nt"></pre></span> - - <span class="nt"><p><u></span>Example code3:<span class="nt"></u></p></span> - <span class="nt"><p></span> - This example will wait 1 second (1000 millis) before the wait page is shown to the user. - And at every 50 millis this interceptor will check if the background process is done, if so - it will return before the 1 second has elapsed, and the user isn't shown a wait page. - <span class="nt"></p></span> - - <span class="nt"><pre></span> - <span class="nt"><action</span> <span class="na">name=</span><span class="s">"someAction"</span> <span class="na">class=</span><span class="s">"com.examples.SomeAction"</span><span class="nt">></span> - <span class="nt"><interceptor-ref</span> <span class="na">name=</span><span class="s">"completeStack"</span><span class="nt">/></span> - <span class="nt"><interceptor-ref</span> <span class="na">name=</span><span class="s">"execAndWait"</span><span class="nt">></span> - <span class="nt"><param</span> <span class="na">name=</span><span class="s">"delay"</span><span class="nt">></span>1000<span class="nt"><param></span> - <span class="nt"><param</span> <span class="na">name=</span><span class="s">"delaySleepInterval"</span><span class="nt">></span>50<span class="nt"><param></span> - <span class="nt"><interceptor-ref></span> - <span class="nt"><result</span> <span class="na">name=</span><span class="s">"wait"</span><span class="nt">></span>longRunningAction-wait.jsp<span class="nt"></result></span> - <span class="nt"><result</span> <span class="na">name=</span><span class="s">"success"</span><span class="nt">></span>longRunningAction-success.jsp<span class="nt"></result></span> - <span class="nt"></action></span> - <span class="nt"></pre></span> +<h3 id="example-code-1">Example code 1</h3> +<div class="language-xml highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nt"><action</span> <span class="na">name=</span><span class="s">"someAction"</span> <span class="na">class=</span><span class="s">"com.examples.SomeAction"</span><span class="nt">></span> + <span class="nt"><interceptor-ref</span> <span class="na">name=</span><span class="s">"completeStack"</span><span class="nt">/></span> + <span class="nt"><interceptor-ref</span> <span class="na">name=</span><span class="s">"execAndWait"</span><span class="nt">/></span> + <span class="nt"><result</span> <span class="na">name=</span><span class="s">"wait"</span><span class="nt">></span>longRunningAction-wait.jsp<span class="nt"></result></span> + <span class="nt"><result</span> <span class="na">name=</span><span class="s">"success"</span><span class="nt">></span>longRunningAction-success.jsp<span class="nt"></result></span> +<span class="nt"></action></span> +</code></pre></div></div> + +<div class="language-html highlighter-rouge"><div class="highlight"><pre class="highlight"><code> <span class="nt"><</span><span class="err">%@</span> <span class="na">taglib</span> <span class="na">prefix=</span><span class="s">"s"</span> <span class="na">uri=</span><span class="s">"/struts"</span> <span class="err">%</span><span class="nt">></span> +<span class="nt"><html></span> +<span class="nt"><head></span> + <span class="nt"><title></span>Please wait<span class="nt"></title></span> + <span class="nt"><meta</span> <span class="na">http-equiv=</span><span class="s">"refresh"</span> <span class="na">content=</span><span class="s">"5;url=<s:url includeParams='all' />"</span><span class="nt">/></span> +<span class="nt"></head></span> +<span class="nt"><body></span> +Please wait while we process your request. +Click <span class="nt"><a</span> <span class="na">href=</span><span class="s">"<s:url includeParams="</span> <span class="na">all</span><span class="err">"</span> <span class="nt">/></span>"><span class="nt"></a></span> if this page does not reload automatically. +<span class="nt"></body></span> +<span class="nt"></html></span> +<span class="nt"></pre></span> +</code></pre></div></div> + +<h3 id="example-code-2">Example code 2:</h3> + +<p>This example will wait 2 second (2000 millis) before the wait page is shown to the user. Therefore if the long process +didn’t last long anyway the user isn’t shown a wait page.</p> + +<div class="language-xml highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nt"><action</span> <span class="na">name=</span><span class="s">"someAction"</span> <span class="na">class=</span><span class="s">"com.examples.SomeAction"</span><span class="nt">></span> + <span class="nt"><interceptor-ref</span> <span class="na">name=</span><span class="s">"completeStack"</span><span class="nt">/></span> + <span class="nt"><interceptor-ref</span> <span class="na">name=</span><span class="s">"execAndWait"</span><span class="nt">></span> + <span class="nt"><param</span> <span class="na">name=</span><span class="s">"delay"</span><span class="nt">></span>2000<span class="nt"></param></span> + <span class="nt"></interceptor-ref></span> + <span class="nt"><result</span> <span class="na">name=</span><span class="s">"wait"</span><span class="nt">></span>longRunningAction-wait.jsp<span class="nt"></result></span> + <span class="nt"><result</span> <span class="na">name=</span><span class="s">"success"</span><span class="nt">></span>longRunningAction-success.jsp<span class="nt"></result></span> +<span class="nt"></action></span> +</code></pre></div></div> + +<h3 id="example-code-3">Example code 3:</h3> + +<p>This example will wait 1 second (1000 millis) before the wait page is shown to the user. +And at every 50 millis this interceptor will check if the background process is done, if so +it will return before the 1 second has elapsed, and the user isn’t shown a wait page.</p> + +<div class="language-xml highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nt"><action</span> <span class="na">name=</span><span class="s">"someAction"</span> <span class="na">class=</span><span class="s">"com.examples.SomeAction"</span><span class="nt">></span> + <span class="nt"><interceptor-ref</span> <span class="na">name=</span><span class="s">"completeStack"</span><span class="nt">/></span> + <span class="nt"><interceptor-ref</span> <span class="na">name=</span><span class="s">"execAndWait"</span><span class="nt">></span> + <span class="nt"><param</span> <span class="na">name=</span><span class="s">"delay"</span><span class="nt">></span>1000<span class="nt"></param></span> + <span class="nt"><param</span> <span class="na">name=</span><span class="s">"delaySleepInterval"</span><span class="nt">></span>50<span class="nt"></param></span> + <span class="nt"></interceptor-ref></span> + <span class="nt"><result</span> <span class="na">name=</span><span class="s">"wait"</span><span class="nt">></span>longRunningAction-wait.jsp<span class="nt"></result></span> + <span class="nt"><result</span> <span class="na">name=</span><span class="s">"success"</span><span class="nt">></span>longRunningAction-success.jsp<span class="nt"></result></span> +<span class="nt"></action></span> </code></pre></div></div> </section> diff --git a/output/core-developers/freemarker-result.html b/output/core-developers/freemarker-result.html index 498400383..2ea07a211 100644 --- a/output/core-developers/freemarker-result.html +++ b/output/core-developers/freemarker-result.html @@ -129,7 +129,7 @@ <section class="col-md-12"> <a class="edit-on-gh" href="https://github.com/apache/struts-site/edit/master/source/core-developers/freemarker-result.md" title="Edit this page on GitHub">Edit on GitHub</a> - <a href="index.html" title="back to Core Developers Guide"><< back to Core Developers Guide</a> + <a href="result-types" title="back to Result types"><< back to Result types</a> <h1 id="freemarker-result">FreeMarker Result</h1> diff --git a/output/core-developers/httpheader-result.html b/output/core-developers/httpheader-result.html index fb5242bd0..82acbb633 100644 --- a/output/core-developers/httpheader-result.html +++ b/output/core-developers/httpheader-result.html @@ -129,7 +129,7 @@ <section class="col-md-12"> <a class="edit-on-gh" href="https://github.com/apache/struts-site/edit/master/source/core-developers/httpheader-result.md" title="Edit this page on GitHub">Edit on GitHub</a> - <a href="index.html" title="back to Core Developers Guide"><< back to Core Developers Guide</a> + <a href="result-types" title="back to Result types"><< back to Result types</a> <h1 id="httpheader-result">HttpHeader Result</h1> diff --git a/output/core-developers/plain-result.html b/output/core-developers/plain-result.html index 7c2cce2b4..e6ff3d237 100644 --- a/output/core-developers/plain-result.html +++ b/output/core-developers/plain-result.html @@ -129,7 +129,7 @@ <section class="col-md-12"> <a class="edit-on-gh" href="https://github.com/apache/struts-site/edit/master/source/core-developers/plain-result.md" title="Edit this page on GitHub">Edit on GitHub</a> - <a href="index.html" title="back to Core Developers Guide"><< back to Core Developers Guide</a> + <a href="result-types" title="back to Result types"><< back to Result types</a> <h1 id="plain-result">Plain Result</h1> diff --git a/output/core-developers/plaintext-result.html b/output/core-developers/plaintext-result.html index e3d4d839d..9e48dd72f 100644 --- a/output/core-developers/plaintext-result.html +++ b/output/core-developers/plaintext-result.html @@ -129,7 +129,7 @@ <section class="col-md-12"> <a class="edit-on-gh" href="https://github.com/apache/struts-site/edit/master/source/core-developers/plaintext-result.md" title="Edit this page on GitHub">Edit on GitHub</a> - <a href="index.html" title="back to Core Developers Guide"><< back to Core Developers Guide</a> + <a href="result-types" title="back to Result types"><< back to Result types</a> <h1 id="plaintext-result">PlainText Result</h1> diff --git a/output/core-developers/postback-result.html b/output/core-developers/postback-result.html index f070bcdf6..d3dcb5f99 100644 --- a/output/core-developers/postback-result.html +++ b/output/core-developers/postback-result.html @@ -133,65 +133,62 @@ <h2 id="description">Description</h2> -<p> <p> - - A result that renders the current request parameters as a form which - - immediately submits a <a href="http://en.wikipedia.org/wiki/Postback">postback</a> - - to the specified destination. - - </p> -</p> +<p>A result that renders the current request parameters as a form which immediately submits +a <a href="http://en.wikipedia.org/wiki/Postback">postback</a> to the specified destination.</p> <h2 id="parameters">Parameters</h2> -<p> <ul> - - <li>location - http location to post the form</li> - - <li>prependServletContext (true|false) - when location is relative, controls if to add Servlet Context, default "true"</li> - - <li>actionName - action name to post the form (resolved as an expression)</li> - - <li>namespace - action's namespace to use (resolved as an expression)</li> - - <li>method - actions' method to use (resolved as an expression)</li> - - <li>cache (true|false) - when set to true adds cache control headers, default "true"</li> - - <li>parse (true|false) - when set to true actionName, namespace and method are parsed, default "true"</li> - - </ul> -</p> +<ul> + <li>location - http location to post the form</li> + <li> + <table> + <tbody> + <tr> + <td>prependServletContext (true</td> + <td>false) - when location is relative, controls if to add Servlet Context, default “true”</td> + </tr> + </tbody> + </table> + </li> + <li>actionName - action name to post the form (resolved as an expression)</li> + <li>namespace - action’s namespace to use (resolved as an expression)</li> + <li>method - actions’ method to use (resolved as an expression)</li> + <li> + <table> + <tbody> + <tr> + <td>cache (true</td> + <td>false) - when set to true adds cache control headers, default “true”</td> + </tr> + </tbody> + </table> + </li> + <li> + <table> + <tbody> + <tr> + <td>parse (true</td> + <td>false) - when set to true actionName, namespace and method are parsed, default “true”</td> + </tr> + </tbody> + </table> + </li> +</ul> <h2 id="examples">Examples</h2> -<div class="language-xml highlighter-rouge"><div class="highlight"><pre class="highlight"><code> - <span class="nt"><action</span> <span class="na">name=</span><span class="s">"registerThirdParty"</span> <span class="nt">></span> - - <span class="nt"><result</span> <span class="na">type=</span><span class="s">"postback"</span><span class="nt">></span>https://www.example.com/register<span class="nt"></result></span> - - <span class="nt"></action></span> - - - - <span class="nt"><action</span> <span class="na">name=</span><span class="s">"registerThirdParty"</span> <span class="nt">></span> - - <span class="nt"><result</span> <span class="na">type=</span><span class="s">"postback"</span><span class="nt">></span> - - <span class="nt"><param</span> <span class="na">name=</span><span class="s">"namespace"</span><span class="nt">></span>/secure<span class="nt"></param></span> - - <span class="nt"><param</span> <span class="na">name=</span><span class="s">"actionName"</span><span class="nt">></span>register2<span class="nt"></param></span> - - <span class="nt"></result></span> - - <span class="nt"></action></span> - +<div class="language-xml highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nt"><action</span> <span class="na">name=</span><span class="s">"registerThirdParty"</span> <span class="nt">></span> + <span class="nt"><result</span> <span class="na">type=</span><span class="s">"postback"</span><span class="nt">></span>https://www.example.com/register<span class="nt"></result></span> +<span class="nt"></action></span> +<span class="nt"><action</span> <span class="na">name=</span><span class="s">"registerThirdParty"</span> <span class="nt">></span> + <span class="nt"><result</span> <span class="na">type=</span><span class="s">"postback"</span><span class="nt">></span> + <span class="nt"><param</span> <span class="na">name=</span><span class="s">"namespace"</span><span class="nt">></span>/secure<span class="nt"></param></span> + <span class="nt"><param</span> <span class="na">name=</span><span class="s">"actionName"</span><span class="nt">></span>register2<span class="nt"></param></span> + <span class="nt"></result></span> +<span class="nt"></action></span> </code></pre></div></div> - </section> </article> diff --git a/output/core-developers/redirect-action-result.html b/output/core-developers/redirect-action-result.html index 76c5077bd..119be1396 100644 --- a/output/core-developers/redirect-action-result.html +++ b/output/core-developers/redirect-action-result.html @@ -129,7 +129,7 @@ <section class="col-md-12"> <a class="edit-on-gh" href="https://github.com/apache/struts-site/edit/master/source/core-developers/redirect-action-result.md" title="Edit this page on GitHub">Edit on GitHub</a> - <a href="index.html" title="back to Core Developers Guide"><< back to Core Developers Guide</a> + <a href="result-types" title="back to Result types"><< back to Result types</a> <h1 id="redirect-action-result">Redirect Action Result</h1> diff --git a/output/core-developers/redirect-result.html b/output/core-developers/redirect-result.html index 214a364e2..81bbb852e 100644 --- a/output/core-developers/redirect-result.html +++ b/output/core-developers/redirect-result.html @@ -129,7 +129,7 @@ <section class="col-md-12"> <a class="edit-on-gh" href="https://github.com/apache/struts-site/edit/master/source/core-developers/redirect-result.md" title="Edit this page on GitHub">Edit on GitHub</a> - <a href="index.html" title="back to Core Developers Guide"><< back to Core Developers Guide</a> + <a href="result-types" title="back to Result types"><< back to Result types</a> <h1 id="redirect-result">Redirect Result</h1> diff --git a/output/core-developers/result-types.html b/output/core-developers/result-types.html index 0fdfd6228..4f1fcded3 100644 --- a/output/core-developers/result-types.html +++ b/output/core-developers/result-types.html @@ -129,12 +129,22 @@ <section class="col-md-12"> <a href="index.html" title="back to Core Developers Guide"><< back to Core Developers Guide</a> <a class="edit-on-gh" href="https://github.com/apache/struts-site/edit/master/source/core-developers/result-types.md" title="Edit this page on GitHub">Edit on GitHub</a> - <h1 id="result-types">Result Types</h1> + <h1 class="no_toc" id="result-types">Result Types</h1> <p>Most use cases can be divided into two phases. First, we need to change or query the application’s state, and then we need to present an updated view of the application. The Action class manages the application’s state, and the Result Type manages the view.</p> +<ul id="markdown-toc"> + <li><a href="#predefined-result-types" id="markdown-toc-predefined-result-types">Predefined Result Types</a></li> + <li><a href="#how-to-use-results" id="markdown-toc-how-to-use-results">How to use results</a></li> + <li><a href="#default-result-type" id="markdown-toc-default-result-type">Default result type</a></li> + <li><a href="#default-result-name" id="markdown-toc-default-result-name">Default result name</a></li> + <li><a href="#default-parameters" id="markdown-toc-default-parameters">Default parameters</a></li> + <li><a href="#registering-result-types" id="markdown-toc-registering-result-types">Registering result types</a></li> + <li><a href="#extending" id="markdown-toc-extending">Extending</a></li> +</ul> + <h2 id="predefined-result-types">Predefined Result Types</h2> <p>The framework provides several implementations of the <code class="language-plaintext highlighter-rouge">com.opensymphony.xwork2.Result</code> interface, ready to use in your @@ -180,7 +190,7 @@ own applications.</p> </tr> <tr> <td><a href="plain-result">Plain Result</a></td> - <td>A plain result which all you to write directly to a HttpResponse using a simplified API (since Struts 2.6)</td> + <td>A plain result which all you to write directly to a HttpResponse using a simplified API (since Struts 6.x)</td> </tr> <tr> <td><a href="plaintext-result">PlainText Result</a></td> @@ -190,10 +200,6 @@ own applications.</p> <td><a href="../plugins/tiles/">Tiles Result</a></td> <td>Used to provide Tiles integration</td> </tr> - <tr> - <td><a href="../plugins/tiles-3/">Tiles 3 Result</a></td> - <td>Used to provide Tiles 3 integration</td> - </tr> <tr> <td><a href="postback-result">Postback Result</a></td> <td>Used to postback request parameters as a form to the specified destination</td> @@ -202,17 +208,9 @@ own applications.</p> <td><a href="../plugins/json/">JSON Result</a></td> <td>Used to serialize actions into JSON</td> </tr> - </tbody> -</table> - -<h2 id="optional">Optional</h2> - -<table> - <tbody> <tr> <td><a href="../plugins/jasperreports/">JasperReports Plugin</a></td> <td>Used for <a href="../getting-started/jasper-reports-tutorial">JasperReports Tutorial</a> integration</td> - <td>Optional, third-party plugin</td> </tr> </tbody> </table> @@ -220,7 +218,40 @@ own applications.</p> <p>Additional Result Types can be created and plugged into an application by implementing the <code class="language-plaintext highlighter-rouge">com.opensymphony.xwork2.Result</code> interface. Custom Result Types might include generating an email or JMS message, generating images, and so forth.</p> -<h2 id="default-parameters">Default Parameters</h2> +<h2 id="how-to-use-results">How to use results</h2> + +<p>Once your action has been executed it must either return a result name (as <code class="language-plaintext highlighter-rouge">java.lang.String</code>) or instance +of <code class="language-plaintext highlighter-rouge">com.opensymphony.xwork2.Result</code> and then the result will be executed directly.</p> + +<p>If a String has been returned, the framework will try to find a matching result in the configuration and then it will +execute the result of a given type, see example:</p> + +<div class="language-xml highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nt"><result</span> <span class="na">name=</span><span class="s">"success"</span> <span class="na">type=</span><span class="s">"dispatcher"</span><span class="nt">></span>/WEB-INF/index.jsp<span class="nt"></result></span> +</code></pre></div></div> + +<p>You can define many results per action distinguishing them by different names:</p> + +<div class="language-xml highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nt"><result</span> <span class="na">name=</span><span class="s">"success"</span> <span class="na">type=</span><span class="s">"dispatcher"</span><span class="nt">></span>/WEB-INF/index.jsp<span class="nt"></result></span> +<span class="nt"><result</span> <span class="na">name=</span><span class="s">"input"</span> <span class="na">type=</span><span class="s">"dispatcher"</span><span class="nt">></span>/WEB-INF/form.jsp<span class="nt"></result></span> +<span class="nt"><result</span> <span class="na">name=</span><span class="s">"error"</span> <span class="na">type=</span><span class="s">"dispatcher"</span><span class="nt">></span>/WEB-INF/error.jsp<span class="nt"></result></span> +</code></pre></div></div> + +<h2 id="default-result-type">Default result type</h2> + +<p>In <code class="language-plaintext highlighter-rouge">struts-default.xml</code> the Dispatcher result type is registered as a default result type, which means you don’t have to +specify the <code class="language-plaintext highlighter-rouge">type</code> attribute if you want to use it:</p> + +<div class="language-xml highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nt"><result</span> <span class="na">name=</span><span class="s">"success"</span><span class="nt">></span>/WEB-INF/index.jsp<span class="nt"></result></span> +</code></pre></div></div> + +<h2 id="default-result-name">Default result name</h2> + +<p>If you action method returns <code class="language-plaintext highlighter-rouge">success</code>, which is a default name of the result, you don’t have specify the <code class="language-plaintext highlighter-rouge">name</code> attribute as well:</p> + +<div class="language-xml highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nt"><result></span>/WEB-INF/index.jsp<span class="nt"></result></span> +</code></pre></div></div> + +<h2 id="default-parameters">Default parameters</h2> <p>To minimize configuration, Results can be configured with a single value, which will be converted into a parameter, and each Result can specify which parameter this value should be set as. For example, here is a result defined in XML @@ -240,7 +271,7 @@ that uses a default parameter:</p> a significant amount of configuration. It also follows that if you have specified the default parameter, you don’t need to set the same parameter as a specifically-named parameter.</p> -<h2 id="registering-result-types">Registering Result Types</h2> +<h2 id="registering-result-types">Registering result types</h2> <p>All Result Types are plugged in via the <a href="result-configuration">Result Configuration</a>.</p> @@ -253,7 +284,7 @@ Check <a href="object-factory">Define dedicated factory</a> to see how to do it. <p>Struts 2 provides one such extension for you:</p> <p><code class="language-plaintext highlighter-rouge">ParamNameAwareResult</code> interface when used with <code class="language-plaintext highlighter-rouge">StrutsResultBuilder</code> can limit parameters assigned to the result. -So you can simple extend existing result with such a functionality as below:</p> +So you can simply extend existing result with such a functionality as below:</p> <div class="language-java highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">public</span> <span class="kd">class</span> <span class="nc">MyResult</span> <span class="kd">extends</span> <span class="nc">ServletDispatcherResult</span> <span class="kd">implements</span> <span class="nc">ParamNameAwareResult</span> <span class="o">{</span> diff --git a/output/core-developers/stream-result.html b/output/core-developers/stream-result.html index afc9a563f..8b7e85e70 100644 --- a/output/core-developers/stream-result.html +++ b/output/core-developers/stream-result.html @@ -129,7 +129,7 @@ <section class="col-md-12"> <a class="edit-on-gh" href="https://github.com/apache/struts-site/edit/master/source/core-developers/stream-result.md" title="Edit this page on GitHub">Edit on GitHub</a> - <a href="index.html" title="back to Core Developers Guide"><< back to Core Developers Guide</a> + <a href="result-types" title="back to Result types"><< back to Result types</a> <h1 id="stream-result">Stream Result</h1> diff --git a/output/core-developers/xsl-result.html b/output/core-developers/xsl-result.html index 1e3db89e3..5584ec159 100644 --- a/output/core-developers/xsl-result.html +++ b/output/core-developers/xsl-result.html @@ -129,7 +129,7 @@ <section class="col-md-12"> <a class="edit-on-gh" href="https://github.com/apache/struts-site/edit/master/source/core-developers/xsl-result.md" title="Edit this page on GitHub">Edit on GitHub</a> - <a href="index.html" title="back to Core Developers Guide"><< back to Core Developers Guide</a> + <a href="result-types" title="back to Result types"><< back to Result types</a> <h1 id="xsl-result">XSL Result</h1> diff --git a/output/plugins/index.html b/output/plugins/index.html index 04f7751cd..1c5b6723d 100644 --- a/output/plugins/index.html +++ b/output/plugins/index.html @@ -131,9 +131,9 @@ <h1 id="plugin-developers-guide">Plugin Developers Guide</h1> -<p>Apache Struts 2 provides a simple <a href="plugins-architecture">plugin architecture</a> so that developers can extend the framework just by -adding a JAR to the application’s classpath. Since plugins are contained in a JAR, they are easy to share with others. -Several plugins are bundled with the framework, and others are available from third-party sources.</p> +<p>Apache Struts 2 provides a simple <a href="plugins-architecture">plugin architecture</a> so that developers can extend the +framework just by adding a JAR to the application’s classpath. Since plugins are contained in a JAR, they are easy +to share with others. Several plugins are bundled with the framework, and others are available from third-party sources.</p> <ul> <li><a href="plugins-architecture">Plugins Architecture</a></li> @@ -184,7 +184,7 @@ Several plugins are bundled with the framework, and others are available from th <tr> <td><a href="embedded-jsp">Embedded JSP Plugin</a></td> <td>2.1.7+</td> - <td>deprecated since 2.6</td> + <td>deprecated since 6.0.0</td> </tr> <tr> <td><a href="jasperreports">JasperReports Plugin</a></td> @@ -224,27 +224,27 @@ Several plugins are bundled with the framework, and others are available from th <tr> <td><a href="oval">OVal Plugin</a></td> <td>2.1.7+</td> - <td>deprecated since 2.6, use <a href="bean-validation">Bean Validation Plugin</a></td> + <td>deprecated since 6.0.0, use <a href="bean-validation">Bean Validation Plugin</a></td> </tr> <tr> <td><a href="osgi">OSGi Plugin</a></td> <td>2.1.7+</td> - <td>deprecated since 2.6</td> + <td>deprecated since 6.0.0</td> </tr> <tr> <td><a href="plexus">Plexus Plugin</a></td> <td> </td> - <td>deprecated since 2.6</td> + <td>deprecated since 6.0.0</td> </tr> <tr> <td><a href="portlet">Portlet Plugin</a></td> <td> </td> - <td>deprecated since 2.6</td> + <td>deprecated since 6.0.0</td> </tr> <tr> <td><a href="portlet-tiles">Portlet Tiles Plugin</a></td> <td>2.3.5+</td> - <td>deprecated since 2.6</td> + <td>deprecated since 6.0.0</td> </tr> <tr> <td><a href="rest">REST Plugin</a></td> @@ -259,7 +259,7 @@ Several plugins are bundled with the framework, and others are available from th <tr> <td><a href="sitemesh">SiteMesh Plugin</a></td> <td> </td> - <td>deprecated since 2.6</td> + <td>deprecated since 6.0.0</td> </tr> <tr> <td><a href="spring">Spring Plugin</a></td> @@ -288,14 +288,15 @@ Several plugins are bundled with the framework, and others are available from th </tr> <tr> <td><a href="velocity">Velocity Plugin</a></td> - <td>< 6.0.0</td> + <td> </td> <td> </td> </tr> </tbody> </table> <blockquote> - <p>For a complete list of bundled and third-party plugins, visit the <a href="http://cwiki.apache.org/S2PLUGINS/Home">Plugin Registry</a>.</p> + <p>For a complete list of bundled and third-party plugins, visit +the <a href="http://cwiki.apache.org/S2PLUGINS/Home">Plugin Registry</a>.</p> </blockquote> </section>