Updates production by Jenkins

Project: http://git-wip-us.apache.org/repos/asf/struts-site/repo
Commit: http://git-wip-us.apache.org/repos/asf/struts-site/commit/2b2ec9b3
Tree: http://git-wip-us.apache.org/repos/asf/struts-site/tree/2b2ec9b3
Diff: http://git-wip-us.apache.org/repos/asf/struts-site/diff/2b2ec9b3

Branch: refs/heads/asf-site
Commit: 2b2ec9b30517d5ab06eb50b11adfca0dbe40b694
Parents: 08f8753
Author: jenkins <bui...@apache.org>
Authored: Thu Sep 21 10:05:37 2017 +0000
Committer: jenkins <bui...@apache.org>
Committed: Thu Sep 21 10:05:37 2017 +0000

----------------------------------------------------------------------
 content/tag-developers/a-tag.html               |  224 +
 .../access-to-valuestack-from-jsps.html         |  322 +
 content/tag-developers/action-tag.html          |  232 +
 .../ajax-and-javascript-recipes.html            | 1162 +++
 content/tag-developers/ajax-tags.html           |  263 +
 content/tag-developers/ajax-theme.html          |  669 ++
 content/tag-developers/append-tag.html          |  209 +
 content/tag-developers/bean-tag.html            |  209 +
 .../cewolf-charts-using-velocity-templates.html |  307 +
 content/tag-developers/css-xhtml-theme.html     |  329 +
 content/tag-developers/date-tag.html            |  203 +
 content/tag-developers/debug-tag.html           |  187 +
 content/tag-developers/else-tag.html            |  212 +
 content/tag-developers/elseif-tag.html          |  212 +
 content/tag-developers/extending-themes.html    |  335 +
 content/tag-developers/form-tags.html           |  481 +
 content/tag-developers/freemarker-tags.html     |  331 +
 content/tag-developers/freemarker.html          |  546 ++
 content/tag-developers/generator-tag.html       |  203 +
 .../tag-developers/generic-tag-reference.html   |  225 +
 content/tag-developers/generic-tags.html        |  194 +
 content/tag-developers/i18n-tag.html            |  212 +
 content/tag-developers/if-tag.html              |  210 +
 content/tag-developers/include-tag.html         |  234 +
 content/tag-developers/index.html               | 8447 ++----------------
 content/tag-developers/iterator-tag.html        |  279 +
 content/tag-developers/jsp-tags.html            |  203 +
 content/tag-developers/jsp.html                 |  280 +
 content/tag-developers/merge-tag.html           |  216 +
 content/tag-developers/ognl-basics.html         |  373 +
 .../ognl-expression-compilation.html            |  519 ++
 content/tag-developers/ognl.html                |  320 +
 content/tag-developers/param-tag.html           |  216 +
 content/tag-developers/property-tag.html        |  216 +
 content/tag-developers/push-tag.html            |  240 +
 .../selecting-template-directory.html           |  244 +
 content/tag-developers/selecting-themes.html    |  245 +
 content/tag-developers/set-tag.html             |  212 +
 content/tag-developers/simple-theme.html        |  224 +
 content/tag-developers/sort-tag.html            |  212 +
 content/tag-developers/struts-tags.html         |  232 +
 content/tag-developers/subset-tag.html          |  223 +
 content/tag-developers/tag-reference.html       |  190 +
 content/tag-developers/tag-syntax.html          |  448 +
 content/tag-developers/template-loading.html    |  337 +
 content/tag-developers/text-tag.html            |  263 +
 .../tag-developers/themes-and-templates.html    |  262 +
 content/tag-developers/ui-tag-reference.html    |  245 +
 content/tag-developers/ui-tags.html             |  230 +
 content/tag-developers/url-tag.html             |  255 +
 content/tag-developers/velocity-tags.html       |  220 +
 content/tag-developers/velocity.html            |  359 +
 content/tag-developers/xhtml-theme.html         |  400 +
 53 files changed, 16224 insertions(+), 7597 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/struts-site/blob/2b2ec9b3/content/tag-developers/a-tag.html
----------------------------------------------------------------------
diff --git a/content/tag-developers/a-tag.html 
b/content/tag-developers/a-tag.html
new file mode 100644
index 0000000..12dfff1
--- /dev/null
+++ b/content/tag-developers/a-tag.html
@@ -0,0 +1,224 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8"/>
+  <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
+  <meta name="Date-Revision-yyyymmdd" content="20140918"/>
+  <meta http-equiv="Content-Language" content="en"/>
+  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+
+  <title>Tag Developers Guide (WIP)</title>
+
+  <link 
href="//fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,700,400italic,600italic,700italic"
 rel="stylesheet" type="text/css">
