You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@struts.apache.org by lu...@apache.org on 2014/03/06 22:36:21 UTC

[11/20] Moves showcase related JSPs under WEB-INF

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/jsf/employee/edit.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/jsf/employee/edit.jsp b/apps/showcase/src/main/webapp/WEB-INF/jsf/employee/edit.jsp
new file mode 100644
index 0000000..6f1d219
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/jsf/employee/edit.jsp
@@ -0,0 +1,113 @@
+<%--
+
+ Copyright 2006 The Apache Software Foundation.
+ 
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+ 
+      http://www.apache.org/licenses/LICENSE-2.0
+ 
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ $Id$
+
+--%>
+
+<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
+<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
+
+<f:view>
+	<html>
+	<head>
+		<title>Struts2 Showcase - JSF Integration - Modify Employee</title>
+		<s:head/>
+	</head>
+
+	<body>
+
+	<div class="page-header">
+		<h1>Modify Employee</h1>
+	</div>
+
+	<div class="container-fluid">
+		<div class="row-fluid">
+			<div class="span12">
+
+				<h:form>
+					<h:inputHidden value="#{action.currentEmployee.empId}"/>
+					<h:panelGrid columns="3">
+						<h:outputText value="Employee Id:"/>
+						<h:inputText id="id" size="5" value="#{action.currentEmployee.empId}" required="true"/>
+						<h:message for="id"/>
+
+						<h:outputText value="First Name:"/>
+						<h:inputText id="firstName" size="30" value="#{action.currentEmployee.firstName}"
+						             required="true">
+							<f:validateLength minimum="2" maximum="30"/>
+						</h:inputText>
+						<h:message for="firstName"/>
+
+						<h:outputText value="Last Name:"/>
+						<h:inputText id="lastName" size="30" value="#{action.currentEmployee.lastName}" required="true">
+							<f:validateLength minimum="2" maximum="30"/>
+						</h:inputText>
+						<h:message for="lastName"/>
+
+						<h:outputText value="Salary:"/>
+						<h:inputText id="salary" size="10" value="#{action.currentEmployee.salary}"/>
+						<h:message for="salary"/>
+
+						<h:outputText value="Married:"/>
+						<h:selectBooleanCheckbox id="married" value="#{action.currentEmployee.married}"/>
+						<h:message for="married"/>
+
+						<h:outputText value="Position:"/>
+						<h:selectOneMenu id="position" value="#{action.currentEmployee.position}">
+							<f:selectItems value="#{action.availablePositionsAsMap}"/>
+						</h:selectOneMenu>
+						<h:message for="position"/>
+
+						<h:outputText value="Main Skill:"/>
+						<h:selectOneMenu id="mainSkill" value="#{action.currentEmployee.mainSkill.name}">
+							<f:selectItems value="#{action.availableSkills}"/>
+						</h:selectOneMenu>
+						<h:message for="mainSkill"/>
+
+						<h:outputText value="Other Skills:"/>
+						<h:selectManyListbox id="otherSkills" value="#{action.selectedSkills}">
+							<f:selectItems value="#{action.availableSkills}"/>
+						</h:selectManyListbox>
+						<h:message for="otherSkills"/>
+
+						<h:outputText value="Password:"/>
+						<h:inputSecret id="password" value="#{action.currentEmployee.password}"/>
+						<h:message for="password"/>
+
+						<h:outputText value="Level:"/>
+						<h:selectOneRadio id="level" value="#{action.currentEmployee.level}">
+							<f:selectItems value="#{action.availableLevelsAsMap}"/>
+						</h:selectOneRadio>
+						<h:message for="level"/>
+
+						<h:outputText value="Comment:"/>
+						<h:inputTextarea id="comment" value="#{action.currentEmployee.comment}" cols="50" rows="3"/>
+						<h:message for="comment"/>
+					</h:panelGrid>
+
+					<h:commandButton value="Save" action="#{action.save}" styleClass="btn btn-primary"/>
+					<br/><br/>
+					<h:outputLink value="list.action" styleClass="btn btn-info">
+						<h:outputText value="Back"/>
+					</h:outputLink>
+				</h:form>
+			</div>
+		</div>
+	</div>
+	</body>
+	</html>
+</f:view>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/jsf/employee/list.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/jsf/employee/list.jsp b/apps/showcase/src/main/webapp/WEB-INF/jsf/employee/list.jsp
new file mode 100644
index 0000000..403c92e
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/jsf/employee/list.jsp
@@ -0,0 +1,75 @@
+<%--
+
+ Copyright 2006 The Apache Software Foundation.
+ 
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+ 
+      http://www.apache.org/licenses/LICENSE-2.0
+ 
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ $Id$
+
+--%>
+
+<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
+<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
+
+<f:view>
+	<html>
+	<head>
+		<title>Struts2 Showcase - JSF Integration - Available Employees</title>
+		<s:head/>
+	</head>
+
+	<body>
+
+	<div class="page-header">
+		<h1>Available Employees</h1>
+	</div>
+
+	<div class="container-fluid">
+		<div class="row-fluid">
+			<div class="span12">
+
+				<h:dataTable value="#{action.availableItems}" var="e" styleClass="table table-striped table-bordered table-hover table-condensed">
+					<h:column>
+						<f:facet name="header">
+							<h:outputText value="Id"/>
+						</f:facet>
+						<h:outputLink value="edit.action">
+							<f:param name="empId" value="#{e.empId}"/>
+							<h:outputText value="#{e.empId}"/>
+						</h:outputLink>
+					</h:column>
+					<h:column>
+						<f:facet name="header">
+							<h:outputText value="First Name"/>
+						</f:facet>
+						<h:outputText value="#{e.firstName}"/>
+					</h:column>
+					<h:column>
+						<f:facet name="header">
+							<h:outputText value="Last Name"/>
+						</f:facet>
+						<h:outputText value="#{e.lastName}"/>
+					</h:column>
+				</h:dataTable>
+
+				<p>
+					<h:outputLink value="edit.action" styleClass="btn btn-primary">
+						<h:outputText value="Create new Employee"/>
+					</h:outputLink>
+				</p>
+			</div>
+		</div>
+	</div>
+	</body>
+	</html>
+</f:view>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/jsf/index.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/jsf/index.jsp b/apps/showcase/src/main/webapp/WEB-INF/jsf/index.jsp
new file mode 100644
index 0000000..9685a84
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/jsf/index.jsp
@@ -0,0 +1,35 @@
+<%@ taglib prefix="s" uri="/struts-tags" %>
+<html>
+<head>
+	<title>Struts2 Showcase - JSF Integration</title>
+	<s:head/>
+</head>
+
+<body>
+
+<div class="page-header">
+	<h1>JavaServer Faces Integration</h1>
+</div>
+
+<div class="container-fluid">
+	<div class="row-fluid">
+		<div class="span12">
+
+			<p>
+				The following pages show how Struts and JSF components can work together,
+				each doing what they do best.
+			</p>
+
+			<p>
+			<ul>
+				<li><s:url var="url" namespace="/jsf/employee" action="list"/><s:a
+						href="%{url}">List available Employees</s:a></li>
+				<li><s:url var="url" namespace="/jsf/employee" action="edit"/><s:a
+						href="%{url}">Create/Edit Employee</s:a></li>
+			</ul>
+			</p>
+		</div>
+	</div>
+</div>
+</body>
+</html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/modelDriven/modelDriven.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/modelDriven/modelDriven.jsp b/apps/showcase/src/main/webapp/WEB-INF/modelDriven/modelDriven.jsp
new file mode 100644
index 0000000..d51533e
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/modelDriven/modelDriven.jsp
@@ -0,0 +1,42 @@
+<%@ taglib prefix="s" uri="/struts-tags" %>
+<html>
+<head>
+	<title>Struts2 Showcase - Model Driven Example</title>
+	<s:head/>
+</head>
+
+<body>
+
+<div class="page-header">
+	<h1>Model Driven Example</h1>
+</div>
+
+<div class="container-fluid">
+	<div class="row-fluid">
+		<div class="span12">
+
+			<s:form action="modelDrivenResult" method="POST" namespace="/modelDriven">
+
+				<s:textfield
+						label="Gangster Name"
+						name="name"/>
+				<s:textfield
+						label="Gangster Age"
+						name="age"/>
+				<s:checkbox
+						label="Gangster Busted Before"
+						name="bustedBefore"/>
+				<s:textarea
+						cols="30"
+						rows="5"
+						label="Gangster Description"
+						name="description"/>
+				<s:submit cssClass="btn btn-primary"/>
+
+			</s:form>
+
+		</div>
+	</div>
+</div>
+</body>
+</html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/modelDriven/modelDrivenResult.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/modelDriven/modelDrivenResult.jsp b/apps/showcase/src/main/webapp/WEB-INF/modelDriven/modelDrivenResult.jsp
new file mode 100644
index 0000000..d80b966
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/modelDriven/modelDrivenResult.jsp
@@ -0,0 +1,42 @@
+<%@taglib prefix="s" uri="/struts-tags" %>
+<html>
+<head>
+	<title>Struts2 Showcase - Model Driven Example - Result</title>
+	<style type="text/css">
+		.label {
+			background-color: #ffffff;
+			color: #000000;
+			text-shadow: none;
+			font-weight: bold;
+		}
+	</style>
+</head>
+
+<body>
+
+<div class="page-header">
+	<h1>Model Driven Example - Result</h1>
+</div>
+
+<div class="container-fluid">
+	<div class="row-fluid">
+		<div class="span12">
+
+			<s:label
+					label="Gangster Name"
+					name="name"/><br/>
+			<s:label
+					label="Gangster Age"
+					name="age"/><br/>
+			<s:label
+					label="Busted Before"
+					name="bustedBefore"/><br/>
+			<s:label
+					label="Gangster Description"
+					name="description"/><br/>
+
+		</div>
+	</div>
+</div>
+</body>
+</html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/person/edit-person.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/person/edit-person.jsp b/apps/showcase/src/main/webapp/WEB-INF/person/edit-person.jsp
new file mode 100644
index 0000000..a7b0d98
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/person/edit-person.jsp
@@ -0,0 +1,53 @@
+<%@taglib prefix="s" uri="/struts-tags" %>
+<html>
+<head>
+	<title>Struts2 Showcase - Person Manager Example</title>
+</head>
+<body>
+<div class="page-header">
+	<h1>Person Manager Example</h1>
+</div>
+
+<div class="container-fluid">
+	<div class="row-fluid">
+		<div class="span3">
+			<ul class="nav nav-tabs nav-stacked">
+				<s:url id="listpeopleurl" action="list-people" namespace="/person" />
+				<li><s:a href="%{listpeopleurl}">List all people</s:a> </li>
+				<s:url id="editpersonurl" action="edit-person" namespace="/person" />
+				<li class="active"><s:a href="%{editpersonurl}">Edit people</s:a></li>
+				<s:url id="newpersonurl" action="new-person" namespace="/person" method="input"/>
+				<li><s:a href="%{newpersonurl}">Create a new person</s:a></li>
+			</ul>
+		</div>
+		<div class="span9">
+			<s:form action="edit-person" theme="simple" validate="false">
+
+				<table class="table table-striped table-bordered table-hover table-condensed">
+					<tr>
+						<th>ID</th>
+						<th>First Name</th>
+						<th>Last Name</th>
+					</tr>
+					<s:iterator var="p" value="persons">
+						<tr>
+							<td>
+								<s:property value="%{id}" />
+							</td>
+							<td>
+								<s:textfield label="First Name" name="persons(%{id}).name" value="%{name}" theme="simple" />
+							</td>
+							<td>
+								<s:textfield label="Last Name" name="persons(%{id}).lastName" value="%{lastName}" theme="simple"/>
+							</td>
+						</tr>
+					</s:iterator>
+				</table>
+
+				<s:submit method="save" value="Save all persons" cssClass="btn btn-primary"/>
+			</s:form>
+		</div>
+	</div>
+</div>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/person/index.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/person/index.jsp b/apps/showcase/src/main/webapp/WEB-INF/person/index.jsp
new file mode 100644
index 0000000..f7db6cf
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/person/index.jsp
@@ -0,0 +1 @@
+<% response.sendRedirect("list-people.action"); %>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/person/list-people.ftl
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/person/list-people.ftl b/apps/showcase/src/main/webapp/WEB-INF/person/list-people.ftl
new file mode 100644
index 0000000..ac29b17
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/person/list-people.ftl
@@ -0,0 +1,44 @@
+<html>
+<head>
+	<title>Struts2 Showcase - Person Manager Example - All People</title>
+</head>
+<body>
+<div class="page-header">
+	<h1>All People</h1>
+</div>
+
+<div class="container-fluid">
+	<div class="row-fluid">
+		<div class="span3">
+			<ul class="nav nav-tabs nav-stacked">
+				<@s.url id="listpeopleurl" action="list-people" />
+				<li class="active"><@s.a href="%{listpeopleurl}">List all people</...@s.a></li>
+				<@s.url id="editpersonurl" action="edit-person" />
+				<li><@s.a href="%{editpersonurl}">Edit people</...@s.a></li>
+				<@s.url id="newpersonurl" action="new-person" method="input" />
+				<li><@s.a href="%{newpersonurl}">Create a new person</...@s.a></li>
+			</ul>
+		</div>
+		<div class="span9">
+
+			<p>There are ${peopleCount} people...</p>
+
+			<table class="table table-striped table-bordered table-hover table-condensed">
+				<tr>
+					<th>ID</th>
+					<th>Name</th>
+					<th>Last Name</th>
+				</tr>
+			<#list people as person>
+				<tr>
+					<td>${person.id?html}</td>
+					<td>${person.name?html}</td>
+					<td>${person.lastName?html}</td>
+				</tr>
+			</#list>
+			</table>
+		</div>
+	</div>
+</div>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/person/new-person.ftl
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/person/new-person.ftl b/apps/showcase/src/main/webapp/WEB-INF/person/new-person.ftl
new file mode 100644
index 0000000..6e99f07
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/person/new-person.ftl
@@ -0,0 +1,49 @@
+<html>
+<head>
+	<title>Struts2 Showcase - Person Manager Example - New Person</title>
+</head>
+<body>
+<div class="page-header">
+	<h1>New Person</h1>
+</div>
+
+<div class="container-fluid">
+	<div class="row-fluid">
+		<div class="span3">
+			<ul class="nav nav-tabs nav-stacked">
+				<@s.url id="listpeopleurl" action="list-people" />
+				<li><@s.a href="%{listpeopleurl}">List all people</...@s.a></li>
+				<@s.url id="editpersonurl" action="edit-person" />
+				<li><@s.a href="%{editpersonurl}">Edit people</...@s.a></li>
+				<@s.url id="newpersonurl" action="new-person" />
+				<li class="active"><@s.a href="%{newpersonurl}">Create a new person</...@s.a></li>
+			</ul>
+		</div>
+		<div class="span9">
+			<@s.actionerror cssClass="alert alert-error"/>
+			<@s.actionmessage cssClass="alert alert-info"/>
+			<@s.fielderror  cssClass="alert alert-error"/>
+
+			<@s.form action="new-person" theme="simple" cssClass="form-horizontal">
+				<legend>Create a new Person</legend>
+				<div class="control-group">
+					<label class="control-label" for="name">First Name<span class="required">*</span></label>
+					<div class="controls">
+						<@s.textfield id="name" name="person.name" placeholder="First Name"/>
+					</div>
+				</div>
+				<div class="control-group">
+					<label class="control-label" for="lastName">Last Name<span class="required">*</span></label>
+					<div class="controls">
+						<@s.textfield id="lastName" name="person.lastName" placeholder="Last Name"/>
+					</div>
+				</div>
+			    <div class="form-actions">
+				    <@s.submit value="Create person" cssClass="btn btn-primary"/>
+			    </div>
+			</...@s.form>
+		</div>
+	</div>
+</div>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/showcase.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/showcase.jsp b/apps/showcase/src/main/webapp/WEB-INF/showcase.jsp
new file mode 100644
index 0000000..bb23e78
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/showcase.jsp
@@ -0,0 +1,30 @@
+<%-- 
+    showcase.jsp
+    
+    @version $Date$ $Id$
+--%>
+
+<%@ taglib prefix="s" uri="/struts-tags" %>
+<html>
+<head>
+    <title>Struts2 Showcase</title>
+    <s:head theme="simple"/>
+</head>
+
+<body>
+	<div class="container-fluid">
+		<div class="row-fluid">
+			<div class="span12">
+
+				<div class="hero-unit">
+					<h1>Welcome!</h1>
+					<p>The Struts Showcase demonstrates a variety of use cases and tag usages. Essentially, the application exercises various framework features in isolation. The Showcase is not meant as a "best practices" example.</p>
+					<p>For more "by example" solutions, see the <a class="btn btn-primary btn-large">Struts Cookbook &raquo;</a> pages.</p>
+				</div>
+
+			</div>
+		</div>
+	</div>
+
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/actionPrefix/actionPrefix.ftl
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/actionPrefix/actionPrefix.ftl b/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/actionPrefix/actionPrefix.ftl
new file mode 100644
index 0000000..f87b6d4
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/actionPrefix/actionPrefix.ftl
@@ -0,0 +1,25 @@
+<html>
+<head>
+	<title>Struts2 Showcase - Non UI Tags - Action Prefix (Freemarker)</title>
+</head>
+<body>
+<div class="page-header">
+	<h1>Non Ui Tag - Action Prefix (Freemarker)</h1>
+</div>
+
+<div class="container-fluid">
+	<div class="row-fluid">
+		<div class="span12">
+
+			<p>You have come to this page because you used an <strong>action</strong> prefix.<p/>
+
+			<p>The text you've entered is ${text?default('')?html}<p/>
+
+			<@s.a href="javascript:history.back();" cssClass="btn btn-info"><i class="icon icon-arrow-left"></i> Back</...@s.a>
+		</div>
+	</div>
+</div>
+</body>
+</html>
+
+

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/actionPrefix/actionPrefixExample.ftl
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/actionPrefix/actionPrefixExample.ftl b/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/actionPrefix/actionPrefixExample.ftl
new file mode 100644
index 0000000..84d477f
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/actionPrefix/actionPrefixExample.ftl
@@ -0,0 +1,54 @@
+<html>
+<head>
+	<title>Struts2 Showcase - Non UI Tags - Action Prefix (Freemarker)</title>
+</head>
+<body>
+<div class="page-header">
+	<h1>Non Ui Tag - Action Prefix (Freemarker)</h1>
+</div>
+
+<div class="container-fluid">
+	<div class="row-fluid">
+		<div class="span12">
+
+			<b>Action Prefix</b><br/>
+			By clicking on 'action prefix' button, the request will go to the action alias 'actionPrefix'
+			instead of the normal 'submit' action alias. <p/><p/>
+
+			<b>Method Prefix</b><br/>
+			By clicking on the 'method prefix' button, the request will cause Struts to invoke 'submit'
+			action alias's 'alternateMethod' method instead of the default 'execute' method.<p/>
+
+			<b>Redirect Prefix</b><br/>
+			By clicking on the 'redirect prefix' button, the request will get redirected to www.google.com
+			instead<p/>
+
+			<b>Redirect Action Prefix</b><br/>
+			By clicking on the 'redirect-action prefix' button, the request will get redirected to
+			an action alias of 'redirectActionPrefix' instead of 'submit' action alias. Since this is a
+			redirect (a new request is issue from the client), the text entered will be lost.<p/>
+
+
+			<@s.url id="url" action="viewSource" namespace="/tags/non-ui/actionPrefix" />
+			The JSP code can be read <@s.a href="%{#url}">here</...@s.a>.
+
+
+			<@s.form action="submit" namespace="/tags/non-ui/actionPrefix" method="POST">
+
+				<@s.textfield label="Enter Some Text" name="text" />
+
+				<@s.submit action="actionPrefix" value="%{'action prefix'}" cssClass="btn" />
+
+				<@s.submit method="alternateMethod" value="%{'method prefix'}" cssClass="btn" />
+
+				<@s.submit value="Normal Submit" cssClass="btn" />
+
+	            <@s.submit action="redirectActionPrefixAction" value="%{'redirectAction without prefix'}" cssClass="btn" />
+
+	        </...@s.form>
+		</div>
+	</div>
+</div>
+</body>
+</html>
+

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/actionPrefix/methodPrefix.ftl
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/actionPrefix/methodPrefix.ftl b/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/actionPrefix/methodPrefix.ftl
new file mode 100644
index 0000000..836bb22
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/actionPrefix/methodPrefix.ftl
@@ -0,0 +1,25 @@
+<html>
+<head>
+	<title>Struts2 Showcase - Non UI Tags - Action Prefix (Freemarker)</title>
+</head>
+<body>
+<div class="page-header">
+	<h1>Non Ui Tag - Action Prefix (Freemarker)</h1>
+</div>
+
+<div class="container-fluid">
+	<div class="row-fluid">
+		<div class="span12">
+
+			<p>You have come to this page because you used an <strong>method</strong> prefix.<p/>
+	
+			<p>The text you've enter is ${text?default('')?html}<p/>
+
+			<@s.a href="javascript:history.back();" cssClass="btn btn-info"><i class="icon icon-arrow-left"></i> Back</...@s.a>
+		</div>
+	</div>
+</div>
+</body>
+</html>
+
+

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/actionPrefix/normalSubmit.ftl
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/actionPrefix/normalSubmit.ftl b/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/actionPrefix/normalSubmit.ftl
new file mode 100644
index 0000000..e30d88c
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/actionPrefix/normalSubmit.ftl
@@ -0,0 +1,24 @@
+<html>
+<head>
+	<title>Struts2 Showcase - Non UI Tags - Action Prefix (Freemarker)</title>
+</head>
+<body>
+<div class="page-header">
+	<h1>Non Ui Tag - Action Prefix (Freemarker)</h1>
+</div>
+
+<div class="container-fluid">
+	<div class="row-fluid">
+		<div class="span12">
+
+			<p>You have come to this page because you did a normal submit.<p/>
+	
+			<p>The text you've enter is %{text}<p/>
+
+			<@s.a href="javascript:history.back();" cssClass="btn btn-info"><i class="icon icon-arrow-left"></i> Back</...@s.a>
+		</div>
+	</div>
+</div>
+</body>
+</html>
+

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/actionPrefix/redirectActionPrefix.ftl
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/actionPrefix/redirectActionPrefix.ftl b/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/actionPrefix/redirectActionPrefix.ftl
new file mode 100644
index 0000000..f21fc45
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/actionPrefix/redirectActionPrefix.ftl
@@ -0,0 +1,28 @@
+<html>
+<head>
+	<title>Struts2 Showcase - Non UI Tags - Action Prefix (Freemarker)</title>
+</head>
+<body>
+<div class="page-header">
+	<h1>Non Ui Tag - Action Prefix (Freemarker)</h1>
+</div>
+
+<div class="container-fluid">
+	<div class="row-fluid">
+		<div class="span12">
+
+			<p>You have come to this page because you used an 'redirect-action' prefix.<p/>
+	
+			<p>Because this is a <strong>redirect-action</strong>, the text will be lost, due to a redirection
+			implies a new request being issued from the client.<p/>
+
+			The text you've enter is ${text?default('')?html}<p/>
+
+			<@s.a href="javascript:history.back();" cssClass="btn btn-info"><i class="icon icon-arrow-left"></i> Back</...@s.a>
+		</div>
+	</div>
+</div>
+</body>
+</html>
+
+

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/actionTag/includedPage.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/actionTag/includedPage.jsp b/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/actionTag/includedPage.jsp
new file mode 100644
index 0000000..abfa253
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/actionTag/includedPage.jsp
@@ -0,0 +1 @@
+<h2>This is INCLUDED by the action tag</h2>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/actionTag/includedPage2.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/actionTag/includedPage2.jsp b/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/actionTag/includedPage2.jsp
new file mode 100644
index 0000000..6cdc040
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/actionTag/includedPage2.jsp
@@ -0,0 +1,2 @@
+
+<h2>This is INCLUDED by the action tag (Page2)</h2>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/actionTag/includedPage3.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/actionTag/includedPage3.jsp b/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/actionTag/includedPage3.jsp
new file mode 100644
index 0000000..4ebbcc7
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/actionTag/includedPage3.jsp
@@ -0,0 +1,2 @@
+
+<h2>This is INCLUDED by the action tag (Page3)</h2>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/actionTag/showActionTagDemo.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/actionTag/showActionTagDemo.jsp b/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/actionTag/showActionTagDemo.jsp
new file mode 100644
index 0000000..1fb5b44
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/actionTag/showActionTagDemo.jsp
@@ -0,0 +1,52 @@
+<%@taglib prefix="s" uri="/struts-tags" %>
+<html>
+<head>
+	<title>Struts2 Showcase - Non-Ui Tag - Action Tag </title>
+</head>
+<body>
+
+<div class="page-header">
+	<h1>Non-Ui Tag - Action Tag</h1>
+</div>
+
+<div class="container-fluid">
+	<div class="row-fluid">
+		<div class="span12">
+
+			<div class="well">
+				<h2> This is Not - Included by the Action Tag</h2>
+			</div>
+
+
+			<!-- lets include the first page many times -->
+			<div class="well">
+				<s:action name="includePage" namespace="/tags/non-ui/actionTag" executeResult="true" />
+				<s:action name="includePage" namespace="/tags/non-ui/actionTag" executeResult="true" />
+				<s:action name="includePage" namespace="/tags/non-ui/actionTag" executeResult="true" />
+			</div>
+
+
+			<!-- lets include the second page many times -->
+			<div class="well">
+				<s:action name="includePage2" namespace="/tags/non-ui/actionTag" executeResult="true" />
+				<s:action name="includePage2" namespace="/tags/non-ui/actionTag" executeResult="true" />
+				<s:action name="includePage2" namespace="/tags/non-ui/actionTag" executeResult="true" />
+			</div>
+
+
+			<!--  lets include the third page many time -->
+			<div class="well">
+				<s:action name="includePage3" namespace="/tags/non-ui/actionTag" executeResult="true" />
+				<s:action name="includePage3" namespace="/tags/non-ui/actionTag" executeResult="true" />
+				<s:action name="includePage3" namespace="/tags/non-ui/actionTag" executeResult="true" />
+			</div>
+
+
+			<s:url var="url" action="lookAtSource" namespace="/tags/non-ui/actionTag" />
+			<s:a href="%{#url}" cssClass="btn btn-info">Source</s:a>
+		</div>
+	</div>
+</div>
+</body>
+</html>
+

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/date.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/date.jsp b/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/date.jsp
new file mode 100644
index 0000000..8581d8f
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/date.jsp
@@ -0,0 +1,114 @@
+<%@ taglib prefix="s" uri="/struts-tags" %>
+<html>
+<head>
+	<title>Struts2 Showcase - Non UI Tags Example - Date</title>
+</head>
+
+<body>
+<div class="page-header">
+	<h1>Non UI Tags Example - Date</h1>
+</div>
+
+<div class="container-fluid">
+	<div class="row-fluid">
+		<div class="span12">
+
+			<s:action var="myDate" name="date" namespace="/" executeResult="false" />
+
+			<table class="table table-striped table-bordered table-hover table-condensed">
+			    <tr>
+			        <th>Name</th>
+			        <th>Format</th>
+			        <th>Output</th>
+			    </tr>
+			    <tr>
+			        <td><strong>Before date</strong></td>
+			        <td>toString()</td>
+			        <td><s:property value="#myDate.before.toString()"/></td>
+			    </tr>
+			    <tr>
+			        <td><strong>Past date</strong></td>
+			        <td>toString()</td>
+			        <td><s:property value="#myDate.past.toString()"/></td>
+			    </tr>
+			    <tr>
+			        <td><strong>Now date</strong></td>
+			        <td>toString()</td>
+			        <td><s:property value="#myDate.now.toString()"/></td>
+			    </tr>
+			    <tr>
+			        <td><strong>Future date</strong></td>
+			        <td>toString()</td>
+			        <td><s:property value="#myDate.future.toString()"/></td>
+			    </tr>
+			    <tr>
+			        <td><strong>After date</strong></td>
+			        <td>toString()</td>
+			        <td><s:property value="#myDate.after.toString()"/></td>
+			    </tr>
+			    <tr>
+			        <td><strong>Current date</strong></td>
+			        <td>yyyy/MM/dd hh:mm:ss</td>
+			        <td><s:date name="#myDate.now" format="yyyy/MM/dd hh:mm:ss" /></td>
+			    </tr>
+			    <tr>
+			        <td><strong>Current date</strong></td>
+			        <td>dd.MM.yyyy hh:mm:ss</td>
+			        <td><s:date name="#myDate.now" format="dd.MM.yyyy hh:mm:ss" /></td>
+			    </tr>
+			    <tr>
+			        <td><strong>Current time (24h)</strong></td>
+			        <td>HH:mm:ss</td>
+			        <td><s:date name="#myDate.now" format="HH:mm:ss" /></td>
+			    </tr>
+			    <tr>
+			        <td><strong>Before date</strong></td>
+			        <td>MMM, dd yyyy</td>
+			        <td><s:date name="#myDate.before" format="MMM, dd yyyy" /></td>
+			    </tr>
+			    <tr>
+			        <td><strong>Before date</strong></td>
+			        <td>nice</td>
+			        <td><s:date name="#myDate.before" nice="true"/></td>
+			    </tr>
+			    <tr>
+			        <td><strong>After date</strong></td>
+			        <td>dd.MM.yyyy</td>
+			        <td><s:date name="#myDate.after" format="dd.MM.yyyy" /></td>
+			    </tr>
+			    <tr>
+			        <td><strong>After date</strong></td>
+			        <td>nice</td>
+			        <td><s:date name="#myDate.after" nice="true"/></td>
+			    </tr>
+			    <tr>
+			        <td><strong>Past date</strong></td>
+			        <td>dd/MM/yyyy hh:mm</td>
+			        <td><s:date name="#myDate.past" format="dd/MM/yyyy hh:mm"/></td>
+			    </tr>
+			    <tr>
+			        <td><strong>Future date</strong></td>
+			        <td>MM-dd-yy</td>
+			        <td><s:date name="#myDate.past" format="MM-dd-yy"/></td>
+			    </tr>
+			    <tr>
+			        <td><strong>Future date (fallback)</strong></td>
+			        <td>fallback</td>
+			        <td><s:date name="#myDate.future" /></td>
+			    </tr>
+			    <tr>
+			        <td><strong>Past date</strong></td>
+			        <td>nice</td>
+			        <td><s:date name="#myDate.past" nice="true"/></td>
+			    </tr>
+			    <tr>
+			        <td><strong>Future date</strong></td>
+			        <td>nice</td>
+			        <td><s:date name="#myDate.future" nice="true"/></td>
+			    </tr>
+			</table>
+		</div>
+	</div>
+</div>
+</body>
+</html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/debug.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/debug.jsp b/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/debug.jsp
new file mode 100644
index 0000000..26c49a5
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/debug.jsp
@@ -0,0 +1,30 @@
+<%@ taglib prefix="s" uri="/struts-tags" %>
+<html>
+<head>
+	<title>Struts2 Showcase - Non UI Tags Example - Debug</title>
+</head>
+
+<body>
+<div class="page-header">
+	<h1>Debug Tag Usage</h1>
+</div>
+
+<div class="container-fluid">
+	<div class="row-fluid">
+		<div class="span12">
+
+			<p/>
+				This page shows a simple example of using the debug tag.  <br/>
+				Just add <tt style="font-size: 12px; font-weight:bold;color: blue;">&lt;s:debug /&gt;</tt> to your JSP page
+			    and you will see the debug link.
+		    <p/>
+
+			<p>
+			    Just click on the Debug label to see the Struts ValueStack Debug information.
+		    <p/>
+		    <s:debug />
+		</div>
+	</div>
+</div>
+</body>
+</html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/ifTag/testIf.ftl
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/ifTag/testIf.ftl b/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/ifTag/testIf.ftl
new file mode 100644
index 0000000..4b9fab2
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/ifTag/testIf.ftl
@@ -0,0 +1,618 @@
+<html>
+<head>
+	<title>Struts2 Showcase - Non Ui Tag - Test If Tag (Freemarker)</title>
+	<s:head/>
+</head>
+<body>
+<div class="page-header">
+	<h1>Non Ui Tag - Test If Tag (Freemarker)</h1>
+</div>
+
+<div class="container-fluid">
+	<div class="row-fluid">
+		<div class="span12">
+			<p>
+			This is a simple freemarker template to test the If Tag (using freemarker directive).
+			There's quite a few combination being tested. The characters in bold and non-bold should be the same.
+			</p>
+
+
+			<b>1 - Foo -</b>
+			<@s.if test="true">
+				Foo
+			</...@s.if>
+			<@s.else>
+				Bar
+			</...@s.else>
+			<br/>
+			<b>2 - Bar -</b>
+			<@s.if test="false">
+				Foo
+			</...@s.if>
+			<@s.else>
+				Bar
+			</...@s.else>
+			<br/>
+			<b>3 - FooFooFoo - </b>
+			<@s.if test="true">
+				Foo
+				<@s.if test="true">
+					FooFoo
+				</...@s.if>
+				<@s.else>
+					BarBar
+				</...@s.else>
+			</...@s.if>
+			<@s.else>
+				Bar
+			</...@s.else>
+			<br/>
+			<b>4 - FooBarBar - </b>
+			<@s.if test="true">
+				Foo
+				<@s.if test="false">
+					FooFoo
+				</...@s.if>
+				<@s.else>
+					BarBar
+				</...@s.else>
+			</...@s.if>
+			<br/>
+			<b>5 - BarFooFoo - </b>
+			<@s.if test="false">
+				Foo
+			</...@s.if>
+			<@s.else>
+				Bar
+				<@s.if test="true">
+					FooFoo
+				</...@s.if>
+				<@s.else>
+					BarBar
+				</...@s.else>
+			</...@s.else>
+			<br/>
+			<b>6 - BarBarBar - </b>
+			<@s.if test="false">
+				Foo
+			</...@s.if>
+			<@s.else>
+				Bar
+				<@s.if test="false">
+					FooFoo
+				</...@s.if>
+				<@s.else>
+					BarBar
+				</...@s.else>
+			</...@s.else>
+			<br/>
+			<b>7 - Foo - </b>
+			<@s.if test="true">
+				Foo
+			</...@s.if>
+			<@s.elseif test="false">
+				Moo
+			</...@s.elseif>
+			<@s.else>
+				Bar
+			</...@s.else>
+			<br/>
+			<b>8 - Moo - </b>
+			<@s.if test="false">
+				Foo
+			</...@s.if>
+			<@s.elseif test="true">
+				Moo
+			</...@s.elseif>
+			<@s.else>
+				Bar
+			</...@s.else>
+			<br/>
+			<b>9 - Bar - </b>
+			<@s.if test="false">
+				Foo
+			</...@s.if>
+			<@s.elseif test="false">
+				Moo
+			</...@s.elseif>
+			<@s.else>
+				Bar
+			</...@s.else>
+			<br/>
+			<b>10 - FooFooFoo - </b>
+			<@s.if test="true">
+				Foo
+				<@s.if test="true">
+					FooFoo
+				</...@s.if>
+				<@s.elseif test="false">
+					MooMoo
+				</...@s.elseif>
+				<@s.else>
+					BarBar
+				</...@s.else>
+			</...@s.if>
+			<@s.elseif test="false">
+				Moo
+			</...@s.elseif>
+			<@s.else>
+				Bar
+			</...@s.else>
+			<br/>
+			<b>11 - FooMooMoo - </b>
+			<@s.if test="true">
+				Foo
+				<@s.if test="false">
+					FooFoo
+				</...@s.if>
+				<@s.elseif test="true">
+					MooMoo
+				</...@s.elseif>
+				<@s.else>
+					BarBar
+				</...@s.else>
+			</...@s.if>
+			<@s.elseif test="false">
+				Moo
+			</...@s.elseif>
+			<@s.else>
+				Bar
+			</...@s.else>
+			<br/>
+			<b>12 - FooBarBar - </b>
+			<@s.if test="true">
+				Foo
+				<@s.if test="false">
+					FooFoo
+				</...@s.if>
+				<@s.elseif test="false">
+					MooMoo
+				</...@s.elseif>
+				<@s.else>
+					BarBar
+				</...@s.else>
+			</...@s.if>
+			<@s.elseif test="false">
+				Moo
+			</...@s.elseif>
+			<@s.else>
+				Bar
+			</...@s.else>
+			<br/>
+			<b>13 - MooFooFoo - </b>
+			<@s.if test="false">
+				Foo
+			</...@s.if>
+			<@s.elseif test="true">
+				Moo
+				<@s.if test="true">
+					FooFoo
+				</...@s.if>
+				<@s.elseif test="false">
+					MooMoo
+				</...@s.elseif>
+				<@s.else>
+					BarBar
+				</...@s.else>
+			</...@s.elseif>
+			<@s.else>
+				Bar
+			</...@s.else>
+			<br/>
+			<b>14 - MooMooMoo - </b>
+			<@s.if test="false">
+				Foo
+			</...@s.if>
+			<@s.elseif test="true">
+				Moo
+				<@s.if test="false">
+					FooFoo
+				</...@s.if>
+				<@s.elseif test="true">
+					MooMoo
+				</...@s.elseif>
+				<@s.else>
+					BarBar
+				</...@s.else>
+			</...@s.elseif>
+			<@s.else>
+				Bar
+			</...@s.else>
+			<br/>
+			<b>15 - MooBarBar - </b>
+			<@s.if test="false">
+				Foo
+			</...@s.if>
+			<@s.elseif test="true">
+				Moo
+				<@s.if test="false">
+					FooFoo
+				</...@s.if>
+				<@s.elseif test="false">
+					MooMoo
+				</...@s.elseif>
+				<@s.else>
+					BarBar
+				</...@s.else>
+			</...@s.elseif>
+			<@s.else>
+				Bar
+			</...@s.else>
+			<br/>
+			<b>16 - BarFooFoo - </b>
+			<@s.if test="false">
+				Foo
+			</...@s.if>
+			<@s.elseif test="false">
+				Moo
+			</...@s.elseif>
+			<@s.else>
+				Bar
+				<@s.if test="true">
+					FooFoo
+				</...@s.if>
+				<@s.elseif test="false">
+					MooMoo
+				</...@s.elseif>
+				<@s.else>
+					BarBar
+				</...@s.else>
+			</...@s.else>
+			<br/>
+			<b>17 - BarMooMoo - </b>
+			<@s.if test="false">
+				Foo
+			</...@s.if>
+			<@s.elseif test="false">
+				Moo
+			</...@s.elseif>
+			<@s.else>
+				Bar
+				<@s.if test="false">
+					FooFoo
+				</...@s.if>
+				<@s.elseif test="true">
+					MooMoo
+				</...@s.elseif>
+				<@s.else>
+					BarBar
+				</...@s.else>
+			</...@s.else>
+			<br/>
+			<b>18 - BarBarBar - </b>
+			<@s.if test="false">
+				Foo
+			</...@s.if>
+			<@s.elseif test="false">
+				Moo
+			</...@s.elseif>
+			<@s.else>
+				Bar
+				<@s.if test="false">
+					FooFoo
+				</...@s.if>
+				<@s.elseif test="false">
+					MooMoo
+				</...@s.elseif>
+				<@s.else>
+					BarBar
+				</...@s.else>
+			</...@s.else>
+
+			<br/>
+			<b>19 - Foo - </b>
+			<@s.if test="true">
+				Foo
+			</...@s.if>
+
+			<br/>
+			<b>20 - ** should not display anything ** - </b>
+			<@s.if test="false">
+				Foo
+			</...@s.if>
+
+			<br/>
+			<b>21 FooFooFoo - </b>
+			<@s.if test="true">
+				Foo
+				<@s.if test="true">
+					FooFoo
+				</...@s.if>
+			</...@s.if>
+			<@s.else>
+				Bar
+			</...@s.else>
+
+			<br/>
+			<b>22 - Foo -  </b>
+			<@s.if test="true">
+				Foo
+				<@s.if test="false">
+					FooFoo
+				</...@s.if>
+			</...@s.if>
+			<@s.else>
+				Bar
+			</...@s.else>
+
+			<br/>
+			<b>23 - BarFooFoo - </b>
+			<@s.if test="false">
+				Foo
+			</...@s.if>
+			<@s.else>
+				Bar
+				<@s.if test="true">
+					FooFoo
+				</...@s.if>
+			</...@s.else>
+
+			<br/>
+			<b>24 - Bar - </b>
+			<@s.if test="false">
+				Foo
+			</...@s.if>
+			<@s.else>
+				Bar
+				<@s.if test="false">
+					FooFoo
+				</...@s.if>
+			</...@s.else>
+
+			<br/>
+			<b>25 - FooFooFoo</b>
+			<@s.if test="true">
+				Foo
+				<@s.if test="true">
+					FooFoo
+				</...@s.if>
+				<@s.elseif test="false">
+					MooMoo
+				</...@s.elseif>
+			</...@s.if>
+			<@s.elseif test="false">
+				Moo
+			</...@s.elseif>
+			<@s.else>
+				Bar
+			</...@s.else>
+
+			<br/>
+			<b>26 - FooMooMoo</b>
+			<@s.if test="true">
+				Foo
+				<@s.if test="false">
+					FooFoo
+				</...@s.if>
+				<@s.elseif test="true">
+					MooMoo
+				</...@s.elseif>
+			</...@s.if>
+			<@s.elseif test="false">
+				Moo
+			</...@s.elseif>
+			<@s.else>
+				Bar
+			</...@s.else>
+
+			<br/>
+			<b>27 - Foo - </b>
+			<@s.if test="true">
+				Foo
+				<@s.if test="false">
+					FooFoo
+				</...@s.if>
+				<@s.elseif test="false">
+					MooMoo
+				</...@s.elseif>
+			</...@s.if>
+			<@s.elseif test="false">
+				Moo
+			</...@s.elseif>
+			<@s.else>
+				Bar
+			</...@s.else>
+
+			<br/>
+			<b>28 - MooFooFoo</b>
+			<@s.if test="false">
+				Foo
+			</...@s.if>
+			<@s.elseif test="true">
+				Moo
+				<@s.if test="true">
+					FooFoo
+				</...@s.if>
+				<@s.elseif test="false">
+					MooMoo
+				</...@s.elseif>
+			</...@s.elseif>
+			<@s.else>
+				Bar
+			</...@s.else>
+
+			<br/>
+			<b>29 - MooMooMoo</b>
+			<@s.if test="false">
+				Foo
+			</...@s.if>
+			<@s.elseif test="true">
+				Moo
+				<@s.if test="false">
+					FooFoo
+				</...@s.if>
+				<@s.elseif test="true">
+					MooMoo
+				</...@s.elseif>
+			</...@s.elseif>
+			<@s.else>
+				Bar
+			</...@s.else>
+
+			<br/>
+			<b>30 - Moo - </b>
+			<@s.if test="false">
+				Foo
+			</...@s.if>
+			<@s.elseif test="true">
+				Moo
+				<@s.if test="false">
+					FooFoo
+				</...@s.if>
+				<@s.elseif test="false">
+					MooMoo
+				</...@s.elseif>
+			</...@s.elseif>
+			<@s.else>
+				Bar
+			</...@s.else>
+
+			<br/>
+			<b>31 - BarFooFoo - </b>
+			<@s.if test="false">
+				Foo
+			</...@s.if>
+			<@s.elseif test="false">
+				Moo
+			</...@s.elseif>
+			<@s.else>
+				Bar
+				<@s.if test="true">
+					FooFoo
+				</...@s.if>
+				<@s.elseif test="false">
+					MooMoo
+				</...@s.elseif>
+			</...@s.else>
+
+			<br/>
+			<b>32 - BarMooMoo - </b>
+			<@s.if test="false">
+				Foo
+			</...@s.if>
+			<@s.elseif test="false">
+				Moo
+			</...@s.elseif>
+			<@s.else>
+				Bar
+				<@s.if test="false">
+					FooFoo
+				</...@s.if>
+				<@s.elseif test="true">
+					MooMoo
+				</...@s.elseif>
+			</...@s.else>
+
+			<br/>
+			<b>33 - Bar - </b>
+			<@s.if test="false">
+				Foo
+			</...@s.if>
+			<@s.elseif test="false">
+				Moo
+			</...@s.elseif>
+			<@s.else>
+				Bar
+				<@s.if test="false">
+					FooFoo
+				</...@s.if>
+				<@s.elseif test="false">
+					MooMoo
+				</...@s.elseif>
+			</...@s.else>
+
+			<br/>
+			<b>34 - FooFooFoo - </b>
+			<@s.if test="true">
+				Foo
+				<@s.if test="true">
+					FooFoo
+				</...@s.if>
+			</...@s.if>
+			<@s.elseif test="false">
+				Moo
+			</...@s.elseif>
+			<@s.else>
+				Bar
+			</...@s.else>
+
+			<br/>
+			<b>35 - Foo - </b>
+			<@s.if test="true">
+				Foo
+				<@s.if test="false">
+					FooFoo
+				</...@s.if>
+			</...@s.if>
+			<@s.elseif test="false">
+				Moo
+			</...@s.elseif>
+			<@s.else>
+				Bar
+			</...@s.else>
+
+			<br/>
+			<b>36 - MooFooFoo - </b>
+			<@s.if test="false">
+				Foo
+			</...@s.if>
+			<@s.elseif test="true">
+				Moo
+				<@s.if test="true">
+					FooFoo
+				</...@s.if>
+			</...@s.elseif>
+			<@s.else>
+				Bar
+			</...@s.else>
+
+			<br/>
+			<b>37 - Moo - </b>
+			<@s.if test="false">
+				Foo
+			</...@s.if>
+			<@s.elseif test="true">
+				Moo
+				<@s.if test="false">
+					FooFoo
+				</...@s.if>
+			</...@s.elseif>
+			<@s.else>
+				Bar
+			</...@s.else>
+
+			<br/>
+			<b>38 - BarFooFoo  - </b>
+			<@s.if test="false">
+				Foo
+			</...@s.if>
+			<@s.elseif test="false">
+				Moo
+			</...@s.elseif>
+			<@s.else>
+				Bar
+				<@s.if test="true">
+					FooFoo
+				</...@s.if>
+			</...@s.else>
+
+			<br/>
+			<b>39 - Bar  - </b>
+			<@s.if test="false">
+				Foo
+			</...@s.if>
+			<@s.elseif test="false">
+				Moo
+			</...@s.elseif>
+			<@s.else>
+				Bar
+				<@s.if test="false">
+					FooFoo
+				</...@s.if>
+			</...@s.else>
+		</div>
+	</div>
+</div>
+</body>
+</html>
+

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/ifTag/testIf.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/ifTag/testIf.jsp b/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/ifTag/testIf.jsp
new file mode 100644
index 0000000..c049283
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/ifTag/testIf.jsp
@@ -0,0 +1,619 @@
+<%@taglib prefix="s" uri="/struts-tags" %>
+<html>
+<head>
+	<title>Struts2 Showcase - Non Ui Tag - Test If Tag</title>
+	<s:head/>
+</head>
+<body>
+<div class="page-header">
+	<h1>Non Ui Tag - Test If Tag</h1>
+</div>
+
+<div class="container-fluid">
+	<div class="row-fluid">
+		<div class="span12">
+				<p>
+					This is a simple jsp to test the If Tag. There's quite a few combination being tested.
+					The characters in bold an non-bold should be the same.
+				</p>
+
+
+				<b>1 - Foo -</b>
+				<s:if test="true">
+					Foo
+				</s:if>
+				<s:else>
+					Bar
+				</s:else>
+				<br/>
+				<b>2 - Bar -</b>
+				<s:if test="false">
+					Foo
+				</s:if>
+				<s:else>
+					Bar
+				</s:else>
+				<br/>
+				<b>3 - FooFooFoo - </b>
+				<s:if test="true">
+					Foo
+					<s:if test="true">
+						FooFoo
+					</s:if>
+					<s:else>
+						BarBar
+					</s:else>
+				</s:if>
+				<s:else>
+					Bar
+				</s:else>
+				<br/>
+				<b>4 - FooBarBar - </b>
+				<s:if test="true">
+					Foo
+					<s:if test="false">
+						FooFoo
+					</s:if>
+					<s:else>
+						BarBar
+					</s:else>
+				</s:if>
+				<br/>
+				<b>5 - BarFooFoo - </b>
+				<s:if test="false">
+					Foo
+				</s:if>
+				<s:else>
+					Bar
+					<s:if test="true">
+						FooFoo
+					</s:if>
+					<s:else>
+						BarBar
+					</s:else>
+				</s:else>
+				<br/>
+				<b>6 - BarBarBar - </b>
+				<s:if test="false">
+					Foo
+				</s:if>
+				<s:else>
+					Bar
+					<s:if test="false">
+						FooFoo
+					</s:if>
+					<s:else>
+						BarBar
+					</s:else>
+				</s:else>
+				<br/>
+				<b>7 - Foo - </b>
+				<s:if test="true">
+					Foo
+				</s:if>
+				<s:elseif test="false">
+					Moo
+				</s:elseif>
+				<s:else>
+					Bar
+				</s:else>
+				<br/>
+				<b>8 - Moo - </b>
+				<s:if test="false">
+					Foo
+				</s:if>
+				<s:elseif test="true">
+					Moo
+				</s:elseif>
+				<s:else>
+					Bar
+				</s:else>
+				<br/>
+				<b>9 - Bar - </b>
+				<s:if test="false">
+					Foo
+				</s:if>
+				<s:elseif test="false">
+					Moo
+				</s:elseif>
+				<s:else>
+					Bar
+				</s:else>
+				<br/>
+				<b>10 - FooFooFoo - </b>
+				<s:if test="true">
+					Foo
+					<s:if test="true">
+						FooFoo
+					</s:if>
+					<s:elseif test="false">
+						MooMoo
+					</s:elseif>
+					<s:else>
+						BarBar
+					</s:else>
+				</s:if>
+				<s:elseif test="false">
+					Moo
+				</s:elseif>
+				<s:else>
+					Bar
+				</s:else>
+				<br/>
+				<b>11 - FooMooMoo - </b>
+				<s:if test="true">
+					Foo
+					<s:if test="false">
+						FooFoo
+					</s:if>
+					<s:elseif test="true">
+						MooMoo
+					</s:elseif>
+					<s:else>
+						BarBar
+					</s:else>
+				</s:if>
+				<s:elseif test="false">
+					Moo
+				</s:elseif>
+				<s:else>
+					Bar
+				</s:else>
+				<br/>
+				<b>12 - FooBarBar - </b>
+				<s:if test="true">
+					Foo
+					<s:if test="false">
+						FooFoo
+					</s:if>
+					<s:elseif test="false">
+						MooMoo
+					</s:elseif>
+					<s:else>
+						BarBar
+					</s:else>
+				</s:if>
+				<s:elseif test="false">
+					Moo
+				</s:elseif>
+				<s:else>
+					Bar
+				</s:else>
+				<br/>
+				<b>13 - MooFooFoo - </b>
+				<s:if test="false">
+					Foo
+				</s:if>
+				<s:elseif test="true">
+					Moo
+					<s:if test="true">
+						FooFoo
+					</s:if>
+					<s:elseif test="false">
+						MooMoo
+					</s:elseif>
+					<s:else>
+						BarBar
+					</s:else>
+				</s:elseif>
+				<s:else>
+					Bar
+				</s:else>
+				<br/>
+				<b>14 - MooMooMoo - </b>
+				<s:if test="false">
+					Foo
+				</s:if>
+				<s:elseif test="true">
+					Moo
+					<s:if test="false">
+						FooFoo
+					</s:if>
+					<s:elseif test="true">
+						MooMoo
+					</s:elseif>
+					<s:else>
+						BarBar
+					</s:else>
+				</s:elseif>
+				<s:else>
+					Bar
+				</s:else>
+				<br/>
+				<b>15 - MooBarBar - </b>
+				<s:if test="false">
+					Foo
+				</s:if>
+				<s:elseif test="true">
+					Moo
+					<s:if test="false">
+						FooFoo
+					</s:if>
+					<s:elseif test="false">
+						MooMoo
+					</s:elseif>
+					<s:else>
+						BarBar
+					</s:else>
+				</s:elseif>
+				<s:else>
+					Bar
+				</s:else>
+				<br/>
+				<b>16 - BarFooFoo - </b>
+				<s:if test="false">
+					Foo
+				</s:if>
+				<s:elseif test="false">
+					Moo
+				</s:elseif>
+				<s:else>
+					Bar
+					<s:if test="true">
+						FooFoo
+					</s:if>
+					<s:elseif test="false">
+						MooMoo
+					</s:elseif>
+					<s:else>
+						BarBar
+					</s:else>
+				</s:else>
+				<br/>
+				<b>17 - BarMooMoo - </b>
+				<s:if test="false">
+					Foo
+				</s:if>
+				<s:elseif test="false">
+					Moo
+				</s:elseif>
+				<s:else>
+					Bar
+					<s:if test="false">
+						FooFoo
+					</s:if>
+					<s:elseif test="true">
+						MooMoo
+					</s:elseif>
+					<s:else>
+						BarBar
+					</s:else>
+				</s:else>
+				<br/>
+				<b>18 - BarBarBar - </b>
+				<s:if test="false">
+					Foo
+				</s:if>
+				<s:elseif test="false">
+					Moo
+				</s:elseif>
+				<s:else>
+					Bar
+					<s:if test="false">
+						FooFoo
+					</s:if>
+					<s:elseif test="false">
+						MooMoo
+					</s:elseif>
+					<s:else>
+						BarBar
+					</s:else>
+				</s:else>
+
+				<br/>
+				<b>19 - Foo - </b>
+				<s:if test="true">
+					Foo
+				</s:if>
+
+				<br/>
+				<b>20 - ** should not display anything ** - </b>
+				<s:if test="false">
+					Foo
+				</s:if>
+
+				<br/>
+				<b>21 FooFooFoo - </b>
+				<s:if test="true">
+					Foo
+					<s:if test="true">
+						FooFoo
+					</s:if>
+				</s:if>
+				<s:else>
+					Bar
+				</s:else>
+
+				<br/>
+				<b>22 - Foo - </b>
+				<s:if test="true">
+					Foo
+					<s:if test="false">
+						FooFoo
+					</s:if>
+				</s:if>
+				<s:else>
+					Bar
+				</s:else>
+
+				<br/>
+				<b>23 - BarFooFoo - </b>
+				<s:if test="false">
+					Foo
+				</s:if>
+				<s:else>
+					Bar
+					<s:if test="true">
+						FooFoo
+					</s:if>
+				</s:else>
+
+				<br/>
+				<b>24 - Bar - </b>
+				<s:if test="false">
+					Foo
+				</s:if>
+				<s:else>
+					Bar
+					<s:if test="false">
+						FooFoo
+					</s:if>
+				</s:else>
+
+				<br/>
+				<b>25 - FooFooFoo</b>
+				<s:if test="true">
+					Foo
+					<s:if test="true">
+						FooFoo
+					</s:if>
+					<s:elseif test="false">
+						MooMoo
+					</s:elseif>
+				</s:if>
+				<s:elseif test="false">
+					Moo
+				</s:elseif>
+				<s:else>
+					Bar
+				</s:else>
+
+				<br/>
+				<b>26 - FooMooMoo</b>
+				<s:if test="true">
+					Foo
+					<s:if test="false">
+						FooFoo
+					</s:if>
+					<s:elseif test="true">
+						MooMoo
+					</s:elseif>
+				</s:if>
+				<s:elseif test="false">
+					Moo
+				</s:elseif>
+				<s:else>
+					Bar
+				</s:else>
+
+				<br/>
+				<b>27 - Foo - </b>
+				<s:if test="true">
+					Foo
+					<s:if test="false">
+						FooFoo
+					</s:if>
+					<s:elseif test="false">
+						MooMoo
+					</s:elseif>
+				</s:if>
+				<s:elseif test="false">
+					Moo
+				</s:elseif>
+				<s:else>
+					Bar
+				</s:else>
+
+				<br/>
+				<b>28 - MooFooFoo</b>
+				<s:if test="false">
+					Foo
+				</s:if>
+				<s:elseif test="true">
+					Moo
+					<s:if test="true">
+						FooFoo
+					</s:if>
+					<s:elseif test="false">
+						MooMoo
+					</s:elseif>
+				</s:elseif>
+				<s:else>
+					Bar
+				</s:else>
+
+				<br/>
+				<b>29 - MooMooMoo</b>
+				<s:if test="false">
+					Foo
+				</s:if>
+				<s:elseif test="true">
+					Moo
+					<s:if test="false">
+						FooFoo
+					</s:if>
+					<s:elseif test="true">
+						MooMoo
+					</s:elseif>
+				</s:elseif>
+				<s:else>
+					Bar
+				</s:else>
+
+				<br/>
+				<b>30 - Moo - </b>
+				<s:if test="false">
+					Foo
+				</s:if>
+				<s:elseif test="true">
+					Moo
+					<s:if test="false">
+						FooFoo
+					</s:if>
+					<s:elseif test="false">
+						MooMoo
+					</s:elseif>
+				</s:elseif>
+				<s:else>
+					Bar
+				</s:else>
+
+				<br/>
+				<b>31 - BarFooFoo - </b>
+				<s:if test="false">
+					Foo
+				</s:if>
+				<s:elseif test="false">
+					Moo
+				</s:elseif>
+				<s:else>
+					Bar
+					<s:if test="true">
+						FooFoo
+					</s:if>
+					<s:elseif test="false">
+						MooMoo
+					</s:elseif>
+				</s:else>
+
+				<br/>
+				<b>32 - BarMooMoo - </b>
+				<s:if test="false">
+					Foo
+				</s:if>
+				<s:elseif test="false">
+					Moo
+				</s:elseif>
+				<s:else>
+					Bar
+					<s:if test="false">
+						FooFoo
+					</s:if>
+					<s:elseif test="true">
+						MooMoo
+					</s:elseif>
+				</s:else>
+
+				<br/>
+				<b>33 - Bar - </b>
+				<s:if test="false">
+					Foo
+				</s:if>
+				<s:elseif test="false">
+					Moo
+				</s:elseif>
+				<s:else>
+					Bar
+					<s:if test="false">
+						FooFoo
+					</s:if>
+					<s:elseif test="false">
+						MooMoo
+					</s:elseif>
+				</s:else>
+
+
+				<br/>
+				<b>34 - FooFooFoo - </b>
+				<s:if test="true">
+					Foo
+					<s:if test="true">
+						FooFoo
+					</s:if>
+				</s:if>
+				<s:elseif test="false">
+					Moo
+				</s:elseif>
+				<s:else>
+					Bar
+				</s:else>
+
+				<br/>
+				<b>35 - Foo - </b>
+				<s:if test="true">
+					Foo
+					<s:if test="false">
+						FooFoo
+					</s:if>
+				</s:if>
+				<s:elseif test="false">
+					Moo
+				</s:elseif>
+				<s:else>
+					Bar
+				</s:else>
+
+				<br/>
+				<b>36 - MooFooFoo - </b>
+				<s:if test="false">
+					Foo
+				</s:if>
+				<s:elseif test="true">
+					Moo
+					<s:if test="true">
+						FooFoo
+					</s:if>
+				</s:elseif>
+				<s:else>
+					Bar
+				</s:else>
+
+				<br/>
+				<b>37 - Moo - </b>
+				<s:if test="false">
+					Foo
+				</s:if>
+				<s:elseif test="true">
+					Moo
+					<s:if test="false">
+						FooFoo
+					</s:if>
+				</s:elseif>
+				<s:else>
+					Bar
+				</s:else>
+
+				<br/>
+				<b>38 - BarFooFoo - </b>
+				<s:if test="false">
+					Foo
+				</s:if>
+				<s:elseif test="false">
+					Moo
+				</s:elseif>
+				<s:else>
+					Bar
+					<s:if test="true">
+						FooFoo
+					</s:if>
+				</s:else>
+
+				<br/>
+				<b>39 - Bar - </b>
+				<s:if test="false">
+					Foo
+				</s:if>
+				<s:elseif test="false">
+					Moo
+				</s:elseif>
+				<s:else>
+					Bar
+					<s:if test="false">
+						FooFoo
+					</s:if>
+				</s:else>
+		</div>
+	</div>
+</div>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/iteratorTag/appendIteratorTagDemoResult.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/iteratorTag/appendIteratorTagDemoResult.jsp b/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/iteratorTag/appendIteratorTagDemoResult.jsp
new file mode 100644
index 0000000..32b9fec
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/iteratorTag/appendIteratorTagDemoResult.jsp
@@ -0,0 +1,34 @@
+<%@taglib prefix="s" uri="/struts-tags" %>
+<html>
+<head>
+	<title>Struts2 Showcase - Non Ui Tag - AppendIterator Tag</title>
+	<s:head/>
+</head>
+<body>
+<div class="page-header">
+	<h1>Non Ui Tag - AppendIterator Tag Demo</h1>
+</div>
+
+<div class="container-fluid">
+	<div class="row-fluid">
+		<div class="span12">
+
+			<s:generator var="iterator1" separator="," val="%{iteratorValue1}" />
+		    <s:generator var="iterator2" separator="," val="%{iteratorValue2}" />
+
+		    <s:append id="appendedIterator">
+		        <s:param value="%{#attr.iterator1}" />
+		        <s:param value="%{#attr.iterator2}" />
+		    </s:append>
+
+		    <s:iterator value="#appendedIterator">
+		        <s:property /><br/>
+		    </s:iterator>
+
+			<s:url var="url" action="showAppendTagDemo" namespace="/tags/non-ui/appendIteratorTag" />
+			<s:a href="%{#url}" cssClass="btn btn-info"><i class="icon icon-arrow-left"></i> Back To Input</s:a>
+		</div>
+	</div>
+</div>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/iteratorTag/iteratorGeneratorTagDemoResult.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/iteratorTag/iteratorGeneratorTagDemoResult.jsp b/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/iteratorTag/iteratorGeneratorTagDemoResult.jsp
new file mode 100644
index 0000000..5ebb9fc
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/iteratorTag/iteratorGeneratorTagDemoResult.jsp
@@ -0,0 +1,29 @@
+<%@taglib prefix="s" uri="/struts-tags" %>
+<html>
+<head>
+	<title>Struts2 Showcase - Non Ui Tag - Iterator Generator Tag Demo</title>
+	<s:head/>
+</head>
+<body>
+<div class="page-header">
+	<h1>Non Ui Tag - Iterator Generator Tag Demo</h1>
+</div>
+
+<div class="container-fluid">
+	<div class="row-fluid">
+		<div class="span12">
+
+		<s:generator val="%{value}" separator="%{separator}" count="%{count}">
+            <s:iterator value="%{top}">
+               <s:property /><br/>
+            </s:iterator>
+        </s:generator>
+
+
+        <s:url var="url" action="showGeneratorTagDemo" namespace="/tags/non-ui/iteratorGeneratorTag" />
+        <s:a href="%{#url}" cssClass="btn btn-info"><i class="icon icon-arrow-left"></i> Back To Input</s:a>
+        </div>
+    </div>
+</div>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/iteratorTag/mergeIteratorTagDemoResult.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/iteratorTag/mergeIteratorTagDemoResult.jsp b/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/iteratorTag/mergeIteratorTagDemoResult.jsp
new file mode 100644
index 0000000..15cab7d
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/iteratorTag/mergeIteratorTagDemoResult.jsp
@@ -0,0 +1,33 @@
+<%@taglib prefix="s" uri="/struts-tags" %>
+<html>
+<head>
+	<title>Struts2 Showcase - Non Ui Tag - MergeIterator Tag</title>
+	<s:head/>
+</head>
+<body>
+<div class="page-header">
+	<h1>Non Ui Tag - MergeIterator Tag</h1>
+</div>
+
+<div class="container-fluid">
+	<div class="row-fluid">
+		<div class="span12">
+			<s:generator var="iterator1" val="%{iteratorValue1}" separator="," />
+		    <s:generator var="iterator2" val="%{iteratorValue2}" separator="," />
+
+		    <s:merge var="mergedIterator">
+		        <s:param value="%{#attr.iterator1}" />
+		        <s:param value="%{#attr.iterator2}" />
+		    </s:merge>
+
+		    <s:iterator value="%{#mergedIterator}">
+		        <s:property /><br/>
+		    </s:iterator>
+
+			<s:url var="url" action="showMergeTagDemo" namespace="/tags/non-ui/mergeIteratorTag" />
+			<s:a href="%{#url}" cssClass="btn btn-info"><i class="icon icon-arrow-left"></i> Back To Input</s:a>
+		</div>
+	</div>
+</div>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/iteratorTag/showAppendIteratorTagDemo.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/iteratorTag/showAppendIteratorTagDemo.jsp b/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/iteratorTag/showAppendIteratorTagDemo.jsp
new file mode 100644
index 0000000..259cfc4
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/iteratorTag/showAppendIteratorTagDemo.jsp
@@ -0,0 +1,28 @@
+<%@taglib prefix="s" uri="/struts-tags" %>
+<html>
+<head>
+    <title>Struts2 Showcase - Non Ui Tag - AppendIterator Tag</title>
+    <s:head/>
+</head>
+<body>
+<div class="page-header">
+    <h1>Non Ui Tag - AppendIterator Tag Demo</h1>
+</div>
+
+<div class="container-fluid">
+    <div class="row-fluid">
+	    <div class="span12">
+
+		    <s:actionerror cssClass="alert alert-error"/>
+		    <s:fielderror cssClass="alert alert-error"/>
+
+		    <s:form action="submitAppendTagDemo" namespace="/tags/non-ui/appendIteratorTag" method="POST">
+		        <s:textfield label="iterator 1 values (comma separated)" name="iteratorValue1" />
+		        <s:textfield label="iterator 2 values (comma separated)" name="iteratorValue2" />
+		        <s:submit cssClass="btn btn-primary"/>
+		    </s:form>
+	    </div>
+    </div>
+</div>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/iteratorTag/showIteratorGeneratorTagDemo.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/iteratorTag/showIteratorGeneratorTagDemo.jsp b/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/iteratorTag/showIteratorGeneratorTagDemo.jsp
new file mode 100644
index 0000000..e5a0665
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/iteratorTag/showIteratorGeneratorTagDemo.jsp
@@ -0,0 +1,29 @@
+<%@taglib prefix="s" uri="/struts-tags" %>
+<html>
+<head>
+	<title>Struts2 Showcase - Non Ui Tag - Iterator Generator Tag Demo</title>
+	<s:head/>
+</head>
+<body>
+<div class="page-header">
+	<h1>Non Ui Tag - Iterator Generator Tag Demo</h1>
+</div>
+
+<div class="container-fluid">
+	<div class="row-fluid">
+		<div class="span12">
+
+			<s:actionerror cssClass="alert alert-error"/>
+			<s:fielderror cssClass="alert alert-error"/>
+
+			<s:form action="submitGeneratorTagDemo" namespace="/tags/non-ui/iteratorGeneratorTag" method="POST">
+		        <s:textfield label="Value" name="value" />
+		        <s:textfield label="Separator" name="separator" />
+		        <s:textfield label="Count" name="count" />
+		        <s:submit cssClass="btn btn-primary"/>
+            </s:form>
+		</div>
+	</div>
+</div>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/iteratorTag/showMergeIteratorTagDemo.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/iteratorTag/showMergeIteratorTagDemo.jsp b/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/iteratorTag/showMergeIteratorTagDemo.jsp
new file mode 100644
index 0000000..54d2c38
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/iteratorTag/showMergeIteratorTagDemo.jsp
@@ -0,0 +1,29 @@
+<%@taglib prefix="s" uri="/struts-tags" %>
+<html>
+<head>
+	<title>Struts2 Showcase - Non Ui Tag - MergeIterator Tag</title>
+	<s:head/>
+</head>
+<body>
+<div class="page-header">
+	<h1>Non Ui Tag - MergeIterator Tag</h1>
+</div>
+
+<div class="container-fluid">
+	<div class="row-fluid">
+		<div class="span12">
+
+			<s:actionerror cssClass="alert alert-error"/>
+			<s:fielderror cssClass="alert alert-error"/>
+
+		    <s:form action="submitMergeTagDemo" namespace="/tags/non-ui/mergeIteratorTag" method="POST">
+		        <s:textfield label="Iterator 1 Value (Comma Separated)" name="iteratorValue1" />
+		        <s:textfield label="Iterator 2 Value (Comma Separated)" name="iteratorValue2" />
+		        <s:submit cssClass="btn btn-primary"/>
+		    </s:form>
+
+		</div>
+	</div>
+</div>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/iteratorTag/subsetIteratorTagDemo.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/iteratorTag/subsetIteratorTagDemo.jsp b/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/iteratorTag/subsetIteratorTagDemo.jsp
new file mode 100644
index 0000000..e14de24
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/iteratorTag/subsetIteratorTagDemo.jsp
@@ -0,0 +1,29 @@
+<%@taglib prefix="s" uri="/struts-tags" %>
+<html>
+<head>
+	<title>Struts2 Showcase - Non Ui Tag - SubsetTag Demo</title>
+	<s:head/>
+</head>
+<body>
+<div class="page-header">
+	<h1>Non Ui Tag - SubsetTag Demo</h1>
+</div>
+
+<div class="container-fluid">
+	<div class="row-fluid">
+		<div class="span12">
+
+			<s:actionerror cssClass="alert alert-error"/>
+			<s:fielderror cssClass="alert alert-error"/>
+
+		    <s:form action="submitSubsetTagDemo" namespace="/tags/non-ui/subsetIteratorTag" method="POST">
+		        <s:textfield label="Iterator value (comma separated)" name="iteratorValue" />
+		        <s:textfield label="Count" name="count" />
+		        <s:textfield label="Start" name="start" />
+		        <s:submit cssClass="btn btn-primary"/>
+		    </s:form>
+		</div>
+	</div>
+</div>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/iteratorTag/subsetIteratorTagDemoResult.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/iteratorTag/subsetIteratorTagDemoResult.jsp b/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/iteratorTag/subsetIteratorTagDemoResult.jsp
new file mode 100644
index 0000000..22f8be6
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/iteratorTag/subsetIteratorTagDemoResult.jsp
@@ -0,0 +1,30 @@
+<%@taglib prefix="s" uri="/struts-tags" %>
+<html>
+<head>
+	<title>Struts2 Showcase - Non Ui Tag - SubsetTag Demo</title>
+	<s:head/>
+</head>
+<body>
+<div class="page-header">
+	<h1>Non Ui Tag - SubsetTag Demo</h1>
+</div>
+
+<div class="container-fluid">
+	<div class="row-fluid">
+		<div class="span12">
+
+			<s:generator var="iterator" val="%{iteratorValue}" separator="," />
+
+		    <s:subset count="%{count}" start="%{start}" source="%{#attr.iterator}" >
+		        <s:iterator>
+		            <s:property /><br/>
+		        </s:iterator>
+		    </s:subset>
+
+			<s:url var="url" action="showSubsetTagDemo" namespace="/tags/non-ui/subsetIteratorTag" />
+			<s:a href="%{#url}" cssClass="btn btn-info"><i class="icon icon-arrow-left"></i> Back To Input</s:a>
+		</div>
+	</div>
+</div>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/tags/ui/actionTagExampleCalled.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/tags/ui/actionTagExampleCalled.jsp b/apps/showcase/src/main/webapp/WEB-INF/tags/ui/actionTagExampleCalled.jsp
new file mode 100644
index 0000000..c97dc67
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/tags/ui/actionTagExampleCalled.jsp
@@ -0,0 +1,2 @@
+<%@taglib prefix="s" uri="/struts-tags" %>
+This text is from the called class
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/tags/ui/actionTagExampleCalling.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/tags/ui/actionTagExampleCalling.jsp b/apps/showcase/src/main/webapp/WEB-INF/tags/ui/actionTagExampleCalling.jsp
new file mode 100644
index 0000000..160851c
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/tags/ui/actionTagExampleCalling.jsp
@@ -0,0 +1,24 @@
+<%@taglib prefix="s" uri="/struts-tags" %>
+<html>
+<head>
+	<title>Struts2 Showcase - UI Tags - Action Tag</title>
+	<s:head/>
+</head>
+<body>
+<div class="page-header">
+	<h1>UI Tags - Action Tag</h1>
+</div>
+
+<div class="container-fluid">
+	<div class="row-fluid">
+		<div class="span12">
+			  <b>Example 1:</b>
+			  This example calls an action and includes the output on the page
+			  <p id="example1" class="well">
+			    <s:action namespace="/tags/ui" name="actionTagExample" executeResult="true"/>
+			  </p>
+		</div>
+	</div>
+</div>
+</body>
+</html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/tags/ui/componentTagExample.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/tags/ui/componentTagExample.jsp b/apps/showcase/src/main/webapp/WEB-INF/tags/ui/componentTagExample.jsp
new file mode 100644
index 0000000..dca5b0f
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/tags/ui/componentTagExample.jsp
@@ -0,0 +1,69 @@
+<%@taglib prefix="s" uri="/struts-tags" %>
+<html>
+<head>
+	<title>Struts2 Showcase - UI Tags - Component Tag</title>
+	<s:head/>
+</head>
+<body>
+<div class="page-header">
+	<h1>UI Tags - Component Tag</h1>
+</div>
+
+<div class="container-fluid">
+	<div class="row-fluid">
+		<div class="span12">
+			<p>This example tries to demonstrates the usage of &lt;s:component ... &gt; tag.<p/>
+
+			<p>To have a look at the source of this jsp page click
+			<s:url var="url" action="showComponentTagExampleCode" namespace="/tags/ui"/>
+			<s:a href="%{#url}">here</s:a>
+			<p/>
+
+			<b>Example 1:</b>
+			<p>This example load the template from the webapp context path using
+			the default (ftl) as its template.
+			    <s:component
+			        theme="customTheme"
+			        templateDir="customTemplateDir"
+			        template="ftlCustomTemplate">
+			        <s:param name="paramName" value="%{'paramValue1'}" />
+			    </s:component>
+			<p/>
+
+			<b>Example 2:</b>
+			<p>This example load the template from the webapp context path using
+			jsp as its template (notice the *.jsp extension to the template).
+			    <s:component
+			        theme="customTheme"
+			        templateDir="customTemplateDir"
+			        template="jspCustomTemplate.jsp">
+			        <s:param name="paramName" value="%{'paramValue2'}" />
+			    </s:component>
+			<p/>
+
+			<b>Example 3</b>
+			<p>This example load the template from the webapp context path,
+			using the default template directory and theme (default to
+			'template' and 'xhtml' respectively)
+			    <s:component template="mytemplate.jsp">
+			        <s:param name="paramName" value="%{'paramValue3'}" />
+			    </s:component>
+			<p/>
+
+
+			<b>Example 4</b>
+			<p>This example load the template from the webapp classpath using
+			a custom themplate directory and theme.
+			    <s:component
+			        theme="myTheme"
+			        templateDir="myTemplateDir"
+			        template="myAnotherTemplate">
+			        <s:param name="paramName" value="%{'paramValue4'}" />
+			    </s:component>
+			<p/>
+		</div>
+	</div>
+</div>
+</body>
+</html>
+

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/tags/ui/datepicker/index.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/tags/ui/datepicker/index.jsp b/apps/showcase/src/main/webapp/WEB-INF/tags/ui/datepicker/index.jsp
new file mode 100644
index 0000000..db9c7fb
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/tags/ui/datepicker/index.jsp
@@ -0,0 +1,33 @@
+<%@taglib prefix="s" uri="/struts-tags" %>
+<%@ taglib prefix="sx" uri="/struts-dojo-tags" %>
+<html>
+<head>
+	<title>Struts2 Showcase - UI Tags - Datepicker Tag</title>
+	<sx:head extraLocales="en-us,nl-nl,de-de" />
+</head>
+<body>
+<div class="page-header">
+	<h1>UI Tags - Datepicker Tag</h1>
+</div>
+
+<div class="container-fluid">
+	<div class="row-fluid">
+		<div class="span12">
+			<table>
+				<sx:datetimepicker label="toggleType='wipe'" value="%{'2006-10-31'}" toggleType="wipe" toggleDuration="300" name="test"/>
+				<sx:datetimepicker label="toggleType='explode'" value="%{'2006-07-22'}" toggleType="explode" toggleDuration="500" id="dp2"/>
+				<sx:datetimepicker label="toggleType='fade'" value="%{'2006-06-30'}" toggleType="fade" toggleDuration="500"/>
+				<sx:datetimepicker label="With value='today'"  name="dddp1" value="%{'today'}" />
+				<sx:datetimepicker label="US format, empty" name="dddp2" language="en-us" />
+				<sx:datetimepicker label="US format with initial date of 2006-06-26" name="dddp3" value="%{'2006-06-26'}" language="en-us" />
+				<sx:datetimepicker label="With initial date of 1969-04-25 and a custom format dd/MM/yyyy" name="dddp5" value="%{'25/04/1969'}" displayFormat="dd/MM/yyyy" />
+				<sx:datetimepicker label="In German" name="dddp7" value="%{'2006-06-28'}" language="de-de" />
+				<sx:datetimepicker label="In Dutch"  name="dddp8" value="%{'2006-06-28'}" language="nl-nl" />
+				<sx:datetimepicker label="US format with initial date of 2006-06-26 and long formatting (parse not supported)" name="dddp12" value="%{'2006-06-26'}" formatLength="long" language="en-us" />
+				<sx:datetimepicker label="German format with initial date of 2006-06-26 and long formatting (parse not supported)" name="dddp13" value="%{'2006-06-26'}" formatLength="long" language="de" />
+			</table>
+		</div>
+	</div>
+</div>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/tags/ui/dynamicTreeSelect.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/tags/ui/dynamicTreeSelect.jsp b/apps/showcase/src/main/webapp/WEB-INF/tags/ui/dynamicTreeSelect.jsp
new file mode 100644
index 0000000..2c1cd2e
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/tags/ui/dynamicTreeSelect.jsp
@@ -0,0 +1,6 @@
+<%@taglib prefix="s" uri="/struts-tags" %>
+
+Id:<s:property value="%{nodeId}" /><br/>
+Name:<s:property value="%{nodeName}" /><br/>
+
+

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/tags/ui/example.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/tags/ui/example.jsp b/apps/showcase/src/main/webapp/WEB-INF/tags/ui/example.jsp
new file mode 100644
index 0000000..0e89c03
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/tags/ui/example.jsp
@@ -0,0 +1,149 @@
+<%@taglib prefix="s" uri="/struts-tags" %>
+<%@ taglib prefix="sx" uri="/struts-dojo-tags" %>
+<html>
+<head>
+	<title>Struts2 Showcase - UI Tags Example</title>
+	<s:head/>
+	<sx:head />
+</head>
+<body>
+<div class="page-header">
+	<h1>UI Tags Example</h1>
+</div>
+
+<div class="container-fluid">
+	<div class="row-fluid">
+		<div class="span12">
+
+			<s:actionerror cssClass="alert alert-error"/>
+			<s:actionmessage cssClass="alert alert-info"/>
+			<s:fielderror  cssClass="alert alert-error"/>
+
+
+			<s:form action="exampleSubmit" enctype="multipart/form-data" javascriptTooltip="true">
+			    <s:textfield
+			            label="Name"
+			            name="name"
+			            tooltip="Enter your Name here"/>
+
+			    <sx:datetimepicker
+			            tooltip="Select Your Birthday"
+			            label="Birthday"
+			            name="birthday" />
+
+			    <sx:datetimepicker
+			            tooltip="Enter the time you wake up"
+			            label="Wake up time"
+			            name="wakeup"
+			            type="time"/>
+
+			    <s:textarea
+			            tooltip="Enter your Biography"
+			            label="Biography"
+			            name="bio"
+			            cols="20"
+			            rows="3"/>
+
+			    <s:select
+			            tooltip="Choose Your Favourite Color"
+			            label="Favorite Color"
+			            list="{'Red', 'Blue', 'Green'}"
+			            name="favouriteColor"
+			            emptyOption="true"
+			            headerKey="None"
+			            headerValue="None"/>
+
+			    <s:select
+			            tooltip="Choose Your Favourite Language"
+			            label="Favourite Language"
+			            list="favouriteLanguages"
+			            name="favouriteLanguage"
+			            listKey="key"
+			            listValue="description"
+			            listCssStyle="style"
+			            emptyOption="true"
+			            headerKey="None"
+			            headerValue="None"/>
+
+			    <s:checkboxlist
+			            tooltip="Choose your Friends"
+			            label="Friends"
+			            list="{'Wes', 'Patrick', 'Jason', 'Jay', 'Toby', 'Rene'}"
+			            name="friends"/>
+
+			    <s:radio
+			            tooltip="Choose your Best Friend"
+			            label="Best Friend"
+			            list="{'Wes', 'Patrick', 'Jason', 'Jay', 'Toby', 'Rene'}"
+			            name="bestFriend"
+			            cssErrorClass="foo" />
+
+			    <s:checkbox
+			            tooltip="Confirmed that your are Over 18"
+			            label="Age 18+"
+			            name="legalAge"/>
+
+			    <s:doubleselect
+			            tooltip="Choose Your State"
+			            label="State"
+			            name="region" list="{'North', 'South'}"
+			            value="'South'"
+			            doubleValue="'Florida'"
+			            doubleList="top == 'North' ? {'Oregon', 'Washington'} : {'Texas', 'Florida'}"
+			            doubleName="state"
+			            headerKey="-1"
+			            headerValue="---------- Please Select ----------"
+			            emptyOption="true" />
+
+			    <s:doubleselect
+			            tooltip="Choose your Vehical"
+			            label="Favourite Vehical"
+			            name="favouriteVehicalType"
+			            list="vehicalTypeList"
+			            listKey="key"
+			            listValue="description"
+			            value="'MotorcycleKey'"
+			            doubleValue="'YamahaKey'"
+			            doubleList="vehicalSpecificList"
+			            doubleListKey="key"
+			            doubleListValue="description"
+			            doubleName="favouriteVehicalSpecific" headerKey="-1"
+			            headerValue="---------- Please Select ----------"
+			            emptyOption="true" />
+
+			    <s:file
+			            tooltip="Upload Your Picture"
+			            label="Picture"
+			            name="picture" />
+
+			    <s:optiontransferselect
+			            tooltip="Select Your Favourite Cartoon Characters"
+			            label="Favourite Cartoons Characters"
+			            name="leftSideCartoonCharacters"
+			            leftTitle="Left Title"
+			            rightTitle="Right Title"
+			            list="{'Popeye', 'He-Man', 'Spiderman'}"
+			            multiple="true"
+			            headerKey="headerKey"
+			            headerValue="--- Please Select ---"
+			            emptyOption="true"
+			            doubleList="{'Superman', 'Mickey Mouse', 'Donald Duck'}"
+			            doubleName="rightSideCartoonCharacters"
+			            doubleHeaderKey="doubleHeaderKey"
+			            doubleHeaderValue="--- Please Select ---"
+			            doubleEmptyOption="true"
+			            doubleMultiple="true" />
+
+			    <s:textarea
+			            label="Your Thougths"
+			            name="thoughts"
+			            tooltip="Enter your thoughts here" />
+
+			    <s:submit cssClass="btn btn-primary"/>
+			    <s:reset cssClass="btn btn-danger" onclick="alert('Resetting form now... Press OK to continue!');" />
+			</s:form>
+		</div>
+	</div>
+</div>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/tags/ui/example.vm
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/tags/ui/example.vm b/apps/showcase/src/main/webapp/WEB-INF/tags/ui/example.vm
new file mode 100644
index 0000000..23a5d58
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/tags/ui/example.vm
@@ -0,0 +1,39 @@
+<html>
+<head>
+	<title>Struts2 Showcase - UI Tags Example (Velocity)</title>
+	#shead()
+	#sxhead()
+</head>
+<body>
+<div class="page-header">
+	<h1>UI Tags Example (Velocity)</h1>
+</div>
+
+<div class="container-fluid">
+	<div class="row-fluid">
+		<div class="span12">
+
+			#sform ("action=exampleSubmitVelocity" "method=post" "enctype=multipart/form-data")
+			    #stextfield ("label=Name" "name=name")
+			    #sxdatetimepicker ("label=Birthday" "name=birthday")
+			    #sxdatetimepicker ("label=Wake up time" "name=wakeup" "type=time")
+			    #stextarea ("label=Biography" "name=bio" "cols=20" "rows=3")
+			    #sselect ("label=Favourite Color" "list={'Red', 'Blue', 'Green'}" "name=favouriteColor" "emptyOption=true" "headerKey=None" "headerValue=None")
+			    #sselect ("label=Favourite Language" "list=favouriteLanguages" "name=favouriteLanguage" "listKey=key" "listValue=description" "emptyOption=true" "headerKey=None" "headerValue=None")
+			    #scheckboxlist ("label=Friends" "list={'Patrick', 'Jason', 'Jay', 'Toby', 'Rene'}" "name=friends")
+			    #scheckbox ("label=Age 18+" "name=legalAge")
+			    #sdoubleselect ("label=State" "name=region" "list={'North', 'South'}" "value='North'" "doubleValue='Florida'" "doubleList=top == 'North' ? {'Oregon', 'Washington'} : {'Texas', 'Florida'}" "doubleName=state" "headerKey=-1" "headerValue=---------- Please Select ----------" "emptyOption=true" )
+			    #sdoubleselect ("label=Favourite Vehical" "name=favouriteVehicalType" "list=vehicalTypeList" "listKey=key" "listValue=description" "value='MotorcycleKey'" "doubleValue='YamahaKey'" "doubleList=vehicalSpecificList" "doubleListKey=key" "doubleListValue=description" "doubleName=favouriteVehicalSpecific" "headerKey=-1" "headerValue=---------- Please Select ----------" "emptyOption=true" )
+			    #sfile ("label=Picture" "name=picture")
+			    #soptiontransferselect ("label=Favourite Cartoons Characters" "name=leftSideCartoonCharacters" "leftTitle=Left Title" "rightTitle=Right Title" "list={'Popeye', 'He-Man', 'Spiderman'}" "multiple=true" "headerKey=headerKey" "headerValue=--- Please Select ---" "emptyOption=true" "doubleList={'Superman', 'Mickey Mouse', 'Donald Duck'}" "doubleName=rightSideCartoonCharacters" "doubleHeaderKey=doubleHeaderKey" "doubleHeaderValue=--- Please Select ---" "doubleEmptyOption=true" "doubleMultiple=true" )
+			    #ssubmit("cssClass=btn btn-primary")
+			    #sreset("cssClass=btn btn-danger")
+			#end
+
+			#surl ("id=url" "value=index.jsp")
+			<a href="${url}" class="btn btn-info"><i class="icon icon-arrow-left"></i> Back to index.jsp</a>
+		</div>
+	</div>
+</div>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/tags/ui/exampleSubmited.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/tags/ui/exampleSubmited.jsp b/apps/showcase/src/main/webapp/WEB-INF/tags/ui/exampleSubmited.jsp
new file mode 100644
index 0000000..5ef2126
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/tags/ui/exampleSubmited.jsp
@@ -0,0 +1,58 @@
+<%@taglib prefix="s" uri="/struts-tags" %>
+<html>
+<head>
+	<title>Struts2 Showcase - UI Tags Example - Example Submited</title>
+	<s:head/>
+</head>
+<body>
+<div class="page-header">
+	<h1>UI Tags Example - Example Submited</h1>
+</div>
+
+<div class="container-fluid">
+	<div class="row-fluid">
+		<div class="span12">
+			<table class="table table-striped table-bordered table-hover table-condensed">
+			    <s:label label="Name" name="name" />
+			    <s:label label="Birthday" name="birthday" />
+			    <tr>
+			        <td><label class="label">Wake up time:</label></td>
+			        <td>
+			           <s:date name="wakeup" format="hh:mm aa" />
+			        </td>
+			    </tr>
+			    <s:label label="Biography" name="bio" />
+			    <s:label label="Favourite Color" name="favouriteColor" />
+			    <s:label label="Friends" name="friends" />
+			    <s:label label="Best Friend" name="bestFriend" />
+			    <s:label label="Legal Age" name="legalAge" />
+			    <s:label label="Region" name="region" />
+			    <s:label label="State" name="state" />
+			    <s:label label="Picture" name="picture" />
+			    <s:label label="Favourite Language" name="favouriteLanguage" />
+			    <s:label label="Favourite Vehical Type" name="favouriteVehicalType" />
+			    <s:label label="Favourite Vehical Specific" name="favouriteVehicalSpecific" />
+			    <tr>
+			        <td><label class="label">Favourite Cartoon Characters (Left):</label></td>
+			        <td>
+			            <s:iterator value="leftSideCartoonCharacters" status="stat">
+			                <s:property value="%{#stat.count}" />.<s:property value="top" />&nbsp;
+			            </s:iterator>
+			        </td>
+			    </tr>
+			    <tr>
+			        <td><label class="label">Favourite Cartoon Characters (Right):</label></td>
+			        <td>
+			            <s:iterator value="rightSideCartoonCharacters" status="stat">
+			                <s:property value="%{#stat.count}" />.<s:property value="top" />&nbsp;
+			            </s:iterator>
+			        </td>
+			    </tr>
+			    <s:label label="Thoughts" name="thoughts" />
+
+			</table>
+		</div>
+	</div>
+</div>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/tags/ui/exampleSubmited.vm
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/tags/ui/exampleSubmited.vm b/apps/showcase/src/main/webapp/WEB-INF/tags/ui/exampleSubmited.vm
new file mode 100644
index 0000000..9646a4f
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/tags/ui/exampleSubmited.vm
@@ -0,0 +1,61 @@
+<html>
+<head>
+	<title>Struts2 Showcase - UI Tags Example (Velocity) - Example Submited </title>
+</head>
+<body>
+<div class="page-header">
+	<h1>UI Tags Example (Velocity) - Example Submited</h1>
+</div>
+
+<div class="container-fluid">
+	<div class="row-fluid">
+		<div class="span12">
+
+			<table>
+				#slabel ("label=Name" "name=name")
+				#slabel ("label=Birthday" "name=birthday")
+				<tr>
+			        <td><label class="label">Wake up time:</label></td>
+			        <td>
+			           #sdate ("name=wakeup" "format=hh:mm aa")
+			        </td>
+			    </tr>
+				#slabel ("label=Biography" "name=bio")
+				#slabel ("label=Favourite Color" "name=favouriteColor")
+				#slabel ("label=Friends" "name=friends")
+				#slabel ("label=Legal Age" "name=legalAge")
+				#slabel ("label=Region" "name=region")
+				#slabel ("label=State" "name=state")
+				#slabel ("label=Picture" "name=picture")
+				#slabel ("label=Favourite Language" "name=favouriteLanguage")
+				#slabel ("label=Favourite Vehical Type" "name=favouriteVehicalType")
+				#slabel ("label=Favourite Vehical Specific" "name=favouriteVehicalSpecific")
+				<tr>
+					<td>Favourite Cartoon Characters (Left):</td>
+					<td>
+			            #set ( $startCount = 1)
+					    #foreach( $item in $leftSideCartoonCharacters)
+							$startCount.${item}&nbsp;
+							#set ( $startCount = $startCount + 1)
+			            #end
+					</td>
+				</tr>
+				<tr>
+					<td>Favourite Cartoon Characters (Right):</td>
+					<td>
+			            #set ( $startCount = 1)
+					    #foreach( $item in $rightSideCartoonCharacters)
+							$startCount.${item}&nbsp;
+							#set ( $startCount = $startCount + 1)
+			            #end
+					</td>
+				</tr>
+			</table>
+
+			#surl ("id=url" "value=index.jsp")
+			#sa("href=${url}")Back to index.jsp#end
+		</div>
+	</div>
+</div>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/tags/ui/images/backgroundImage.jpg
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/tags/ui/images/backgroundImage.jpg b/apps/showcase/src/main/webapp/WEB-INF/tags/ui/images/backgroundImage.jpg
new file mode 100644
index 0000000..0f9cb92
Binary files /dev/null and b/apps/showcase/src/main/webapp/WEB-INF/tags/ui/images/backgroundImage.jpg differ

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/tags/ui/images/leopard.jpg
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/tags/ui/images/leopard.jpg b/apps/showcase/src/main/webapp/WEB-INF/tags/ui/images/leopard.jpg
new file mode 100644
index 0000000..f67f96b
Binary files /dev/null and b/apps/showcase/src/main/webapp/WEB-INF/tags/ui/images/leopard.jpg differ