You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@struts.apache.org by gi...@apache.org on 2017/09/21 10:05:49 UTC
[11/11] struts-site git commit: Updates production by Jenkins
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 <bu...@apache.org>
Authored: Thu Sep 21 10:05:37 2017 +0000
Committer: jenkins <bu...@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"><s:url var="testUrlId" namespace="/subscriber" action="customField" method="delete">
+ <s:param name="customFieldDefinition.id" value="${id}"/>
+</s:url>
+<s:a errorText="Sorry your request had an error." preInvokeJS="confirm('Are you sure you want to delete this item?')" href="%{testUrlId}">
+ <img src="<s:url value="/images/delete.gif"/>" border="none"/>
+</s:a>
+
+<img xsrc="<s:url value="/images/delete.gif"/>" border="none"/><s:a><img xsrc="<s:url value="/images/delete.gif"/>" border="none"/></s:a>
+</code></pre>
+
+ </section>
+</article>
+
+
+<footer class="container">
+ <div class="col-md-12">
+ Copyright © 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"><s:set/></code> tag.</p>
+
+<p><strong>Set a request scoped parameter ‘a’ to list of integers</strong></p>
+
+<pre><code class="language-jsp"><s:set name="'a'" value="{ 1, 2, 3, 4 }" scope="request"/>
+</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]}
+
+<sample:tag value="${a[1]}"/>
+</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"><s:set/></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"><%@ taglib uri="/WEB-INF/tld/wwel.tld" prefix="x" %>
+
+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"><?xml version="1.0"?></span>
+<span class="nt"><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">></span>
+
+<span class="nt"><description></span>
+This taglib enables access to the ValueStack
+from JSP 2.0 Expression Language
+<span class="nt"></description></span>
+
+<span class="nt"><tlib-version></span>1.0<span class="nt"></tlib-version></span>
+
+<span class="nt"><short-name></span>wwel<span class="nt"></short-name></span>
+
+<span class="nt"><function></span>
+ <span class="nt"><name></span>vs<span class="nt"></name></span>
+ <span class="nt"><function-class></span>com.nmote.wwel.Functions<span class="nt"></function-class></span>
+ <span class="nt"><function-signature></span>
+ java.lang.Object findOnValueStack(java.lang.String)
+ <span class="nt"></function-signature></span>
+<span class="nt"></function></span>
+
+<span class="nt"><function></span>
+ <span class="nt"><name></span>name<span class="nt"></name></span>
+ <span class="nt"><function-class></span>com.nmote.wwel.Functions<span class="nt"></function-class></span>
+ <span class="nt"><function-signature></span>
+ java.lang.Object getActionName()
+ <span class="nt"></function-signature></span>
+<span class="nt"></function></span>
+
+<span class="nt"><function></span>
+ <span class="nt"><name></span>top<span class="nt"></name></span>
+ <span class="nt"><function-class></span>com.nmote.wwel.Functions<span class="nt"></function-class></span>
+ <span class="nt"><function-signature></span>
+ java.lang.Object getTopOfValueStack()
+ <span class="nt"></function-signature></span>
+<span class="nt"></function></span>
+
+<span class="nt"></taglib></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 © 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"><s:action var="myAction" name="MyAction" namespace="/">
+ Is "myAction" null inside the tag? <s:property value="#myAction == null" />
+</s:action>
+ Is "myAction" null outside the tag? <s:property value="#myAction == null" />
+</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 © 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>