+  <link 
href="//netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.css" 
rel="stylesheet">
+  <link href="/css/main.css" rel="stylesheet">
+  <link href="/css/custom.css" rel="stylesheet">
+  <link href="/highlighter/github-theme.css" rel="stylesheet">
+
+  <script 
src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
+  <script type="text/javascript" src="/bootstrap/js/bootstrap.js"></script>
+  <script type="text/javascript" src="/js/community.js"></script>
+</head>
+<body>
+
+<a href="http://github.com/apache/struts"; class="github-ribbon">
+  <img style="position: absolute; right: 0; border: 0;" 
src="https://s3.amazonaws.com/github/ribbons/forkme_right_red_aa0000.png"; 
alt="Fork me on GitHub">
+</a>
+
+<header>
+  <nav>
+    <div role="navigation" class="navbar navbar-default navbar-fixed-top">
+      <div class="container">
+        <div class="navbar-header">
+          <button type="button" data-toggle="collapse" 
data-target="#struts-menu" class="navbar-toggle">
+            Menu
+            <span class="sr-only">Toggle navigation</span>
+            <span class="icon-bar"></span>
+            <span class="icon-bar"></span>
+            <span class="icon-bar"></span>
+          </button>
+          <a href="/index.html" class="navbar-brand logo"><img 
src="/img/struts-logo.svg"></a>
+        </div>
+        <div id="struts-menu" class="navbar-collapse collapse">
+          <ul class="nav navbar-nav">
+            <li class="dropdown">
+              <a data-toggle="dropdown" href="#" class="dropdown-toggle">
+                Home<b class="caret"></b>
+              </a>
+              <ul class="dropdown-menu">
+                <li><a href="/index.html">Welcome</a></li>
+                <li><a href="/downloads.html">Downloads</a></li>
+                <li><a href="/announce.html">Announcements</a></li>
+                <li><a href="http://www.apache.org/licenses/";>License</a></li>
+                <li><a 
href="http://apache.org/foundation/thanks.html";>Thanks!</a></li>
+                <li><a 
href="http://apache.org/foundation/sponsorship.html";>Sponsorship</a></li>
+              </ul>
+            </li>
+            <li class="dropdown">
+              <a data-toggle="dropdown" href="#" class="dropdown-toggle">
+                Support<b class="caret"></b>
+              </a>
+              <ul class="dropdown-menu">
+                <li><a href="/mail.html">User Mailing List</a></li>
+                <li><a href="https://issues.apache.org/jira/browse/WW";>Issue 
Tracker</a></li>
+                <li><a href="/security.html">Reporting Security Issues</a></li>
+                <li class="divider"></li>
+                <li><a href="/maven/project-info.html">Project info</a></li>
+                <li><a href="/maven/struts2-core/dependencies.html">Struts 
Core dependencies</a></li>
+                <li><a href="/maven/struts2-plugins/modules.html">Plugin 
dependencies</a></li>
+              </ul>
+            </li>
+            <li class="dropdown">
+              <a data-toggle="dropdown" href="#" class="dropdown-toggle">
+                Documentation<b class="caret"></b>
+              </a>
+              <ul class="dropdown-menu">
+                <li><a href="/birdseye.html">Birds Eye</a></li>
+                <li><a href="/primer.html">Key Technologies</a></li>
+                <li><a href="/kickstart.html">Kickstart FAQ</a></li>
+                <li><a 
href="https://cwiki.apache.org/confluence/display/WW/Home";>Wiki</a></li>
+                <li class="divider"></li>
+                <li><a href="/getting-started/">Getting Started</a></li>
+                <li><a href="/security/">Security Guide</a></li>
+                <li><a href="/core-developers/">Core Developers Guide</a></li>
+                <li><a href="/tag-developers/">Tag Developers Guide</a></li>
+                <li><a href="/maven-archetypes/">Maven Archetypes</a></li>
+                <li><a href="/plugins/">Plugins</a></li>
+                <li class="divider"></li>
+                <li><a href="/maven/struts2-core/apidocs/index.html">Struts 
Core API</a></li>
+                <li><a href="/docs/plugins.html">Plugin APIs</a></li>
+                <li><a href="/docs/tag-reference.html">Tag reference</a></li>
+                <li><a 
href="http://cwiki.apache.org/S2PLUGINS/home.html";>Plugin registry</a></li>
+                <li class="divider"></li>
+                <li><a href="/docs/tutorials.html">Tutorials - 
DEPRECATED</a></li>
+                <li><a href="/docs/faqs.html">FAQs - DEPRECATED</a></li>
+                <li><a href="/docs/guides.html">Guides - DEPRECATED</a></li>
+              </ul>
+            </li>
+            <li class="dropdown">
+              <a data-toggle="dropdown" href="#" class="dropdown-toggle">
+                Contributing<b class="caret"></b>
+              </a>
+              <ul class="dropdown-menu">
+                <li><a href="/youatstruts.html">You at Struts</a></li>
+                <li><a href="/helping.html">How to Help FAQ</a></li>
+                <li><a href="/dev-mail.html">Development Lists</a></li>
+                <li class="divider"></li>
+                <li><a href="/submitting-patches.html">Submitting 
patches</a></li>
+                <li><a href="/builds.html">Source Code</a></li>
+                <li><a href="/coding-standards.html">Coding standards</a></li>
+                <li class="divider"></li>
+                <li><a href="/releases.html">Release Guidelines</a></li>
+                <li><a href="/bylaws.html">PMC Charter</a></li>
+                <li><a href="/volunteers.html">Volunteers</a></li>
+                <li><a 
href="https://git-wip-us.apache.org/repos/asf?p=struts.git";>Source 
Repository</a></li>
+              </ul>
+            </li>
+            <li class="apache"><a href="http://www.apache.org/";><img 
src="/img/apache.png"></a></li>
+          </ul>
+        </div>
+      </div>
+    </div>
+  </nav>
+</header>
+
+
+<article class="container">
+  <section class="col-md-12">
+    <a class="edit-on-gh" 
href="https://github.com/apache/struts-site/edit/master/source/tag-developers/a-tag.md";
 title="Edit this page on GitHub">Edit on GitHub</a>
+    <h1 id="a">a</h1>
+
+<p>Please make sure you have read the <a href="tag-syntax.html">Tag Syntax</a> 
document and understand how tag attribute syntax works.</p>
+
+<h2 id="description">Description</h2>
+
+<div class="highlighter-rouge"><pre class="highlight"><code><span 
class="p">{</span><span 
class="err">snippet:id=javadoc|javadoc=true|url=org.apache.struts2.components.Anchor</span><span
 class="p">}</span><span class="w">
