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 »</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;"><s:debug /></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 <s:component ... > 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" />
+ </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" />
+ </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}
+ #set ( $startCount = $startCount + 1)
+ #end
+ </td>
+ </tr>
+ <tr>
+ <td>Favourite Cartoon Characters (Right):</td>
+ <td>
+ #set ( $startCount = 1)
+ #foreach( $item in $rightSideCartoonCharacters)
+ $startCount.${item}
+ #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