+</span></code></pre>
+</div>
+
+<blockquote>
+  <p>While this tag can be used with the <a href="simple-theme.html">simple 
theme</a>, <a href="xhtml-theme.html">xhtml theme</a>, and others, 
+it is really designed to work best with the <a href="ajax-theme.html">ajax 
theme</a>. We recommend reading the 
+<em>ajax a template</em>  documentation for more details.</p>
+</blockquote>
+
+<h2 id="parameters">Parameters</h2>
+
+<div class="highlighter-rouge"><pre class="highlight"><code><span 
class="p">{</span><span 
class="err">snippet:id=tagattributes|javadoc=false|url=struts2-tags/a.html</span><span
 class="p">}</span><span class="w">
+</span></code></pre>
+</div>
+
+<h2 id="usage">Usage</h2>
+
+<p>To get started, use the <a href="head-tag.htlm">head</a> tag and the <a 
href="ajax-theme.html">ajax theme</a>. See <em>ajax head template</em><br />
+for more information. Then look at the usage details for the <em>ajax a 
template</em> .</p>
+
+<p>If you want to use additional parameters in your s:a the best practice is 
to use a s:url to create your url and then 
+leverage this url into your s:a tag. This is done by creating a s:url and 
specifying an id attribute. like “testUrlId” 
+in this example. Then in the s:a tag reference this id in the href attribute 
via <code class="highlighter-rouge">%{testUrlId}</code></p>
+
+<pre><code class="language-jsp">&lt;s:url var="testUrlId" 
namespace="/subscriber" action="customField" method="delete"&gt;
+    &lt;s:param name="customFieldDefinition.id" value="${id}"/&gt;
+&lt;/s:url&gt;
+&lt;s:a errorText="Sorry your request had an error." preInvokeJS="confirm('Are 
you sure you want to delete this item?')" href="%{testUrlId}"&gt;
+    &lt;img src="&lt;s:url value="/images/delete.gif"/&gt;" border="none"/&gt;
+&lt;/s:a&gt;
+
+&lt;img xsrc="&lt;s:url value="/images/delete.gif"/&gt;" 
border="none"/&gt;&lt;s:a&gt;&lt;img xsrc="&lt;s:url 
value="/images/delete.gif"/&gt;" border="none"/&gt;&lt;/s:a&gt;
+</code></pre>
+
+  </section>
+</article>
+
+
+<footer class="container">
+  <div class="col-md-12">
+    Copyright &copy; 2000-2016 <a href="http://www.apache.org/";>The Apache 
Software Foundation </a>.
+    All Rights Reserved.
+  </div>
+  <div class="col-md-12">
+    Apache Struts, Struts, Apache, the Apache feather logo, and the Apache 
Struts project logos are
+    trademarks of The Apache Software Foundation.
+  </div>
+  <div class="col-md-12">Logo and website design donated by <a 
href="https://softwaremill.com/";>SoftwareMill</a>.</div>
+</footer>
+
+<script>!function (d, s, id) {
+  var js, fjs = d.getElementsByTagName(s)[0];
+  if (!d.getElementById(id)) {
+    js = d.createElement(s);
+    js.id = id;
+    js.src = "//platform.twitter.com/widgets.js";
+    fjs.parentNode.insertBefore(js, fjs);
+  }
+}(document, "script", "twitter-wjs");</script>
+<script src="https://apis.google.com/js/platform.js"; async="async" 
defer="defer"></script>
+
+<div id="fb-root"></div>
+
+<script>(function (d, s, id) {
+  var js, fjs = d.getElementsByTagName(s)[0];
+  if (d.getElementById(id)) return;
+  js = d.createElement(s);
+  js.id = id;
+  js.src = "//connect.facebook.net/en_GB/all.js#xfbml=1";
+  fjs.parentNode.insertBefore(js, fjs);
+}(document, 'script', 'facebook-jssdk'));</script>
+
+
+<script>
+$(function() {
+  return $("h2, h3, h4, h5, h6").each(function(i, el) {
+    var $el, id;
+    $el = $(el);
+    id = $el.attr('id');
+    if (id) {
+      $el.removeAttr('id');
+      return $el.before($("<a />").addClass('anchor').attr('name', id));
+    }
+  });
+});
+</script>
+
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/struts-site/blob/2b2ec9b3/content/tag-developers/access-to-valuestack-from-jsps.html
----------------------------------------------------------------------
diff --git a/content/tag-developers/access-to-valuestack-from-jsps.html 
b/content/tag-developers/access-to-valuestack-from-jsps.html
new file mode 100644
index 0000000..1c3664f
--- /dev/null
+++ b/content/tag-developers/access-to-valuestack-from-jsps.html
@@ -0,0 +1,322 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8"/>
+  <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
+  <meta name="Date-Revision-yyyymmdd" content="20140918"/>
+  <meta http-equiv="Content-Language" content="en"/>
+  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+
+  <title>Tag Developers Guide (WIP)</title>
+
+  <link 
href="//fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,700,400italic,600italic,700italic"
 rel="stylesheet" type="text/css">
+  <link 
href="//netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.css" 
rel="stylesheet">
+  <link href="/css/main.css" rel="stylesheet">
+  <link href="/css/custom.css" rel="stylesheet">
+  <link href="/highlighter/github-theme.css" rel="stylesheet">
+
+  <script 
src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
+  <script type="text/javascript" src="/bootstrap/js/bootstrap.js"></script>
+  <script type="text/javascript" src="/js/community.js"></script>
+</head>
+<body>
+
+<a href="http://github.com/apache/struts"; class="github-ribbon">
+  <img style="position: absolute; right: 0; border: 0;" 
src="https://s3.amazonaws.com/github/ribbons/forkme_right_red_aa0000.png"; 
alt="Fork me on GitHub">
+</a>
+
+<header>
+  <nav>
+    <div role="navigation" class="navbar navbar-default navbar-fixed-top">
+      <div class="container">
+        <div class="navbar-header">
+          <button type="button" data-toggle="collapse" 
data-target="#struts-menu" class="navbar-toggle">
+            Menu
+            <span class="sr-only">Toggle navigation</span>
+            <span class="icon-bar"></span>
+            <span class="icon-bar"></span>
+            <span class="icon-bar"></span>
+          </button>
+          <a href="/index.html" class="navbar-brand logo"><img 
src="/img/struts-logo.svg"></a>
+        </div>
+        <div id="struts-menu" class="navbar-collapse collapse">
+          <ul class="nav navbar-nav">
+            <li class="dropdown">
+              <a data-toggle="dropdown" href="#" class="dropdown-toggle">
+                Home<b class="caret"></b>
+              </a>
+              <ul class="dropdown-menu">
+                <li><a href="/index.html">Welcome</a></li>
+                <li><a href="/downloads.html">Downloads</a></li>
+                <li><a href="/announce.html">Announcements</a></li>
+                <li><a href="http://www.apache.org/licenses/";>License</a></li>
+                <li><a 
href="http://apache.org/foundation/thanks.html";>Thanks!</a></li>
+                <li><a 
href="http://apache.org/foundation/sponsorship.html";>Sponsorship</a></li>
+              </ul>
+            </li>
+            <li class="dropdown">
+              <a data-toggle="dropdown" href="#" class="dropdown-toggle">
+                Support<b class="caret"></b>
+              </a>
+              <ul class="dropdown-menu">
+                <li><a href="/mail.html">User Mailing List</a></li>
+                <li><a href="https://issues.apache.org/jira/browse/WW";>Issue 
Tracker</a></li>
+                <li><a href="/security.html">Reporting Security Issues</a></li>
+                <li class="divider"></li>
+                <li><a href="/maven/project-info.html">Project info</a></li>
+                <li><a href="/maven/struts2-core/dependencies.html">Struts 
Core dependencies</a></li>
+                <li><a href="/maven/struts2-plugins/modules.html">Plugin 
dependencies</a></li>
+              </ul>
+            </li>
+            <li class="dropdown">
+              <a data-toggle="dropdown" href="#" class="dropdown-toggle">
+                Documentation<b class="caret"></b>
+              </a>
+              <ul class="dropdown-menu">
+                <li><a href="/birdseye.html">Birds Eye</a></li>
+                <li><a href="/primer.html">Key Technologies</a></li>
+                <li><a href="/kickstart.html">Kickstart FAQ</a></li>
+                <li><a 
href="https://cwiki.apache.org/confluence/display/WW/Home";>Wiki</a></li>
+                <li class="divider"></li>
+                <li><a href="/getting-started/">Getting Started</a></li>
+                <li><a href="/security/">Security Guide</a></li>
+                <li><a href="/core-developers/">Core Developers Guide</a></li>
+                <li><a href="/tag-developers/">Tag Developers Guide</a></li>
+                <li><a href="/maven-archetypes/">Maven Archetypes</a></li>
+                <li><a href="/plugins/">Plugins</a></li>
+                <li class="divider"></li>
+                <li><a href="/maven/struts2-core/apidocs/index.html">Struts 
Core API</a></li>
+                <li><a href="/docs/plugins.html">Plugin APIs</a></li>
+                <li><a href="/docs/tag-reference.html">Tag reference</a></li>
+                <li><a 
href="http://cwiki.apache.org/S2PLUGINS/home.html";>Plugin registry</a></li>
+                <li class="divider"></li>
+                <li><a href="/docs/tutorials.html">Tutorials - 
DEPRECATED</a></li>
+                <li><a href="/docs/faqs.html">FAQs - DEPRECATED</a></li>
+                <li><a href="/docs/guides.html">Guides - DEPRECATED</a></li>
+              </ul>
+            </li>
+            <li class="dropdown">
+              <a data-toggle="dropdown" href="#" class="dropdown-toggle">
+                Contributing<b class="caret"></b>
+              </a>
+              <ul class="dropdown-menu">
+                <li><a href="/youatstruts.html">You at Struts</a></li>
+                <li><a href="/helping.html">How to Help FAQ</a></li>
+                <li><a href="/dev-mail.html">Development Lists</a></li>
+                <li class="divider"></li>
+                <li><a href="/submitting-patches.html">Submitting 
patches</a></li>
+                <li><a href="/builds.html">Source Code</a></li>
+                <li><a href="/coding-standards.html">Coding standards</a></li>
+                <li class="divider"></li>
+                <li><a href="/releases.html">Release Guidelines</a></li>
+                <li><a href="/bylaws.html">PMC Charter</a></li>
+                <li><a href="/volunteers.html">Volunteers</a></li>
+                <li><a 
href="https://git-wip-us.apache.org/repos/asf?p=struts.git";>Source 
Repository</a></li>
+              </ul>
+            </li>
+            <li class="apache"><a href="http://www.apache.org/";><img 
src="/img/apache.png"></a></li>
+          </ul>
+        </div>
+      </div>
+    </div>
+  </nav>
+</header>
+
+
+<article class="container">
+  <section class="col-md-12">
+    <a class="edit-on-gh" 
href="https://github.com/apache/struts-site/edit/master/source/tag-developers/access-to-valuestack-from-jsps.md";
 title="Edit this page on GitHub">Edit on GitHub</a>
+    <h1 id="access-to-valuestack-from-jsps">Access to ValueStack from JSPs</h1>
+
+<p>To access the ValueStack from third-party JSP taglibs, expose property 
values to JSP using the <code class="highlighter-rouge">&lt;s:set/&gt;</code> 
tag.</p>
+
+<p><strong>Set a request scoped parameter ‘a’ to list of 
integers</strong></p>
+
+<pre><code class="language-jsp">&lt;s:set name="'a'" value="{ 1, 2, 3, 4 }" 
scope="request"/&gt;
+</code></pre>
+
+<p>After setting parameters, third-party JSP taglibs can access variables or 
use JSP 2.0 EL (Expression Language). 
+This is convenient as short hand EL expression syntax <code 
class="highlighter-rouge">${expression}</code> can be used in a text or inside 
of tag attributes:</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>a[0] = ${a[0]}
+
+&lt;sample:tag value="${a[1]}"/&gt;
+</code></pre>
+</div>
+
+<p>In practice, several variables must be exposed to make effective use of 
third party taglibs like <a 
href="http://displaytag.sourceforge.net/11/";>DisplayTag</a>. 
+Unfortunately, this approach leads to a lot of <code 
class="highlighter-rouge">&lt;s:set/&gt;</code> tags.</p>
+
+<blockquote>
+  <p>Unfortunately, it isn’t that simple. we tinkered with <code 
class="highlighter-rouge">JSPFactory.setDefault()</code> to wrap around <code 
class="highlighter-rouge">getPageContext()</code> 
+and create <code class="highlighter-rouge">ExpressionEvaluator</code> that 
would use OGNL. This strategy works in practice, but code generated by Jasper2 
+doesn’t call <code 
class="highlighter-rouge">JSPFactory.getPageContext().getExpressionEvaluator()</code>
 but goes directly to static method that is 
+hardwired to Jakarta Commons-EL implementation.</p>
+</blockquote>
+
+<blockquote>
+  <table>
+    <tbody>
+      <tr>
+        <td>Even if this approach did work, it wouldn’t be <em>clean</em> as 
<code class="highlighter-rouge">JSPFactory.setDefault()</code> should only be 
called by JSP implementation.</td>
+      </tr>
+    </tbody>
+  </table>
+</blockquote>
+
+<p>There is a simple, if not elegant, solution available in JSP 2.0 EL, for 
exposing ValueStack to OGNL. It is possible 
+to create custom functions that can be called from EL expressions. Functions 
have to be ‘public static’ and specified 
+in a TLD file.</p>
+
+<p>To use a function, import the TLD in a JSP file where you’ve want to use 
a function. For example, you could access 
+Action properties by evaluating OGNL expression by a function ‘vs’ (for 
valuestack) in EL.</p>
+
+<pre><code class="language-jsp">&lt;%@ taglib uri="/WEB-INF/tld/wwel.tld" 
prefix="x" %&gt;
+
+a[0] = ${x:vs('a[0]')}
+a[0] * 4 = ${x:vs('a[0] * 4')}
+
+Current action name: ${x:name()}
+Top of ValueStack: ${x:top()}
+</code></pre>
+
+<p>To use this code you’ve got to add <code 
class="highlighter-rouge">wwel.tld</code> and <code 
class="highlighter-rouge">Functions.java</code> to your webapp project.</p>
+
+<blockquote>
+  <p>If someone were interested, it would be helpful for a developer (like 
you!) to define a set of functions that we could 
+include in a future release of the framework.</p>
+</blockquote>
+
+<p><strong>wwel.tld</strong></p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code><span 
class="cp">&lt;?xml version="1.0"?&gt;</span>
+<span class="nt">&lt;taglib</span> <span class="na">xmlns=</span><span 
class="s">"http://java.sun.com/xml/ns/j2ee";</span>
+       <span class="na">xmlns:xsi=</span><span 
class="s">"http://www.w3.org/2001/XMLSchema-instance";</span>
+       <span class="na">xsi:schemaLocation=</span><span 
class="s">"http://java.sun.com/xml/ns/j2ee 
http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd";</span>
+       <span class="na">version=</span><span class="s">"2.0"</span><span 
class="nt">&gt;</span>
+
+<span class="nt">&lt;description&gt;</span>
+This taglib enables access to the ValueStack
+from JSP 2.0 Expression Language
+<span class="nt">&lt;/description&gt;</span>
+
+<span class="nt">&lt;tlib-version&gt;</span>1.0<span 
class="nt">&lt;/tlib-version&gt;</span>
+
+<span class="nt">&lt;short-name&gt;</span>wwel<span 
class="nt">&lt;/short-name&gt;</span>
+
+<span class="nt">&lt;function&gt;</span>
+       <span class="nt">&lt;name&gt;</span>vs<span 
class="nt">&lt;/name&gt;</span>
+       <span 
class="nt">&lt;function-class&gt;</span>com.nmote.wwel.Functions<span 
class="nt">&lt;/function-class&gt;</span>
+       <span class="nt">&lt;function-signature&gt;</span>
+               java.lang.Object findOnValueStack(java.lang.String)
+       <span class="nt">&lt;/function-signature&gt;</span>
+<span class="nt">&lt;/function&gt;</span>
+
+<span class="nt">&lt;function&gt;</span>
+       <span class="nt">&lt;name&gt;</span>name<span 
class="nt">&lt;/name&gt;</span>
+       <span 
class="nt">&lt;function-class&gt;</span>com.nmote.wwel.Functions<span 
class="nt">&lt;/function-class&gt;</span>
+       <span class="nt">&lt;function-signature&gt;</span>
+               java.lang.Object getActionName()
+       <span class="nt">&lt;/function-signature&gt;</span>
+<span class="nt">&lt;/function&gt;</span>
+
+<span class="nt">&lt;function&gt;</span>
+       <span class="nt">&lt;name&gt;</span>top<span 
class="nt">&lt;/name&gt;</span>
+       <span 
class="nt">&lt;function-class&gt;</span>com.nmote.wwel.Functions<span 
class="nt">&lt;/function-class&gt;</span>
+       <span class="nt">&lt;function-signature&gt;</span>
+               java.lang.Object getTopOfValueStack()
+       <span class="nt">&lt;/function-signature&gt;</span>
+<span class="nt">&lt;/function&gt;</span>
+
+<span class="nt">&lt;/taglib&gt;</span>
+</code></pre>
+</div>
+
+<p><strong>Functions.java</strong></p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code><span 
class="kn">package</span> <span class="n">com</span><span 
class="o">.</span><span class="na">nmote</span><span class="o">.</span><span 
class="na">wwel</span><span class="o">;</span>
+
+<span class="kn">import</span> <span 
class="nn">com.opensymphony.xwork.ActionContext</span><span class="o">;</span>
+
+<span class="cm">/**
+ * Utility functions for accessing value stack and action context
+ * from JSP 2.0 EL taglibs.
+ */</span>
+<span class="kd">public</span> <span class="kd">class</span> <span 
class="nc">Functions</span> <span class="o">{</span>
+
+       <span class="kd">public</span> <span class="kd">static</span> <span 
class="n">Object</span> <span class="n">findOnValueStack</span><span 
class="o">(</span><span class="n">String</span> <span 
class="n">expr</span><span class="o">)</span> <span class="o">{</span>
+               <span class="n">ActionContext</span> <span class="n">a</span> 
<span class="o">=</span> <span class="n">ActionContext</span><span 
class="o">.</span><span class="na">getContext</span><span class="o">();</span>
+               <span class="n">Object</span> <span class="n">value</span> 
<span class="o">=</span> <span class="n">a</span><span class="o">.</span><span 
class="na">getValueStack</span><span class="o">().</span><span 
class="na">findValue</span><span class="o">(</span><span 
class="n">expr</span><span class="o">);</span>
+               <span class="k">return</span> <span class="n">value</span><span 
class="o">;</span>
+       <span class="o">}</span>
+
+       <span class="kd">public</span> <span class="kd">static</span> <span 
class="n">Object</span> <span class="n">getTopOfValueStack</span><span 
class="o">()</span> <span class="o">{</span>
+               <span class="n">ActionContext</span> <span class="n">a</span> 
<span class="o">=</span> <span class="n">ActionContext</span><span 
class="o">.</span><span class="na">getContext</span><span class="o">();</span>
+               <span class="n">Object</span> <span class="n">value</span> 
<span class="o">=</span> <span class="n">a</span><span class="o">.</span><span 
class="na">getValueStack</span><span class="o">().</span><span 
class="na">peek</span><span class="o">();</span>
+               <span class="k">return</span> <span class="n">value</span><span 
class="o">;</span>
+       <span class="o">}</span>
+
+       <span class="kd">public</span> <span class="kd">static</span> <span 
class="n">Object</span> <span class="n">getActionName</span><span 
class="o">()</span> <span class="o">{</span>
+               <span class="n">ActionContext</span> <span class="n">a</span> 
<span class="o">=</span> <span class="n">ActionContext</span><span 
class="o">.</span><span class="na">getContext</span><span class="o">();</span>
+               <span class="n">Object</span> <span class="n">value</span> 
<span class="o">=</span> <span class="n">a</span><span class="o">.</span><span 
class="na">getName</span><span class="o">();</span>
+               <span class="k">return</span> <span class="n">value</span><span 
class="o">;</span>
+       <span class="o">}</span>
+<span class="o">}</span>
+</code></pre>
+</div>
+
+  </section>
+</article>
+
+
+<footer class="container">
+  <div class="col-md-12">
+    Copyright &copy; 2000-2016 <a href="http://www.apache.org/";>The Apache 
Software Foundation </a>.
+    All Rights Reserved.
+  </div>
+  <div class="col-md-12">
+    Apache Struts, Struts, Apache, the Apache feather logo, and the Apache 
Struts project logos are
+    trademarks of The Apache Software Foundation.
+  </div>
+  <div class="col-md-12">Logo and website design donated by <a 
href="https://softwaremill.com/";>SoftwareMill</a>.</div>
+</footer>
+
+<script>!function (d, s, id) {
+  var js, fjs = d.getElementsByTagName(s)[0];
+  if (!d.getElementById(id)) {
+    js = d.createElement(s);
+    js.id = id;
+    js.src = "//platform.twitter.com/widgets.js";
+    fjs.parentNode.insertBefore(js, fjs);
+  }
+}(document, "script", "twitter-wjs");</script>
+<script src="https://apis.google.com/js/platform.js"; async="async" 
defer="defer"></script>
+
+<div id="fb-root"></div>
+
+<script>(function (d, s, id) {
+  var js, fjs = d.getElementsByTagName(s)[0];
+  if (d.getElementById(id)) return;
+  js = d.createElement(s);
+  js.id = id;
+  js.src = "//connect.facebook.net/en_GB/all.js#xfbml=1";
+  fjs.parentNode.insertBefore(js, fjs);
+}(document, 'script', 'facebook-jssdk'));</script>
+
+
+<script>
+$(function() {
+  return $("h2, h3, h4, h5, h6").each(function(i, el) {
+    var $el, id;
+    $el = $(el);
+    id = $el.attr('id');
+    if (id) {
+      $el.removeAttr('id');
+      return $el.before($("<a />").addClass('anchor').attr('name', id));
+    }
+  });
+});
+</script>
+
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/struts-site/blob/2b2ec9b3/content/tag-developers/action-tag.html
----------------------------------------------------------------------
diff --git a/content/tag-developers/action-tag.html 
b/content/tag-developers/action-tag.html
new file mode 100644
index 0000000..8f69cbc
--- /dev/null
+++ b/content/tag-developers/action-tag.html
@@ -0,0 +1,232 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8"/>
+  <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
+  <meta name="Date-Revision-yyyymmdd" content="20140918"/>
+  <meta http-equiv="Content-Language" content="en"/>
+  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+
+  <title>Tag Developers Guide (WIP)</title>
+
+  <link 
href="//fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,700,400italic,600italic,700italic"
 rel="stylesheet" type="text/css">
+  <link 
href="//netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.css" 
rel="stylesheet">
+  <link href="/css/main.css" rel="stylesheet">
+  <link href="/css/custom.css" rel="stylesheet">
+  <link href="/highlighter/github-theme.css" rel="stylesheet">
+
+  <script 
src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
+  <script type="text/javascript" src="/bootstrap/js/bootstrap.js"></script>
+  <script type="text/javascript" src="/js/community.js"></script>
+</head>
+<body>
+
+<a href="http://github.com/apache/struts"; class="github-ribbon">
+  <img style="position: absolute; right: 0; border: 0;" 
src="https://s3.amazonaws.com/github/ribbons/forkme_right_red_aa0000.png"; 
alt="Fork me on GitHub">
+</a>
+
+<header>
+  <nav>
+    <div role="navigation" class="navbar navbar-default navbar-fixed-top">
+      <div class="container">
+        <div class="navbar-header">
+          <button type="button" data-toggle="collapse" 
data-target="#struts-menu" class="navbar-toggle">
+            Menu
+            <span class="sr-only">Toggle navigation</span>
+            <span class="icon-bar"></span>
+            <span class="icon-bar"></span>
+            <span class="icon-bar"></span>
+          </button>
+          <a href="/index.html" class="navbar-brand logo"><img 
src="/img/struts-logo.svg"></a>
+        </div>
+        <div id="struts-menu" class="navbar-collapse collapse">
+          <ul class="nav navbar-nav">
+            <li class="dropdown">
+              <a data-toggle="dropdown" href="#" class="dropdown-toggle">
+                Home<b class="caret"></b>
+              </a>
+              <ul class="dropdown-menu">
+                <li><a href="/index.html">Welcome</a></li>
+                <li><a href="/downloads.html">Downloads</a></li>
+                <li><a href="/announce.html">Announcements</a></li>
+                <li><a href="http://www.apache.org/licenses/";>License</a></li>
+                <li><a 
href="http://apache.org/foundation/thanks.html";>Thanks!</a></li>
+                <li><a 
href="http://apache.org/foundation/sponsorship.html";>Sponsorship</a></li>
+              </ul>
+            </li>
+            <li class="dropdown">
+              <a data-toggle="dropdown" href="#" class="dropdown-toggle">
+                Support<b class="caret"></b>
+              </a>
+              <ul class="dropdown-menu">
+                <li><a href="/mail.html">User Mailing List</a></li>
+                <li><a href="https://issues.apache.org/jira/browse/WW";>Issue 
Tracker</a></li>
+                <li><a href="/security.html">Reporting Security Issues</a></li>
+                <li class="divider"></li>
+                <li><a href="/maven/project-info.html">Project info</a></li>
+                <li><a href="/maven/struts2-core/dependencies.html">Struts 
Core dependencies</a></li>
+                <li><a href="/maven/struts2-plugins/modules.html">Plugin 
dependencies</a></li>
+              </ul>
+            </li>
+            <li class="dropdown">
+              <a data-toggle="dropdown" href="#" class="dropdown-toggle">
+                Documentation<b class="caret"></b>
+              </a>
+              <ul class="dropdown-menu">
+                <li><a href="/birdseye.html">Birds Eye</a></li>
+                <li><a href="/primer.html">Key Technologies</a></li>
+                <li><a href="/kickstart.html">Kickstart FAQ</a></li>
+                <li><a 
href="https://cwiki.apache.org/confluence/display/WW/Home";>Wiki</a></li>
+                <li class="divider"></li>
+                <li><a href="/getting-started/">Getting Started</a></li>
+                <li><a href="/security/">Security Guide</a></li>
+                <li><a href="/core-developers/">Core Developers Guide</a></li>
+                <li><a href="/tag-developers/">Tag Developers Guide</a></li>
+                <li><a href="/maven-archetypes/">Maven Archetypes</a></li>
+                <li><a href="/plugins/">Plugins</a></li>
+                <li class="divider"></li>
+                <li><a href="/maven/struts2-core/apidocs/index.html">Struts 
Core API</a></li>
+                <li><a href="/docs/plugins.html">Plugin APIs</a></li>
+                <li><a href="/docs/tag-reference.html">Tag reference</a></li>
+                <li><a 
href="http://cwiki.apache.org/S2PLUGINS/home.html";>Plugin registry</a></li>
+                <li class="divider"></li>
+                <li><a href="/docs/tutorials.html">Tutorials - 
DEPRECATED</a></li>
+                <li><a href="/docs/faqs.html">FAQs - DEPRECATED</a></li>
+                <li><a href="/docs/guides.html">Guides - DEPRECATED</a></li>
+              </ul>
+            </li>
+            <li class="dropdown">
+              <a data-toggle="dropdown" href="#" class="dropdown-toggle">
+                Contributing<b class="caret"></b>
+              </a>
+              <ul class="dropdown-menu">
+                <li><a href="/youatstruts.html">You at Struts</a></li>
+                <li><a href="/helping.html">How to Help FAQ</a></li>
+                <li><a href="/dev-mail.html">Development Lists</a></li>
+                <li class="divider"></li>
+                <li><a href="/submitting-patches.html">Submitting 
patches</a></li>
+                <li><a href="/builds.html">Source Code</a></li>
+                <li><a href="/coding-standards.html">Coding standards</a></li>
+                <li class="divider"></li>
+                <li><a href="/releases.html">Release Guidelines</a></li>
+                <li><a href="/bylaws.html">PMC Charter</a></li>
+                <li><a href="/volunteers.html">Volunteers</a></li>
+                <li><a 
href="https://git-wip-us.apache.org/repos/asf?p=struts.git";>Source 
Repository</a></li>
+              </ul>
+            </li>
+            <li class="apache"><a href="http://www.apache.org/";><img 
src="/img/apache.png"></a></li>
+          </ul>
+        </div>
+      </div>
+    </div>
+  </nav>
+</header>
+
+
+<article class="container">
+  <section class="col-md-12">
+    <a class="edit-on-gh" 
href="https://github.com/apache/struts-site/edit/master/source/tag-developers/action-tag.md";
 title="Edit this page on GitHub">Edit on GitHub</a>
+    <h1 id="action">action</h1>
+
+<p>Please make sure you have read the <a href="tag-syntax.html">Tag Syntax</a> 
document and understand how tag attribute syntax works.</p>
+
+<h2 id="description">Description</h2>
+
+<div class="highlighter-rouge"><pre class="highlight"><code><span 
class="p">{</span><span 
class="err">snippet:id=javadoc|javadoc=true|url=org.apache.struts2.components.ActionComponent</span><span
 class="p">}</span><span class="w">
+</span></code></pre>
+</div>
+
+<p>Parameters can be passed to the action using nested <a 
href="param-tag.html">param</a> tags.</p>
+
+<h2 id="placement-in-context">Placement in context</h2>
+
+<p>The action will not be published to the context until the whole tag is 
evaluated, meaning that inside the body of the tag, 
+the action cannot be accessed, For example:</p>
+
+<pre><code class="language-jsp">&lt;s:action var="myAction" name="MyAction" 
namespace="/"&gt;
+    Is "myAction" null inside the tag? &lt;s:property value="#myAction == 
null" /&gt;
+&lt;/s:action&gt;
+    Is "myAction" null outside the tag? &lt;s:property value="#myAction == 
null" /&gt;
+</code></pre>
+
+<p>Will print:</p>
+
+<p>Is “myAction” null inside the tag? true</p>
+
+<p>Is “myAction” null outside the tag? false</p>
+
+<h2 id="parameters">Parameters</h2>
+
+<div class="highlighter-rouge"><pre class="highlight"><code><span 
class="p">{</span><span 
class="err">snippet:id=tagattributes|javadoc=false|url=struts2-tags/action.html</span><span
 class="p">}</span><span class="w">
+</span></code></pre>
+</div>
+
+<h2 id="examples">Examples</h2>
+
+<div class="highlighter-rouge"><pre class="highlight"><code><span 
class="p">{</span><span 
class="err">snippet:id=javacode|javadoc=true|lang=java|url=org.apache.struts2.components.ActionComponent</span><span
 class="p">}</span><span class="w">
+</span></code></pre>
+</div>
+
+<div class="highlighter-rouge"><pre class="highlight"><code><span 
class="p">{</span><span 
class="err">snippet:id=strutsxml|javadoc=true|lang=xml|url=org.apache.struts2.components.ActionComponent</span><span
 class="p">}</span><span class="w">
+</span></code></pre>
+</div>
+
+<div class="highlighter-rouge"><pre class="highlight"><code><span 
class="p">{</span><span 
class="err">snippet:id=example|javadoc=true|lang=xml|url=org.apache.struts2.components.ActionComponent</span><span
 class="p">}</span><span class="w">
+</span></code></pre>
+</div>
+
+  </section>
+</article>
+
+
+<footer class="container">
+  <div class="col-md-12">
+    Copyright &copy; 2000-2016 <a href="http://www.apache.org/";>The Apache 
Software Foundation </a>.
+    All Rights Reserved.
+  </div>
+  <div class="col-md-12">
+    Apache Struts, Struts, Apache, the Apache feather logo, and the Apache 
Struts project logos are
+    trademarks of The Apache Software Foundation.
+  </div>
+  <div class="col-md-12">Logo and website design donated by <a 
href="https://softwaremill.com/";>SoftwareMill</a>.</div>
+</footer>
+
+<script>!function (d, s, id) {
+  var js, fjs = d.getElementsByTagName(s)[0];
+  if (!d.getElementById(id)) {
+    js = d.createElement(s);
+    js.id = id;
+    js.src = "//platform.twitter.com/widgets.js";
+    fjs.parentNode.insertBefore(js, fjs);
+  }
+}(document, "script", "twitter-wjs");</script>
+<script src="https://apis.google.com/js/platform.js"; async="async" 
defer="defer"></script>
+
+<div id="fb-root"></div>
+
+<script>(function (d, s, id) {
+  var js, fjs = d.getElementsByTagName(s)[0];
+  if (d.getElementById(id)) return;
+  js = d.createElement(s);
+  js.id = id;
+  js.src = "//connect.facebook.net/en_GB/all.js#xfbml=1";
+  fjs.parentNode.insertBefore(js, fjs);
+}(document, 'script', 'facebook-jssdk'));</script>
+
+
+<script>
+$(function() {
+  return $("h2, h3, h4, h5, h6").each(function(i, el) {
+    var $el, id;
+    $el = $(el);
+    id = $el.attr('id');
+    if (id) {
+      $el.removeAttr('id');
+      return $el.before($("<a />").addClass('anchor').attr('name', id));
+    }
+  });
+});
+</script>
+
+</body>
+</html>

Reply via email to