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/02 22:17:39 UTC

[01/10] Moves showcase related JSPs under WEB-INF

Repository: struts
Updated Branches:
  refs/heads/feature/move-jsps-under-webinf d07e8044b -> c0a312a82


http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/tags/ui/exampleSubmited.vm
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/tags/ui/exampleSubmited.vm b/apps/showcase/src/main/webapp/tags/ui/exampleSubmited.vm
deleted file mode 100644
index 9646a4f..0000000
--- a/apps/showcase/src/main/webapp/tags/ui/exampleSubmited.vm
+++ /dev/null
@@ -1,61 +0,0 @@
-<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/tags/ui/images/backgroundImage.jpg
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/tags/ui/images/backgroundImage.jpg b/apps/showcase/src/main/webapp/tags/ui/images/backgroundImage.jpg
deleted file mode 100644
index 0f9cb92..0000000
Binary files a/apps/showcase/src/main/webapp/tags/ui/images/backgroundImage.jpg and /dev/null differ

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

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/tags/ui/lotsOfOptiontransferselect.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/tags/ui/lotsOfOptiontransferselect.jsp b/apps/showcase/src/main/webapp/tags/ui/lotsOfOptiontransferselect.jsp
deleted file mode 100644
index d4aca42..0000000
--- a/apps/showcase/src/main/webapp/tags/ui/lotsOfOptiontransferselect.jsp
+++ /dev/null
@@ -1,101 +0,0 @@
-<%@taglib prefix="s" uri="/struts-tags" %>
-<html>
-<head>
-	<title>Struts2 Showcase - UI Tags - Optiontransferselect</title>
-	<s:head/>
-</head>
-<body>
-<div class="page-header">
-	<h1>UI Tags - Optiontransferselect</h1>
-</div>
-
-<div class="container-fluid">
-	<div class="row-fluid">
-		<div class="span12">
-
-			<s:form action="lotsOfOptiontransferselectSubmit" namespace="/tags/ui" method="post">
-			    <s:optiontransferselect
-			        tooltip="Select Your Favourite Cartoon Characters"
-			        headerKey="-1"
-			        headerValue="--- Please Select ---"
-			        doubleHeaderKey="-1"
-			        doubleHeaderValue="--- Please Select ---"
-			        emptyOption="true"
-			        doubleEmptyOption="true"
-			        label="Favourite Cartoon Characters"
-			        leftTitle="Favourite Cartoon Characters"
-			        rightTitle="Non Favourite Cartoon Characters"
-			        name="favouriteCartoonCharacters"
-			        list="defaultFavouriteCartoonCharacters"
-			        doubleName="notFavouriteCartoonCharacters"
-			        doubleList="defaultNotFavouriteCartoonCharacters" />
-
-			    <br/>
-
-			    <s:optiontransferselect
-			        tooltip="Select Your Favourite Cars"
-			        label="Favourite Cars"
-			        leftTitle="Favourite Cars"
-			        rightTitle="Non Favourite Cars"
-			        name="favouriteCars"
-			        list="defaultFavouriteCars"
-			        doubleName="notFavouriteCars"
-			        doubleList="defaultNotFavouriteCars" />
-
-			    <br/>
-
-			    <s:optiontransferselect
-			        tooltip="Select Your Favourite Motorcycles"
-			        headerKey="-1"
-			        headerValue="--- Please Select ---"
-			        doubleHeaderKey="-1"
-			        doubleHeaderValue="--- Please Select ---"
-			        label="Favourite Motorcycles"
-			        leftTitle="Favourite Motorcycles"
-			        rightTitle="Non Favourite Motorcycles"
-			        name="favouriteMotorcycles"
-			        list="defaultFavouriteMotorcycles"
-			        doubleName="notFavouriteMotorcycles"
-			        doubleList="defaultNotFavouriteMotorcycles" />
-
-			    <br/>
-
-			    <s:optiontransferselect
-			        tooltip="Select Your Favourite Countries"
-			        emptyOption="true"
-			        doubleEmptyOption="true"
-			        label="Favourite Countries"
-			        leftTitle="Favourite Countries"
-			        rightTitle="Non Favourite Countries"
-			        name="favouriteCountries"
-			        list="defaultFavouriteCountries"
-			        doubleName="notFavouriteCountries"
-			        doubleList="defaultNotFavouriteCountries"
-			          />
-
-			    <br/>
-
-			    <s:optiontransferselect
-			        tooltip="Pick One at a Time"
-			        label="Favourite Sport"
-			        leftTitle="Non Favourite Sports"
-			        rightTitle="Favourite Sports"
-			        name="nonFavouriteSports"
-			        list="defaultNonFavoriteSports"
-			        doubleName="favouriteSports"
-			        doubleList="defaultFavouriteSports"
-			        size="1" multiple="false"
-			        doubleSize="5" doubleMultiple="true"
-			        allowAddAllToLeft="false"
-			        allowAddAllToRight="false"
-			        allowSelectAll="false"
-			          />
-			    <br/>
-
-			    <s:submit value="Submit It" />
-			</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/tags/ui/lotsOfOptiontransferselectSubmit.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/tags/ui/lotsOfOptiontransferselectSubmit.jsp b/apps/showcase/src/main/webapp/tags/ui/lotsOfOptiontransferselectSubmit.jsp
deleted file mode 100644
index 03d6adc..0000000
--- a/apps/showcase/src/main/webapp/tags/ui/lotsOfOptiontransferselectSubmit.jsp
+++ /dev/null
@@ -1,103 +0,0 @@
-<%@taglib prefix="s" uri="/struts-tags" %>
-<html>
-<head>
-	<title>Struts2 Showcase - UI Tags - Optiontransferselect Result</title>
-	<s:head/>
-</head>
-<body>
-<div class="page-header">
-	<h1>UI Tags - Optiontransferselect Result</h1>
-</div>
-
-<div class="container-fluid">
-	<div class="row-fluid">
-		<div class="span12">
-
-		    <table>
-		    <tr>
-		        <td>Favourite Cartoons:</td>
-		        <td>
-		        <s:iterator value="favouriteCartoonCharacters" status="stat">
-		            <s:property value="%{#stat.count}" />.<s:property />&nbsp;
-		        </s:iterator>
-		        </td>
-		    </tr>
-		    <tr>
-		        <td>Non Favourite Cartoons:</td>
-		        <td>
-		        <s:iterator value="notFavouriteCartoonCharacters" status="stat">
-		            <s:property value="%{#stat.count}" />.<s:property />&nbsp;
-		        </s:iterator>
-		        </td>
-		    </tr>
-		    <tr>
-		        <td>Favourite Cars:</td>
-		        <td>
-		        <s:iterator value="favouriteCars" status="stat">
-		            <s:property value="%{#stat.count}" />.<s:property />&nbsp;
-		        </s:iterator>
-		        </td>
-		    </tr>
-		    <tr>
-		        <td>Non Favourite Cars:</td>
-		        <td>
-		        <s:iterator value="notFavouriteCars" status="stat">
-		            <s:property value="%{#stat.count}" />.<s:property />&nbsp;
-		        </s:iterator>
-		        </td>
-		    </tr>
-		    <tr>
-		        <td>Favourite Motorcycles:</td>
-		        <td>
-		        <s:iterator value="favouriteMotorcycles" status="stat">
-		            <s:property value="%{#stat.count}" />.<s:property />&nbsp;
-		        </s:iterator>
-		        </td>
-		    </tr>
-		    <tr>
-		        <td>Non Favourite Motorcycles:</td>
-		        <td>
-		        <s:iterator value="notFavouriteMotorcycles" status="stat">
-		            <s:property value="%{#stat.count}" />.<s:property />&nbsp;
-		        </s:iterator>
-		        </td>
-		    </tr>
-		    <tr>
-		        <td>Favourite Countries:</td>
-		        <td>
-		        <s:iterator value="favouriteCountries" status="stat">
-		            <s:property value="%{#stat.count}" />.<s:property />&nbsp;
-		        </s:iterator>
-		        </td>
-		    </tr>
-		    <tr>
-		        <td>Non Favourite Countries:</td>
-		        <td>
-		            <s:iterator value="notFavouriteCountries" status="stat">
-		                <s:property value="%{#stat.count}" />.<s:property />&nbsp;
-		            </s:iterator>
-		        </td>
-		    </tr>
-		      <tr>
-		        <td>Favourite Sports:</td>
-		        <td>
-		            <s:iterator value="favouriteSports" status="stat">
-		                <s:property value="%{#stat.count}" />.<s:property />&nbsp;
-		            </s:iterator>
-		        </td>
-		    </tr>
-
-		     <tr>
-		        <td>Non Favourite Sports:</td>
-		        <td>
-		            <s:iterator value="nonfavouriteSports" status="stat">
-		                <s:property value="%{#stat.count}" />.<s:property />&nbsp;
-		            </s:iterator>
-		        </td>
-		    </tr>
-		    </table>
-		</div>
-	</div>
-</div>
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/tags/ui/moreSelects.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/tags/ui/moreSelects.jsp b/apps/showcase/src/main/webapp/tags/ui/moreSelects.jsp
deleted file mode 100644
index 39019f0..0000000
--- a/apps/showcase/src/main/webapp/tags/ui/moreSelects.jsp
+++ /dev/null
@@ -1,69 +0,0 @@
-<%@taglib prefix="s" uri="/struts-tags" %>
-<html>
-<head>
-	<title>Struts2 Showcase - UI Tags - More Select Box UI Examples</title>
-	<s:head/>
-</head>
-<body>
-<div class="page-header">
-	<h1>UI Tags - More Select Box UI Examples</h1>
-</div>
-
-<div class="container-fluid">
-	<div class="row-fluid">
-		<div class="span12">
-
-			<s:form action="moreSelectsSubmit" namespace="/tags/ui" method="post">
-
-		    <s:updownselect
-		        tooltip="Prioritized Your Favourite Cartoon Characters"
-		        label="Prioritised Favourite Cartoon Characters"
-		        list="defaultFavouriteCartoonCharacters"
-		        name="prioritisedFavouriteCartoonCharacters"
-		        headerKey="-1"
-		        headerValue="--- Please Order ---"
-		        emptyOption="true"  />
-
-		    <br/>
-
-		    <s:updownselect
-		        tooltip="Prioritise Your Favourite Cars"
-		        label="Prioritised Favourite Cars"
-		        list="defaultFavouriteCars"
-		        name="prioritisedFavouriteCars"
-		        headerKey="-10"
-		        headerValue="--- Please Order ---" />
-
-		    <br/>
-
-		    <s:updownselect
-		        tooltip="Prioritised Your Favourite Countries"
-		        label="Prioritised Favourite Countries"
-		        list="defaultFavouriteCountries"
-		        name="prioritisedFavouriteCountries"
-		        emptyOption="true"
-		        value="{'england', 'brazil'}" />
-
-		    <br/>
-
-		    <s:inputtransferselect
-		        list="defaultFavouriteNumbers"
-		        name="favouriteNumbers"
-		        label="Numbers"/>
-
-		    <s:select label="Favourite Cities"
-		        list="availableCities"
-		        name="favouriteCities"
-		        value="%{defaultFavouriteCities}"
-		        multiple="true" size="4"/>
-
-		    <s:submit value="Submit It" cssClass="btn btn-primary"/>
-
-		    <br/>
-
-		</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/tags/ui/moreSelectsSubmit.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/tags/ui/moreSelectsSubmit.jsp b/apps/showcase/src/main/webapp/tags/ui/moreSelectsSubmit.jsp
deleted file mode 100644
index 82a0a70..0000000
--- a/apps/showcase/src/main/webapp/tags/ui/moreSelectsSubmit.jsp
+++ /dev/null
@@ -1,63 +0,0 @@
-<%@taglib prefix="s" uri="/struts-tags" %>
-<html>
-<head>
-	<title>Struts2 Showcase - UI Tags - More Select Box UI Examples - Result</title>
-	<s:head/>
-</head>
-<body>
-<div class="page-header">
-	<h1>UI Tags - More Select Box UI Examples - Result</h1>
-</div>
-
-<div class="container-fluid">
-	<div class="row-fluid">
-		<div class="span12">
-
-
-			<table>
-			    <tr>
-			        <td>Prioritised Favourite Cartoon Characters:</td>
-			        <td>
-			            <s:iterator value="prioritisedFavouriteCartoonCharacters" status="stat">
-			                <s:property value="%{#stat.count}" />.<s:property />&nbsp;
-			            </s:iterator>
-			        </td>
-			    </tr>
-			    <tr>
-			        <td>Prioritised Favourite Cars:</td>
-			        <td>
-			            <s:iterator value="prioritisedFavouriteCars" status="stat">
-			                <s:property value="%{#stat.count}" />.<s:property />&nbsp;
-			            </s:iterator>
-			        </td>
-			    </tr>
-			    <tr>
-			        <td>Prioritised Favourite Countries</td>
-			        <td>
-			            <s:iterator value="prioritisedFavouriteCountries" status="stat">
-			                <s:property value="%{#stat.count}" />.<s:property />&nbsp;
-			            </s:iterator>
-			        </td>
-			    </tr>
-			        <tr>
-			        <td>Favourite Cities</td>
-			        <td>
-			            <s:iterator value="favouriteCities" status="stat">
-			                <s:property value="%{#stat.count}" />.<s:property />&nbsp;
-			            </s:iterator>
-			        </td>
-			    </tr>
-			        <tr>
-			        <td>Favourite Numbers</td>
-			        <td>
-			            <s:iterator value="favouriteNumbers" status="stat">
-			                <s:property value="%{#stat.count}" />.<s:property />&nbsp;
-			            </s:iterator>
-			        </td>
-			    </tr>
-		    </table>
-		</div>
-	</div>
-</div>
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/tags/ui/staticTreeSelect.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/tags/ui/staticTreeSelect.jsp b/apps/showcase/src/main/webapp/tags/ui/staticTreeSelect.jsp
deleted file mode 100644
index b126aa9..0000000
--- a/apps/showcase/src/main/webapp/tags/ui/staticTreeSelect.jsp
+++ /dev/null
@@ -1,11 +0,0 @@
-<%@taglib prefix="s" uri="/struts-tags" %>
-<%@ taglib prefix="sx" uri="/struts-dojo-tags" %>
-
-<%
-    request.setAttribute("decorator", "none");
-    response.setHeader("Cache-Control","no-cache"); //HTTP 1.1
-    response.setHeader("Pragma","no-cache"); //HTTP 1.0
-    response.setDateHeader ("Expires", 0); //prevents caching at the proxy server
-%>
-
-${parameters.nodeId[0]}

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/tags/ui/timepicker/index.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/tags/ui/timepicker/index.jsp b/apps/showcase/src/main/webapp/tags/ui/timepicker/index.jsp
deleted file mode 100644
index 4c98f12..0000000
--- a/apps/showcase/src/main/webapp/tags/ui/timepicker/index.jsp
+++ /dev/null
@@ -1,31 +0,0 @@
-<%@taglib prefix="s" uri="/struts-tags" %>
-<%@ taglib prefix="sx" uri="/struts-dojo-tags" %>
-<html>
-<head>
-	<title>Struts2 Showcase - UI Tags - Timepicker Tag</title>
-	<sx:head extraLocales="en-us,nl-nl,de-de" />
-</head>
-<body>
-<div class="page-header">
-	<h1>UI Tags - Timepicker Tag</h1>
-</div>
-
-<div class="container-fluid">
-	<div class="row-fluid">
-		<div class="span12">
-
-			<table>
-				<sx:datetimepicker label="toggleType='wipe'" type="time" value="%{'10:30'}" toggleType="wipe" toggleDuration="300"/>
-				<sx:datetimepicker label="toggleType='explode'" type="time" value="%{'13:00'}" toggleType="explode" toggleDuration="500"/>
-				<sx:datetimepicker label="toggleType='fade'" type="time" value="%{'13:00'}" toggleType="fade" toggleDuration="500"/>
-				<sx:datetimepicker label="With value='today'" name="dddp4" type="time" value="%{'today'}" />
-				<sx:datetimepicker label="US format, empty" name="dddp5" type="time" language="en-us" />
-				<sx:datetimepicker label="US format, 13:00 hours" name="dddp6" type="time" value="%{'13:00'}" language="en-us" />
-				<sx:datetimepicker label="In German" name="dddp7" type="time" value="%{'13:00'}" language="de" />
-				<sx:datetimepicker label="In Dutch" name="dddp8" type="time" value="%{'13:00'}" language="nl" />
-			</table>
-		</div>
-	</div>
-</div>
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/tags/ui/treeExampleAjaxDynamic.ftl
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/tags/ui/treeExampleAjaxDynamic.ftl b/apps/showcase/src/main/webapp/tags/ui/treeExampleAjaxDynamic.ftl
deleted file mode 100644
index 8c78f6c..0000000
--- a/apps/showcase/src/main/webapp/tags/ui/treeExampleAjaxDynamic.ftl
+++ /dev/null
@@ -1,9 +0,0 @@
-[
-<#list category.children as node>
-  {
-    label: '${node.name}',
-    id: '${node.id}',
-    hasChildren: ${(node.children.size() > 0)?string}
-  },
-</#list>
-] 
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/tags/ui/treeExampleAjaxDynamic.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/tags/ui/treeExampleAjaxDynamic.jsp b/apps/showcase/src/main/webapp/tags/ui/treeExampleAjaxDynamic.jsp
deleted file mode 100644
index e858fd5..0000000
--- a/apps/showcase/src/main/webapp/tags/ui/treeExampleAjaxDynamic.jsp
+++ /dev/null
@@ -1,25 +0,0 @@
-<%@taglib prefix="s" uri="/struts-tags" %>
-<%@ taglib prefix="sx" uri="/struts-dojo-tags" %>
-<html>
-<head>
-	<title>Struts2 Showcase - UI Tags - Tree Example AJAX (Dynamic)</title>
-	<sx:head />
-</head>
-<body>
-<div class="page-header">
-	<h1>UI Tags - Tree Example AJAX (Dynamic)</h1>
-</div>
-
-<div class="container-fluid">
-	<div class="row-fluid">
-		<div class="span12">
-
-			<s:url var="nodesUrl" namespace="/nodecorate" action="getNodes" />
-			<div style="float:left; margin-right: 50px;">
-			    <sx:tree id="tree" href="%{#nodesUrl}" />
-			</div>
-		</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/tags/ui/treeExampleDynamic.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/tags/ui/treeExampleDynamic.jsp b/apps/showcase/src/main/webapp/tags/ui/treeExampleDynamic.jsp
deleted file mode 100644
index 07a5adb..0000000
--- a/apps/showcase/src/main/webapp/tags/ui/treeExampleDynamic.jsp
+++ /dev/null
@@ -1,54 +0,0 @@
-<%@taglib prefix="s" uri="/struts-tags" %>
-<%@ taglib prefix="sx" uri="/struts-dojo-tags" %>
-<html>
-<head>
-	<title>Struts2 Showcase - UI Tags - Tree Example (Dynamic)</title>
-	<sx:head/>
-</head>
-<body>
-<div class="page-header">
-	<h1>UI Tags - Tree Example (Dynamic)</h1>
-</div>
-
-<div class="container-fluid">
-	<div class="row-fluid">
-		<div class="span12">
-
-			<!-- START SNIPPET: treeExampleDynamicJsp -->
-
-			<script language="JavaScript" type="text/javascript">
-			    dojo.event.topic.subscribe("treeSelected", function treeNodeSelected(node) {
-			        dojo.io.bind({
-			            url: "<s:url value='/tags/ui/ajax/dynamicTreeSelectAction.action'/>?nodeId="+node.node.widgetId,
-			            load: function(type, data, evt) {
-			                var divDisplay = dojo.byId("displayId");
-			                divDisplay.innerHTML=data;
-			            },
-			            mimeType: "text/html"
-			        });
-			    });
-			</script>
-
-
-
-			<div style="float:left; margin-right: 50px;">
-			<sx:tree
-			    id="tree"
-			    rootNode="%{treeRootNode}"
-			    childCollectionProperty="children"
-			    nodeIdProperty="id"
-			    nodeTitleProperty="name"
-			    treeSelectedTopic="treeSelected">
-			</sx:tree>
-			</div>
-
-			<div id="displayId">
-			Please click on any of the tree nodes.
-			</div>
-
-			<!-- END SNIPPET: treeExampleDynamicJsp -->
-		</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/tags/ui/treeExampleStatic.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/tags/ui/treeExampleStatic.jsp b/apps/showcase/src/main/webapp/tags/ui/treeExampleStatic.jsp
deleted file mode 100644
index 76ab074..0000000
--- a/apps/showcase/src/main/webapp/tags/ui/treeExampleStatic.jsp
+++ /dev/null
@@ -1,61 +0,0 @@
-<%@taglib prefix="s" uri="/struts-tags" %>
-<%@ taglib prefix="sx" uri="/struts-dojo-tags" %>
-<html>
-<head>
-	<title>Struts2 Showcase - UI Tags - Tree Example (Static)</title>
-<sx:head/>
-</head>
-<body>
-<div class="page-header">
-	<h1>UI Tags - Tree Example (Static)</h1>
-</div>
-
-<div class="container-fluid">
-	<div class="row-fluid">
-		<div class="span12">
-
-			<!-- START SNIPPET: treeExampleStaticJsp -->
-
-			<script language="JavaScript" type="text/javascript">
-			    dojo.event.topic.subscribe("treeSelected", function treeNodeSelected(node) {
-			        dojo.io.bind({
-			            url: "<s:url value='/tags/ui/ajax/staticTreeSelectAction.action'/>?nodeId="+node.node.title,
-			            load: function(type, data, evt) {
-			                var divDisplay = dojo.byId("displayIt");
-			                divDisplay.innerHTML=data;
-			            },
-			            mimeType: "text/html"
-			        });
-			    });
-			</script>
-
-
-			<div style="float:left; margin-right: 50px;">
-			<sx:tree label="parent"  templateCssPath="/struts/tree.css"
-			showRootGrid="true" showGrid="true" treeSelectedTopic="treeSelected">
-			    <sx:treenode label="child1" >
-			        <sx:treenode label="grandchild1" id="grandchild1Id"/>
-			        <sx:treenode label="grandchild2" id="grandchild2Id"/>
-			        <sx:treenode label="grandchild3" id="grandchild3Id"/>
-			    </sx:treenode>
-			    <sx:treenode label="child2" id="child2Id"/>
-			    <sx:treenode label="child3" id="child3Id"/>
-			    <sx:treenode label="child4" id="child4Id"/>
-			    <sx:treenode label="child5" id="child5Id">
-			        <sx:treenode label="gChild1" id="gChild1Id"/>
-			        <sx:treenode label="gChild2" id="gChild2Id"/>
-			    </sx:treenode>
-			</sx:tree>
-			</div>
-
-
-			<div id="displayIt">
-			Please click on any node on the tree.
-			</div>
-
-			<!-- END SNIPPET: treeExampleStaticJsp  -->
-		</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/template/xhtml/mytemplate.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/template/xhtml/mytemplate.jsp b/apps/showcase/src/main/webapp/template/xhtml/mytemplate.jsp
deleted file mode 100644
index 7ebb967..0000000
--- a/apps/showcase/src/main/webapp/template/xhtml/mytemplate.jsp
+++ /dev/null
@@ -1,9 +0,0 @@
-
-<%@taglib prefix="s" uri="/struts-tags" %>
-
-<div style="background-color:yellow;">
-<p>
-JSP  Custom Template -
-parameter 'paramName' - <s:property value="%{parameters.paramName}" />
-</p>
-</div>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/tiles/body.ftl
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/tiles/body.ftl b/apps/showcase/src/main/webapp/tiles/body.ftl
deleted file mode 100644
index bdaac05..0000000
--- a/apps/showcase/src/main/webapp/tiles/body.ftl
+++ /dev/null
@@ -1,16 +0,0 @@
-<div class="container-fluid">
-	<div class="row-fluid">
-		<div class="span12">
-			<div>
-				<p>This example illustrates the freemarker support in the Struts/Tiles Plugin.</p>
-
-				<p>Tiles 2 is an effort to extract the Tiles library from Struts. It is currently housed
-					in the Sandbox area of the Apache Struts Subversion repository.</p>
-
-				<@s.form>
-					<@s.textfield name="Textfield" value="Textfield"/>
-				</...@s.form>
-			</div>
-		</div>
-	</div>
-</div>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/tiles/body.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/tiles/body.jsp b/apps/showcase/src/main/webapp/tiles/body.jsp
deleted file mode 100644
index 095762f..0000000
--- a/apps/showcase/src/main/webapp/tiles/body.jsp
+++ /dev/null
@@ -1,24 +0,0 @@
-<%@taglib prefix="s" uri="/struts-tags" %>
-<div class="container-fluid">
-	<div class="row-fluid">
-		<div class="span12">
-			<div>
-				<p>This example illustrates the Struts/Tiles Plugin.</p>
-
-				<p>Tiles 2 is an effort to extract the Tiles library from Struts. It is currently housed
-					in the Sandbox area of the Apache Struts Subversion repository.</p>
-
-				<h4>Features</h4>
-				<ul>
-					<li>
-						<a href="freemarker.action">View FreeMarker Example</a>
-					</li>
-					<li>
-						<a href="freemarkerLayout.action">View Example with a FreeMarker Layout</a>
-					</li>
-				</ul>
-
-			</div>
-		</div>
-	</div>
-</div>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/tiles/header.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/tiles/header.jsp b/apps/showcase/src/main/webapp/tiles/header.jsp
deleted file mode 100644
index d98f001..0000000
--- a/apps/showcase/src/main/webapp/tiles/header.jsp
+++ /dev/null
@@ -1,3 +0,0 @@
-<div class="page-header">
-	<h1>${title}</h1>
-</div>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/tiles/layout.ftl
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/tiles/layout.ftl b/apps/showcase/src/main/webapp/tiles/layout.ftl
deleted file mode 100644
index 9ce5915..0000000
--- a/apps/showcase/src/main/webapp/tiles/layout.ftl
+++ /dev/null
@@ -1,10 +0,0 @@
-<#assign tiles=JspTaglibs["http://tiles.apache.org/tags-tiles"]>
-<@tiles.importAttribute name="title" scope="request"/>
-<html>
-    <head><title>Struts2 Showcase - <@tiles.getAsString name="title"/></title></head>
-<body>
-    <@tiles.insertAttribute name="header"/>
-    <@tiles.insertAttribute name="body"/>
-	<p>Notice that this is a layout made in FreeMarker</p>
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/tiles/layout.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/tiles/layout.jsp b/apps/showcase/src/main/webapp/tiles/layout.jsp
deleted file mode 100644
index 964d014..0000000
--- a/apps/showcase/src/main/webapp/tiles/layout.jsp
+++ /dev/null
@@ -1,13 +0,0 @@
-<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles" %>
-<%@ taglib prefix="s" uri="/struts-tags" %>
-
-<%-- Show usage; Used in Header --%>
-<tiles:importAttribute name="title" scope="request"/>
-<html>
-    <head><title>Struts2 Showcase - <tiles:getAsString name="title"/></title></head>
-<body>
-    <tiles:insertAttribute name="header"/>
-    <tiles:insertAttribute name="body"/>
-	<p>Notice that this is a layout made in JSP</p>
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/token/doublePost.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/token/doublePost.jsp b/apps/showcase/src/main/webapp/token/doublePost.jsp
deleted file mode 100644
index 761d44b..0000000
--- a/apps/showcase/src/main/webapp/token/doublePost.jsp
+++ /dev/null
@@ -1,28 +0,0 @@
-<%@ taglib prefix="s" uri="/struts-tags" %>
-<html>
-<head>
-	<title>Struts2 Showcase - Token Examples - Double post</title>
-</head>
-
-<body>
-<div class="page-header">
-	<h1>Token Examples - Double post</h1>
-</div>
-
-
-<div class="container-fluid">
-	<div class="row-fluid">
-		<div class="span12">
-
-			<p class="alert alert-warning">
-				Double post. Struts intercepted this request and prevents the action from executing again.
-			</p>
-
-			<p/>
-			Click here to
-			<s:url var="back" value="/token/index.jsp"/><s:a href="%{back}">return</s:a>.
-		</div>
-	</div>
-</div>
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/token/example1.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/token/example1.jsp b/apps/showcase/src/main/webapp/token/example1.jsp
deleted file mode 100644
index 9495671..0000000
--- a/apps/showcase/src/main/webapp/token/example1.jsp
+++ /dev/null
@@ -1,50 +0,0 @@
-<%@ taglib prefix="s" uri="/struts-tags" %>
-<html>
-<head>
-	<title>Struts2 Showcase - Token Examples - Example 1</title>
-</head>
-
-<body>
-<div class="page-header">
-	<h1>Token Examples - Example 1</h1>
-</div>
-
-
-<div class="container-fluid">
-	<div class="row-fluid">
-		<div class="span12">
-
-			<p>
-			<b>Example 1:</b> This example illustrates a situation where you can transfer money from
-			one account to another. We use the token to prevent double posts so the transfer only
-			happens once.
-			<p/>
-
-			<p>
-			<br/>Balance of source account: <s:property value="#session.balanceSource"/>
-			<br/>Balance of destination account: <s:property value="#session.balanceDestination"/>
-			<p/>
-
-			<s:form action="transfer">
-				<s:token/>
-				<s:textfield label="Amount" name="amount" required="true" value="100"/>
-				<s:submit value="Transfer money" cssClass="btn btn-primary"/>
-			</s:form>
-
-		</div>
-	</div>
-</div>
-</body>
-</html>
-
-
-<%@ taglib prefix="s" uri="/struts-tags" %>
-<html>
-    <head><title>Token Examples</title></head>
-
-<body>
-    <h1>Token Example 1</h1>
-
-
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/token/example2.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/token/example2.jsp b/apps/showcase/src/main/webapp/token/example2.jsp
deleted file mode 100644
index 7042ce8..0000000
--- a/apps/showcase/src/main/webapp/token/example2.jsp
+++ /dev/null
@@ -1,38 +0,0 @@
-<%@ taglib prefix="s" uri="/struts-tags" %>
-<html>
-<head>
-	<title>Struts2 Showcase - Token Examples - Example 2</title>
-</head>
-
-<body>
-<div class="page-header">
-	<h1>Token Examples - Example 2</h1>
-</div>
-
-
-<div class="container-fluid">
-	<div class="row-fluid">
-		<div class="span12">
-
-			<p>
-				<b>Example 2:</b> This example illustrates a situation where you can transfer money from
-				one account to another. We use the token to prevent double posts so the transfer only
-				happens once. This action will redirect after you have submitted the form.
-			<p/>
-
-			<p>
-				Balance of source account: <s:property value="#session.balanceSource"/>
-			<br/>Balance of destination account: <s:property value="#session.balanceDestination"/>
-			<p/>
-
-			<s:form action="transfer2">
-				<s:token/>
-				<s:textfield label="Amount" name="amount" required="true" value="200"/>
-				<s:submit value="Transfer money" 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/token/example3.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/token/example3.jsp b/apps/showcase/src/main/webapp/token/example3.jsp
deleted file mode 100644
index 4cf2b5a..0000000
--- a/apps/showcase/src/main/webapp/token/example3.jsp
+++ /dev/null
@@ -1,37 +0,0 @@
-<%@ taglib prefix="s" uri="/struts-tags" %>
-<html>
-<head>
-	<title>Struts2 Showcase - Token Examples - Example 3</title>
-</head>
-
-<body>
-<div class="page-header">
-	<h1>Token Examples - Example 3</h1>
-</div>
-
-
-<div class="container-fluid">
-	<div class="row-fluid">
-		<div class="span12">
-
-			<p>
-				<b>Example 3:</b> This example illustrates a situation where you can transfer money from
-				one account to another. We use the token to prevent double posts so the transfer only
-				happens once. This example uses the token session based interceptor and redirect after post.
-			<p/>
-
-			<p>Balance of source account: <s:property value="#session.balanceSource"/>
-			<br/>Balance of destination account: <s:property value="#session.balanceDestination"/>
-			<p/>
-
-			<s:form action="transfer3">
-				<s:token/>
-				<s:textfield label="Amount" name="amount" required="true" value="300"/>
-				<s:submit value="Transfer money" 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/token/example4.ftl
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/token/example4.ftl b/apps/showcase/src/main/webapp/token/example4.ftl
deleted file mode 100644
index e66b045..0000000
--- a/apps/showcase/src/main/webapp/token/example4.ftl
+++ /dev/null
@@ -1,40 +0,0 @@
-<html>
-<head>
-	<title>Struts2 Showcase - Token Examples - Example 4</title>
-</head>
-
-<body>
-<div class="page-header">
-	<h1>Token Examples - Example 4</h1>
-</div>
-
-
-<div class="container-fluid">
-	<div class="row-fluid">
-		<div class="span12">
-
-			<p>
-				<b>Example 4:</b> This example illustrates a situation where you can transfer money from
-				one account to another. We use the token to prevent double posts so the transfer only
-				happens once. This page is rendered using freemarker. See the xwork-token.xml where
-				we must also use the createSession interceptor to be sure that a HttpSession exists
-				when freemarker renders this webpage, otherwise the @s.token tag causes an exception
-				while rendering the page.
-
-			<p/>
-
-			<p>Balance of source account: <@s.property value="#session.balanceSource"/>
-				<br/>Balance of destination account: <@s.property value="#session.balanceDestination"/>
-
-			<p/>
-
-		<@s.form action="transfer4">
-			<@s.token/>
-			<@s.textfield label="Amount" name="amount" required="true" value="400"/>
-			<@s.submit value="Transfer money" 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/token/index.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/token/index.jsp b/apps/showcase/src/main/webapp/token/index.jsp
deleted file mode 100644
index b65ff4e..0000000
--- a/apps/showcase/src/main/webapp/token/index.jsp
+++ /dev/null
@@ -1,48 +0,0 @@
-<%@ taglib prefix="s" uri="/struts-tags" %>
-<html>
-<head>
-	<title>Struts2 Showcase - Token Examples (double post)</title>
-</head>
-
-<body>
-<div class="page-header">
-	<h1>Token Examples</h1>
-</div>
-
-
-<div class="container-fluid">
-	<div class="row-fluid">
-		<div class="span12" style="text-align: center;">
-
-			<p>
-				These examples illustrate Struts build in support of using tokens to prevent double post.
-			<p/>
-			<p>
-			You have a web page where user can input data and press a button to submit.
-			There could be a problem that the user submit the data many times, by either clicking the
-			button many times, or use the browser back button and then submit the form again.
-			<br/> A good solution is to use a hidden token in the form. The token is autogenerated and unique
-			from time to time. This token is then validated with the HttpSession that it is the first time
-			it is submitted, if not we have a double post and therefore can prevent the second submit action.
-			<p/>
-			<p>
-			For more information check out javadoc for org.apache.struts2.interceptor.TokenInterceptor
-			and org.apache.struts2.interceptor.TokenSessionStoreInterceptor.
-			<p/>
-
-			<br/>
-			<br/><a href="tokenPrepare!input.action">Example 1 (token based .jsp example)</a>
-
-			<br/>
-			<br/><a href="tokenPrepare2!input.action">Example 2 (as example 1 with redirect after post)</a>
-
-			<br/>
-			<br/><a href="tokenPrepare3!input.action">Example 3 (token-session based .jsp example)</a>
-
-			<br/>
-			<br/><a href="tokenPrepare4!input.action">Example 4 (token based freemarker example)</a>
-		</div>
-	</div>
-</div>
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/token/transferDone.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/token/transferDone.jsp b/apps/showcase/src/main/webapp/token/transferDone.jsp
deleted file mode 100644
index a67078c..0000000
--- a/apps/showcase/src/main/webapp/token/transferDone.jsp
+++ /dev/null
@@ -1,48 +0,0 @@
-<%@ taglib prefix="s" uri="/struts-tags" %>
-<html>
-<head>
-	<title>Struts2 Showcase - Token Examples - Transfer is Done</title>
-</head>
-
-<body>
-<div class="page-header">
-	<h1>Token Examples - Transfer is Done</h1>
-</div>
-
-
-<div class="container-fluid">
-	<div class="row-fluid">
-		<div class="span12">
-
-			<p>
-				The transfer is done at
-				<s:text name="token.transfer.time">
-					<s:param value="#session.time"/>
-				</s:text>
-
-				<br/>New balance of source account:
-				<s:property value="#session.balanceSource"/>
-				<br/>New balance of destination account:
-				<s:property value="#session.balanceDestination"/>
-
-			<p/>
-
-			<p>
-				Try using the browser back button and submit the form again. This should result in a double post
-				that Struts should intercept and handle accordingly.
-
-			<p/>
-
-			<p>
-				For example 3 (session token) you should notice that the date/time stays the same. This interceptor
-				catches that this is a double post but doens't display the double post page, but just renders the
-				web page result from the first post.
-
-			<p/>
-			Click here to
-			<s:url var="back" value="/token/index.jsp"/><s:a href="%{back}">return</s:a>.
-		</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/validation/clientSideValidationExample.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/validation/clientSideValidationExample.jsp b/apps/showcase/src/main/webapp/validation/clientSideValidationExample.jsp
deleted file mode 100644
index f199c31..0000000
--- a/apps/showcase/src/main/webapp/validation/clientSideValidationExample.jsp
+++ /dev/null
@@ -1,64 +0,0 @@
-<%--
-   fieldValidatorExample.jsp
-
-   @author tm_jee
-   @version $Date$ $Id$
---%>
-
-<%@taglib prefix="s" uri="/struts-tags" %>
-
-<html>
-<head>
-	<title>Struts2 Showcase - Validation - Field Validators Example</title>
-	<s:head/>
-</head>
-<body>
-
-<div class="page-header">
-	<h1>Client Side Validation Examples</h1>
-</div>
-
-<div class="container-fluid">
-	<div class="row-fluid">
-		<div class="span12">
-
-			<!-- START SNIPPET: fieldValidatorsExample -->
-
-			<h3>All Field Errors Will Appear Here</h3>
-			<s:fielderror/>
-			<hr/>
-
-			<h3>Field Error due to 'Required String Validator Field' Will Appear Here</h3>
-			<s:fielderror>
-				<s:param value="%{'requiredStringValidatorField'}"/>
-			</s:fielderror>
-			<hr/>
-
-			<h3>Field Error due to 'String Length Validator Field' Will Appear Here</h3>
-			<s:fielderror>
-				<s:param>stringLengthValidatorField</s:param>
-			</s:fielderror>
-			<hr/>
-
-			<s:form action="submitClientSideValidationExample" namespace="/validation" method="POST" validate="true">
-				<s:textfield label="Required Validator Field" name="requiredValidatorField"/>
-				<s:textfield label="Required String Validator Field" name="requiredStringValidatorField"/>
-				<s:textfield label="Integer Validator Field" name="integerValidatorField"/>
-				<s:textfield label="Date Validator Field" name="dateValidatorField"/>
-				<s:textfield label="Email Validator Field" name="emailValidatorField"/>
-				<s:textfield label="URL Validator Field" name="urlValidatorField"/>
-				<s:textfield label="String Length Validator Field" name="stringLengthValidatorField"/>
-				<s:textfield label="Regex Validator Field" name="regexValidatorField"/>
-				<s:textfield label="Field Expression Validator Field" name="fieldExpressionValidatorField"/>
-				<s:submit label="Submit" cssClass="btn btn-primary"/>
-			</s:form>
-
-			<!-- END SNIPPET: fieldValidatorsExample -->
-
-
-			<s:include value="footer.jsp"/>
-		</div>
-	</div>
-</div>
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/validation/fieldValidatorsExample.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/validation/fieldValidatorsExample.jsp b/apps/showcase/src/main/webapp/validation/fieldValidatorsExample.jsp
deleted file mode 100644
index 13a29f0..0000000
--- a/apps/showcase/src/main/webapp/validation/fieldValidatorsExample.jsp
+++ /dev/null
@@ -1,63 +0,0 @@
-<%-- 
-   fieldValidatorExample.jsp
-   
-   @author tm_jee
-   @version $Date$ $Id$
---%>
-
-<%@taglib prefix="s" uri="/struts-tags" %>
-
-<html>
-<head>
-    <title>Struts2 Showcase - Validation - Field Validators Example</title>
-    <s:head theme="xhtml"/>
-</head>
-<body>
-
-<div class="page-header">
-    <h1>Field Validation Examples</h1>
-</div>
-
-<div class="container-fluid">
-    <div class="row-fluid">
-        <div class="span12">
-
-            <!-- START SNIPPET: fieldValidatorsExample -->
-
-            <h3>All Field Errors Will Appear Here</h3>
-            <s:fielderror/>
-            <hr/>
-
-            <h3>Field Error due to 'Required String Validator Field' Will Appear Here</h3>
-            <s:fielderror>
-                <s:param value="%{'requiredStringValidatorField'}"/>
-            </s:fielderror>
-            <hr/>
-
-            <h3>Field Error due to 'String Length Validator Field' Will Appear Here</h3>
-            <s:fielderror>
-                <s:param>stringLengthValidatorField</s:param>
-            </s:fielderror>
-            <hr/>
-
-            <s:form action="submitFieldValidatorsExamples" namespace="/validation" method="POST" theme="xhtml">
-                <s:textfield label="Required Validator Field" name="requiredValidatorField"/>
-                <s:textfield label="Required String Validator Field" name="requiredStringValidatorField"/>
-                <s:textfield label="Integer Validator Field" name="integerValidatorField"/>
-                <s:textfield label="Date Validator Field" name="dateValidatorField"/>
-                <s:textfield label="Email Validator Field" name="emailValidatorField"/>
-                <s:textfield label="URL Validator Field" name="urlValidatorField"/>
-                <s:textfield label="String Length Validator Field" name="stringLengthValidatorField"/>
-                <s:textfield label="Regex Validator Field" name="regexValidatorField"/>
-                <s:textfield label="Field Expression Validator Field" name="fieldExpressionValidatorField"/>
-                <s:submit label="Submit" cssClass="btn btn-primary"/>
-            </s:form>
-
-            <!-- END SNIPPET: fieldValidatorsExample -->
-
-            <s:include value="footer.jsp"/>
-        </div>
-    </div>
-</div>
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/validation/footer.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/validation/footer.jsp b/apps/showcase/src/main/webapp/validation/footer.jsp
deleted file mode 100644
index 20fa2ad..0000000
--- a/apps/showcase/src/main/webapp/validation/footer.jsp
+++ /dev/null
@@ -1,8 +0,0 @@
- <%@taglib prefix="s" uri="/struts-tags" %>
-
-<hr/>
-
-<s:url var="backToValidationExamples" action="list" namespace="/validation" />
-<s:url var="backToShowCase" action="showcase" namespace="/" />
-        
-<s:a href="%{backToValidationExamples}" cssClass="btn btn-info"><i class="icon icon-arrow-left"></i> Back To Validation Examples</s:a>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/validation/index.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/validation/index.jsp b/apps/showcase/src/main/webapp/validation/index.jsp
deleted file mode 100644
index 661d032..0000000
--- a/apps/showcase/src/main/webapp/validation/index.jsp
+++ /dev/null
@@ -1,51 +0,0 @@
-<%--
-    index.jsp
-
-    @author tm_jee
-    @version $Date$ $Id$
---%>
-
-<%@taglib prefix="s" uri="/struts-tags" %>
-
-<html>
-<head>
-	<title>Struts2 Showcase - Validation</title>
-</head>
-<body>
-
-<div class="page-header">
-	<h1>Validation Examples</h1>
-</div>
-
-<div class="container-fluid">
-	<div class="row-fluid">
-		<div class="span12">
-
-			<s:url var="quizBasic" namespace="/validation" action="quizBasic" method="input"/>
-			<s:url var="quizClient" namespace="/validation" action="quizClient" method="input"/>
-			<s:url var="quizClientCss" namespace="/validation" action="quizClientCss" method="input"/>
-			<s:url var="quizAjax" namespace="/validation" action="quizAjax" method="input"/>
-			<s:url var="fieldValidatorUrl" action="showFieldValidatorsExamples" namespace="/validation"/>
-			<s:url var="nonFieldValidatorUrl" action="showNonFieldValidatorsExamples" namespace="/validation"/>
-			<s:url var="visitorValidatorUrl" action="showVisitorValidatorsExamples" namespace="/validation"/>
-			<s:url var="clientSideValidationUrl" action="clientSideValidationExample" namespace="/validation"/>
-			<s:url var="backToShowcase" action="showcase" namespace="/"/>
-			<s:url var="storeMessageAcrossRequestExample" value="/validation/storeErrorsAcrossRequestExample.jsp"/>
-
-			<ul>
-				<li><s:a href="%{fieldValidatorUrl}">Field Validators</s:a></li>
-				<li><s:a href="%{clientSideValidationUrl}">Field Validators with client-side JavaScript</s:a></li>
-				<li><s:a href="%{nonFieldValidatorUrl}">Non Field Validator</s:a></li>
-				<li><s:a href="%{storeMessageAcrossRequestExample}">Store across request using MessageStoreInterceptor (Example)</s:a></li>
-				<li><s:a href="%{quizAjax}">Validation (ajax)</s:a></li>
-				<li><s:a href="%{quizBasic}">Validation (basic)</s:a></li>
-				<li><s:a href="%{quizClient}">Validation (client)</s:a></li>
-				<li><s:a href="%{quizClientCss}">Validation (client using css_xhtml theme)</s:a></li>
-				<li><s:a href="%{visitorValidatorUrl}">Visitor Validator</s:a></li>
-			</ul>
-		</div>
-	</div>
-</div>
-</body>
-</html>
-

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/validation/nonFieldValidatorsExample.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/validation/nonFieldValidatorsExample.jsp b/apps/showcase/src/main/webapp/validation/nonFieldValidatorsExample.jsp
deleted file mode 100644
index 27c8f8b..0000000
--- a/apps/showcase/src/main/webapp/validation/nonFieldValidatorsExample.jsp
+++ /dev/null
@@ -1,46 +0,0 @@
-<%-- 
-    nonFieldValidatorsExample.jsp
-    
-    @author tm_jee
-    @version $Date$ $Id$
---%>
-
-
-<%@taglib prefix="s" uri="/struts-tags" %>
-
-<html>
-<head>
-	<title>Struts2 Showcase - Validation - Non Field Validator Example</title>
-	<s:head/>
-</head>
-<body>
-
-<div class="page-header">
-	<h1>Non Field Validator Example</h1>
-</div>
-
-<div class="container-fluid">
-	<div class="row-fluid">
-		<div class="span12">
-
-			<!-- START SNIPPET: nonFieldValidatorsExample -->
-			<s:actionerror/>
-
-			<s:form method="POST" action="submitNonFieldValidatorsExamples" namespace="/validation">
-				<s:textfield name="someText" label="Some Text"/>
-				<s:textfield name="someTextRetype" label="Retype Some Text"/>
-				<s:textfield name="someTextRetypeAgain" label="Retype Some Text Again"/>
-				<s:submit label="Submit" cssClass="btn btn-primary"/>
-			</s:form>
-
-
-			<!--  END SNIPPET: nonFieldValidatorsExample -->
-
-
-			<s:include value="footer.jsp"/>
-		</div>
-	</div>
-</div>
-</body>
-</html>
-

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/validation/quiz-ajax.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/validation/quiz-ajax.jsp b/apps/showcase/src/main/webapp/validation/quiz-ajax.jsp
deleted file mode 100644
index 9ce9bdb..0000000
--- a/apps/showcase/src/main/webapp/validation/quiz-ajax.jsp
+++ /dev/null
@@ -1,104 +0,0 @@
-<%@ taglib prefix="s" uri="/struts-tags" %>
-<%@ taglib prefix="sx" uri="/struts-dojo-tags" %>
-
-<!-- START SNIPPET: ajaxValidation -->
-
-<html>
-<head>
-	<title>Struts2 Showcase - Validation - Ajax</title>
-	<sx:head cache="true" compressed="true"/>
-</head>
-
-<s:url var="url" namespace="/validation" action="quizAjax"/>
-
-<body>
-
-<div class="page-header">
-	<h1>AJAX validation Example</h1>
-</div>
-
-<div class="container-fluid">
-	<div class="row-fluid">
-		<div class="span12">
-			<h5>1.Use AJAX validation, and AJAX request (ajaxAfterValidation="true"), if validation succeeds</h5>
-
-			<div id="response" class="well">
-				Response goes here
-			</div>
-
-			<br/>
-
-			<s:form method="post" theme="xhtml" namespace="/nodecorate" action="quizAjax" id="form">
-				<s:textfield label="Name" name="name"/>
-				<s:textfield label="Age" name="age"/>
-				<s:textfield label="Favorite color" name="answer"/>
-				<sx:submit
-						validate="true"
-						ajaxAfterValidation="true"
-						targets="response"
-						showLoadingText="false"
-						cssClass="btn btn-primary"/>
-			</s:form>
-
-			<sx:a
-					formId="form"
-					validate="true"
-					ajaxAfterValidation="true"
-					targets="response"
-					showLoadingText="false"
-					cssClass="btn btn-primary">Submit Form with a link</sx:a>
-			<br/><br/>
-
-			<input type="checkbox" id="checkbox">Submit Form listening to an event on an element (check to submit)
-			<sx:bind
-					id="bind"
-					formId="form"
-					sources="checkbox"
-					validate="true"
-					events="onchange"
-					ajaxAfterValidation="true"
-					targets="response"
-					showLoadingText="false"/>
-
-			<br/><br/><br/><br/>
-
-			<h5>2.Use AJAX validation, and regular request (ajaxAfterValidation="false", default), if validation
-				succeeds</h5>
-			<br/>
-
-			<s:form method="post" theme="xhtml" namespace="/nodecorate" action="quizAjax" id="form2">
-				<s:textfield label="Name" name="name"/>
-				<s:textfield label="Age" name="age"/>
-				<s:textfield label="Favorite color" name="answer"/>
-				<sx:submit
-						validate="true"
-						ajaxAfterValidation="false"
-						showLoadingText="false"
-						cssClass="btn btn-primary"/>
-			</s:form>
-
-			<sx:a
-					formId="form2"
-					validate="true"
-					ajaxAfterValidation="false"
-					showLoadingText="false"
-					cssClass="btn btn-primary">Submit Form with a link</sx:a>
-			<br/><br/>
-
-			<input type="checkbox" id="checkbox2">Submit Form listening to an event on an element (check to submit)
-			<sx:bind
-					formId="form2"
-					sources="checkbox2"
-					validate="true"
-					events="onchange"
-					ajaxAfterValidation="false"
-					showLoadingText="false"/>
-
-
-			<s:include value="footer.jsp"/>
-		</div>
-	</div>
-</div>
-</body>
-</html>
-<!-- END SNIPPET: ajaxValidation -->

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/validation/quiz-basic.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/validation/quiz-basic.jsp b/apps/showcase/src/main/webapp/validation/quiz-basic.jsp
deleted file mode 100644
index e7cb1f9..0000000
--- a/apps/showcase/src/main/webapp/validation/quiz-basic.jsp
+++ /dev/null
@@ -1,41 +0,0 @@
-<%@ taglib prefix="s" uri="/struts-tags" %>
-
-<!-- START SNIPPET: basicValidation -->
-
-<html>
-<head>
-	<title>Struts2 Showcase - Validation - Basic</title>
-	<s:head/>
-</head>
-
-<body>
-
-<div class="page-header">
-	<h1>Basic validation Example</h1>
-</div>
-
-<div class="container-fluid">
-	<div class="row-fluid">
-		<div class="span12">
-
-			<p>
-				<b>What is your favorite color?</b>
-
-			<p/>
-
-			<s:form method="post">
-				<s:textfield label="Name" name="name"/>
-				<s:textfield label="Age" name="age"/>
-				<s:textfield label="Favorite color" name="answer"/>
-				<s:submit cssClass="btn btn-primary"/>
-			</s:form>
-
-
-			<s:include value="footer.jsp"/>
-		</div>
-	</div>
-</div>
-</body>
-</html>
-<!-- END SNIPPET: basicValidation -->
-

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/validation/quiz-client-css.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/validation/quiz-client-css.jsp b/apps/showcase/src/main/webapp/validation/quiz-client-css.jsp
deleted file mode 100644
index c675893..0000000
--- a/apps/showcase/src/main/webapp/validation/quiz-client-css.jsp
+++ /dev/null
@@ -1,37 +0,0 @@
-<%@ taglib prefix="s" uri="/struts-tags" %>
-
-<!-- START SNIPPET: clientCssValidation -->
-
-<html>
-<head>
-	<title>Struts2 Showcase - Validation - Basic (CSS Theme)</title>
-	<s:head theme="css_xhtml"/>
-</head>
-
-<body>
-
-<div class="page-header">
-	<h1>Basic validation Example (CSS Theme)</h1>
-</div>
-
-<div class="container-fluid">
-	<div class="row-fluid">
-		<div class="span12">
-
-			<s:form method="post" theme="css_xhtml" validate="true">
-				<s:textfield label="Name" name="name"/>
-				<s:textfield label="Age" name="age"/>
-				<s:textfield label="Favorite color" name="answer"/>
-				<s:submit cssClass="btn btn-primary"/>
-			</s:form>
-
-
-			<s:include value="footer.jsp"/>
-		</div>
-	</div>
-</div>
-</body>
-</html>
-
-<!-- END SNIPPET: clientCssValidation -->
-

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/validation/quiz-client.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/validation/quiz-client.jsp b/apps/showcase/src/main/webapp/validation/quiz-client.jsp
deleted file mode 100644
index 27268b8..0000000
--- a/apps/showcase/src/main/webapp/validation/quiz-client.jsp
+++ /dev/null
@@ -1,37 +0,0 @@
-<%@ taglib prefix="s" uri="/struts-tags" %>
-
-<!-- START SNIPPET: clientValidation -->
-
-<html>
-<head>
-	<title>Struts2 Showcase - Validation - Basic</title>
-	<s:head/>
-</head>
-
-<body>
-
-<div class="page-header">
-	<h1>Basic validation Example</h1>
-</div>
-
-<div class="container-fluid">
-	<div class="row-fluid">
-		<div class="span12">
-
-
-			<s:form method="post" validate="true">
-				<s:textfield label="Name" name="name"/>
-				<s:textfield label="Age" name="age"/>
-				<s:textfield label="Favorite color" name="answer"/>
-				<s:submit cssClass="btn btn-primary"/>
-			</s:form>
-
-			<s:include value="footer.jsp"/>
-		</div>
-	</div>
-</div>
-</body>
-</html>
-
-<!-- END SNIPPET: clientValidation -->
-

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/validation/quiz-success.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/validation/quiz-success.jsp b/apps/showcase/src/main/webapp/validation/quiz-success.jsp
deleted file mode 100644
index 58180bb..0000000
--- a/apps/showcase/src/main/webapp/validation/quiz-success.jsp
+++ /dev/null
@@ -1,27 +0,0 @@
-<%@ taglib prefix="s" uri="/struts-tags" %>
-<html>
-<head>
-	<title>Struts2 Showcase - Validation - Quiz submitted!</title>
-	<s:head/>
-</head>
-
-<body>
-
-<div class="page-header">
-	<h1>Quiz submitted!</h1>
-</div>
-
-<div class="container-fluid">
-	<div class="row-fluid">
-		<div class="span12">
-
-			Thank you, <b><s:property value="name"/></b>. Your answer has been submitted as:
-
-			<b><s:property value="answer"/></b>
-
-			<s:include value="footer.jsp"/>
-		</div>
-	</div>
-</div>
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/validation/storeErrorsAcrossRequestCancel.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/validation/storeErrorsAcrossRequestCancel.jsp b/apps/showcase/src/main/webapp/validation/storeErrorsAcrossRequestCancel.jsp
deleted file mode 100644
index fd9fb55..0000000
--- a/apps/showcase/src/main/webapp/validation/storeErrorsAcrossRequestCancel.jsp
+++ /dev/null
@@ -1,30 +0,0 @@
-<%@ taglib prefix="s" uri="/struts-tags" %>
-<html>
-<head>
-	<title>Struts2 Showcase - Validation - Store Errors Across Request Example</title>
-	<s:head/>
-</head>
-
-<body>
-
-<div class="page-header">
-	<h1>Application Canceled</h1>
-</div>
-
-<div class="container-fluid">
-	<div class="row-fluid">
-		<div class="span12">
-
-			<s:actionmessage cssClass="alert alert-info"/>
-			<s:actionerror cssClass="alert alert-error"/>
-			<s:fielderror cssClass="alert alert-error"/>
-
-			<s:url var="url" value="/validation/storeErrorsAcrossRequestExample.jsp" />
-			<s:a href="%{#url}">Try Again</s:a>
-
-			<s:include value="footer.jsp"/>
-		</div>
-	</div>
-</div>
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/validation/storeErrorsAcrossRequestExample.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/validation/storeErrorsAcrossRequestExample.jsp b/apps/showcase/src/main/webapp/validation/storeErrorsAcrossRequestExample.jsp
deleted file mode 100644
index 939e0ac..0000000
--- a/apps/showcase/src/main/webapp/validation/storeErrorsAcrossRequestExample.jsp
+++ /dev/null
@@ -1,54 +0,0 @@
-<%@ taglib prefix="s" uri="/struts-tags" %>
-<html>
-<head>
-	<title>Struts2 Showcase - Validation - Store Errors Across Request Example</title>
-	<s:head/>
-</head>
-
-<body>
-
-<div class="page-header">
-	<h1>Store Errors Across Request Example</h1>
-</div>
-
-<div class="container-fluid">
-	<div class="row-fluid">
-		<div class="span12">
-
-			<p>
-				This is an example demonstrating the use of MessageStoreInterceptor.
-				When this form is submited a redirect is issue both when there's a validation
-				error or not. Normally, when a redirect is issue the action messages / errors and
-				field errors stored in the action will be lost (due to an action lives
-				only as long as a request). With a MessageStoreInterceptor in place and
-				configured, the action errors / messages / field errors will be store and
-				remains retrieveable even after a redirect.
-			</p>
-
-			<table border="1">
-				<tr><td>ActionMessages: </td><td></td><s:actionmessage/></tr>
-				<tr><td>ActionErrors: </td><td><s:actionerror/></td></tr>
-			</table>
-
-			<p>
-				<s:form action="submitApplication" namespace="/validation">
-					<s:textfield name="name" label="Name" />
-					<s:textfield name="age" label="Age" />
-					<s:submit cssClass="btn btn-primary"/>
-					<s:submit action="cancelApplication" value="%{'Cancel'}" cssClass="btn btn-danger"/>
-				</s:form>
-			</p>
-			<p>
-				Try submitting with an invalid age value,
-				and note that the browser location changes,
-				but validation messages are retained.
-				Because of the redirect,
-				the input values are not retained.
-			</p>
-
-			<s:include value="footer.jsp"/>
-		</div>
-	</div>
-</div>
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/validation/storeErrorsAcrossRequestOk.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/validation/storeErrorsAcrossRequestOk.jsp b/apps/showcase/src/main/webapp/validation/storeErrorsAcrossRequestOk.jsp
deleted file mode 100644
index 6c5ddb1..0000000
--- a/apps/showcase/src/main/webapp/validation/storeErrorsAcrossRequestOk.jsp
+++ /dev/null
@@ -1,31 +0,0 @@
-<%@ taglib prefix="s" uri="/struts-tags" %>
-<html>
-<head>
-	<title>Struts2 Showcase - Validation - Store Errors Across Request Example</title>
-	<s:head/>
-</head>
-
-<body>
-
-<div class="page-header">
-	<h1>Ok !</h1>
-</div>
-
-<div class="container-fluid">
-	<div class="row-fluid">
-		<div class="span12">
-
-			<s:actionmessage cssClass="alert alert-info"/>
-			<s:actionerror cssClass="alert alert-error"/>
-			<s:fielderror cssClass="alert alert-error"/>
-
-			<s:url var="url" value="/validation/storeErrorsAcrossRequestExample.jsp" />
-			<s:a href="%{#id}">Try Again</s:a>
-
-			<s:include value="footer.jsp"/>
-		</div>
-	</div>
-</div>
-</body>
-</html>
-

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/validation/successClientSideValidationExample.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/validation/successClientSideValidationExample.jsp b/apps/showcase/src/main/webapp/validation/successClientSideValidationExample.jsp
deleted file mode 100644
index cb56e9c..0000000
--- a/apps/showcase/src/main/webapp/validation/successClientSideValidationExample.jsp
+++ /dev/null
@@ -1,64 +0,0 @@
-<%--
-    successFieldValidatorsExample.jsp
-
-    @author tm_jee
-    @version $Date$ $Id$
---%>
-
-<%@taglib prefix="s" uri="/struts-tags" %>
-<html>
-<head>
-	<title>Struts2 Showcase - Validation - Success Client Side Validators Example</title>
-	<s:head/>
-</head>
-<body>
-
-<div class="page-header">
-	<h1>Success !</h1>
-</div>
-
-<div class="container-fluid">
-	<div class="row-fluid">
-		<div class="span12">
-
-        <table class="table table-striped table-bordered table-hover table-condensed">
-            <tr>
-                <td>Required Validator Field:</td>
-                <td><s:property value="requiredValidatorField" /></td>
-            </tr>
-            <tr>
-                <td>Required String Validator Field:</td>
-                <td><s:property value="requiredStringValidatorField" /></td>
-            </tr>
-            <tr>
-                <td>Integer Validator Field: </td>
-                <td><s:property value="integerValidatorField" /></td>
-            </tr>
-            <tr>
-                <td>Date Validator Field: </td>
-                <td><s:property value="dateValidatorField" /></td>
-            </tr>
-            <tr>
-                <td>Email Validator Field: </td>
-                <td><s:property value="emailValidatorField" /></td>
-            </tr>
-            <tr>
-                <td>URL Validator Field: </td>
-                <td><s:property value="urlValidatorField" /></td>
-            </tr>
-            <tr>
-                <td>String Length Validator Field: </td>
-                <td><s:property value="stringLengthValidatorField" /></td>
-            </tr>
-            <tr>
-                <td>Regex Validator Field: <s:property value="regexValidatorField" /></td>
-                <td>Field Expression Validator Field: <s:property value="fieldExpressionValidatorField" /></td>
-            </tr>
-        </table>
-
-        <s:include value="footer.jsp" />
-		</div>
-	</div>
-</div>
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/validation/successFieldValidatorsExample.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/validation/successFieldValidatorsExample.jsp b/apps/showcase/src/main/webapp/validation/successFieldValidatorsExample.jsp
deleted file mode 100644
index f795bcc..0000000
--- a/apps/showcase/src/main/webapp/validation/successFieldValidatorsExample.jsp
+++ /dev/null
@@ -1,61 +0,0 @@
-<%--
-    successFieldValidatorsExample.jsp
-    
-    @author tm_jee
-    @version $Date$ $Id$
---%>
-
-
-<%@taglib prefix="s" uri="/struts-tags" %>
-<html>
-<head>
-	<title>Struts2 Showcase - Validation - Success Field Validators Example</title>
-	<s:head/>
-</head>
-<body>
-
-<div class="page-header">
-	<h1>Success !</h1>
-</div>
-
-<div class="container-fluid">
-	<div class="row-fluid">
-		<div class="span12">
-
-			<table class="table table-striped table-bordered table-hover table-condensed">
-			<tr>
-                <td>Required Validator Field:</td>
-                <td><s:property value="requiredValidatorField" /></td>
-            </tr>
-            <tr>
-                <td>Required String Validator Field:</td>
-                <td><s:property value="requiredStringValidatorField" /></td>
-            </tr>
-            <tr>
-                <td>Integer Validator Field: </td>
-                <td><s:property value="integerValidatorField" /></td>
-            </tr>
-            <tr>
-                <td>Date Validator Field: </td>
-                <td><s:property value="dateValidatorField" /></td>
-            </tr>
-            <tr>
-                <td>Email Validator Field: </td>
-                <td><s:property value="emailValidatorField" /></td>
-            </tr>
-            <tr>
-                <td>String Length Validator Field: </td>
-                <td><s:property value="stringLengthValidatorField" /></td>
-            </tr>
-            <tr>
-                <td>Regex Validator Field: <s:property value="regexValidatorField" /></td>
-                <td>Field Expression Validator Field: <s:property value="fieldExpressionValidatorField" /></td>
-            </tr>
-        </table>
-        
-        <s:include value="footer.jsp" />
-		</div>
-	</div>
-</div>
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/validation/successNonFieldValidatorsExample.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/validation/successNonFieldValidatorsExample.jsp b/apps/showcase/src/main/webapp/validation/successNonFieldValidatorsExample.jsp
deleted file mode 100644
index 4033300..0000000
--- a/apps/showcase/src/main/webapp/validation/successNonFieldValidatorsExample.jsp
+++ /dev/null
@@ -1,45 +0,0 @@
-<%--
-    successNonFieldValidatorsExample.jsp
-    
-    @author tm_jee
-    @version $Date$ $Id$
---%>
-
-
-<%@taglib prefix="s" uri="/struts-tags" %>
-<html>
-<head>
-	<title>Struts2 Showcase - Validation - Success Non Field Validators Example</title>
-	<s:head/>
-</head>
-<body>
-
-<div class="page-header">
-	<h1>Success !</h1>
-</div>
-
-<div class="container-fluid">
-	<div class="row-fluid">
-		<div class="span12">
-
-			<table class="table table-striped table-bordered table-hover table-condensed">
-            <tr>
-                <td>Some Text: </td>
-                <td><s:property value="someText" /></td>
-            </tr>
-            <tr>
-                <td>Some Text Retyped: </td>
-                <td><s:property value="someTextRetype" /></td>
-            </tr>
-            <tr>
-                <td>Some Text Retyped Again: </td>
-                <td><s:property value="someTextRetypeAgain" /></td>
-            </tr>
-        </table>
-        
-        <s:include value="footer.jsp" />
-		</div>
-	</div>
-</div>
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/validation/successVisitorValidatorsExample.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/validation/successVisitorValidatorsExample.jsp b/apps/showcase/src/main/webapp/validation/successVisitorValidatorsExample.jsp
deleted file mode 100644
index 6eecc62..0000000
--- a/apps/showcase/src/main/webapp/validation/successVisitorValidatorsExample.jsp
+++ /dev/null
@@ -1,46 +0,0 @@
-<%-- 
-    successVisitorValidatorsExample.jsp
-    
-    @author tm_jee
-    @version $Date$ $Id$
---%>
-
-
-<%@taglib prefix="s" uri="/struts-tags" %>
-<html>
-<head>
-	<title>Struts2 Showcase - Validation - Success Visitor Validators Exameple</title>
-	<s:head/>
-</head>
-<body>
-
-<div class="page-header">
-	<h1>Success !</h1>
-</div>
-
-<div class="container-fluid">
-	<div class="row-fluid">
-		<div class="span12">
-
-			<table class="table table-striped table-bordered table-hover table-condensed">
-            <tr>
-                <td>User Name:</td>
-                <td><s:property value="user.name" /></td>
-            </tr>
-            <tr>
-                <td>User Age:</td>          
-                <td><s:property value="user.age" /></td>
-            </tr>
-            <tr>
-                <td>User Birthday:</td>
-                <td><s:property value="user.birthday" /></td>
-            </tr>
-        </table>
-        
-        <s:include value="footer.jsp" />
-
-		</div>
-	</div>
-</div>
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/validation/visitorValidatorsExample.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/validation/visitorValidatorsExample.jsp b/apps/showcase/src/main/webapp/validation/visitorValidatorsExample.jsp
deleted file mode 100644
index 06ee70e..0000000
--- a/apps/showcase/src/main/webapp/validation/visitorValidatorsExample.jsp
+++ /dev/null
@@ -1,43 +0,0 @@
-<%-- 
-    visitorValidatorsExample.jsp
-    
-    @author tm_jee
-    @version $Date$ $Id$
---%>
-
-
-<%@taglib prefix="s" uri="/struts-tags" %>
-<html>
-<head>
-	<title>Struts2 Showcase - Validation - Visitor Validators Example</title>
-	<s:head/>
-</head>
-<body>
-
-<div class="page-header">
-	<h1>Visitor Validators Example</h1>
-</div>
-
-<div class="container-fluid">
-	<div class="row-fluid">
-		<div class="span12">
-
-			<!-- START SNIPPET: visitorValidatorsExample -->
-
-			<s:fielderror cssClass="alert alert-error"/>
-
-			<s:form method="POST" action="submitVisitorValidatorsExamples" namespace="/validation">
-				<s:textfield name="user.name" label="User Name"/>
-				<s:textfield name="user.age" label="User Age"/>
-				<s:textfield name="user.birthday" label="Birthday"/>
-				<s:submit label="Submit" cssClass="btn btn-primary"/>
-			</s:form>
-
-			<!--  END SNIPPET: visitorValidatorsExample -->
-
-			<s:include value="footer.jsp"/>
-		</div>
-	</div>
-</div>
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/viewSource.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/viewSource.jsp b/apps/showcase/src/main/webapp/viewSource.jsp
deleted file mode 100644
index 84448de..0000000
--- a/apps/showcase/src/main/webapp/viewSource.jsp
+++ /dev/null
@@ -1,54 +0,0 @@
-<%@ taglib prefix="s" uri="/struts-tags" %>
-<html>
-<head>
-    <title>View Sources</title>
-</head>
-<body>
-
-<div class="container-fluid">
-	<div class="row-fluid">
-		<div class="span12">
-			<h1>View Sources</h1>
-
-			<ul class="nav nav-tabs" id="codeTab">
-				<li class="active"><a href="#page">Page</a></li>
-				<li><a href="#config">Configuration</a></li>
-				<li><a href="#java">Java Action</a></li>
-			</ul>
-
-			<div class="tab-content">
-				<div class="tab-pane active" id="page">
-					<h3><s:property default="Unknown page" value="page"/></h3>
-					<pre class="prettyprint lang-html linenums">
-						<s:iterator value="pageLines" status="row">
-<s:property/></s:iterator>
-					</pre>
-				</div>
-				<div class="tab-pane" id="config">
-					<h3><s:property default="Unknown configuration" value="config"/></h3>
-					<pre class="prettyprint lang-xml linenums">
-						<s:iterator value="configLines" status="row">
-<s:property/></s:iterator>
-					</pre>
-				</div>
-				<div class="tab-pane" id="java">
-					<h3><s:property default="Unknown or unavailable Action class" value="className"/></h3>
-					<pre class="prettyprint lang-java linenums">
-						<s:iterator value="classLines" status="row">
-<s:property/></s:iterator>
-					</pre>
-				</div>
-			</div>
-		</div>
-	</div>
-</div>
-
-
-<script>
-	$('#codeTab a').click(function (e) {
-		e.preventDefault();
-		$(this).tab('show');
-	})
-</script>
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/wait/complete.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/wait/complete.jsp b/apps/showcase/src/main/webapp/wait/complete.jsp
deleted file mode 100644
index 9ab7b78..0000000
--- a/apps/showcase/src/main/webapp/wait/complete.jsp
+++ /dev/null
@@ -1,25 +0,0 @@
-<%@ taglib prefix="s" uri="/struts-tags" %>
-<html>
-<head>
-	<title>Struts2 Showcase - Execute and Wait Examples - Complete</title>
-</head>
-
-<body>
-<div class="page-header">
-	<h1>The process is complete</h1>
-</div>
-
-
-<div class="container-fluid">
-	<div class="row-fluid">
-		<div class="span12" style="text-align: center;">
-
-			<b>We have processed your request.</b>
-			<p/>
-			Click here to <s:url var="back" value="/wait/index.jsp"/><s:a href="%{back}" cssClass="btn btn-link">return</s:a>.
-
-		</div>
-	</div>
-</div>
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/wait/example1.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/wait/example1.jsp b/apps/showcase/src/main/webapp/wait/example1.jsp
deleted file mode 100644
index de83f93..0000000
--- a/apps/showcase/src/main/webapp/wait/example1.jsp
+++ /dev/null
@@ -1,28 +0,0 @@
-<%@ taglib prefix="s" uri="/struts-tags" %>
-<html>
-<head>
-	<title>Struts2 Showcase - Execute and Wait Examples - Example 1</title>
-</head>
-
-<body>
-<div class="page-header">
-	<h1>Execute and Wait Examples - Example 1</h1>
-</div>
-
-
-<div class="container-fluid">
-	<div class="row-fluid">
-		<div class="span12" style="text-align: center;">
-
-			<p><b>Example 1:</b> In the form below enter how long time to simulate the process should take.</p>
-
-			<s:form action="longProcess1">
-				<s:textfield label="Time (millis)" name="time" required="true" value="7000"/>
-				<s:submit value="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/wait/example2.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/wait/example2.jsp b/apps/showcase/src/main/webapp/wait/example2.jsp
deleted file mode 100644
index df68dfc..0000000
--- a/apps/showcase/src/main/webapp/wait/example2.jsp
+++ /dev/null
@@ -1,29 +0,0 @@
-<%@ taglib prefix="s" uri="/struts-tags" %>
-<html>
-<head>
-	<title>Struts2 Showcase - Execute and Wait Examples - Example 2</title>
-</head>
-
-<body>
-<div class="page-header">
-	<h1>Execute and Wait Examples - Example 2</h1>
-</div>
-
-
-<div class="container-fluid">
-	<div class="row-fluid">
-		<div class="span12">
-
-			<p><b>Example 2:</b> As example 1 but uses a delay of 2000 millis before the wait page is shown. Try simulating with
-				a value of 500 millis to see that no wait page is shown at all.</p>
-
-			<s:form action="longProcess2">
-				<s:textfield label="Time (millis)" name="time" required="true" value="8000"/>
-				<s:submit value="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/wait/example3.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/wait/example3.jsp b/apps/showcase/src/main/webapp/wait/example3.jsp
deleted file mode 100644
index b77baae..0000000
--- a/apps/showcase/src/main/webapp/wait/example3.jsp
+++ /dev/null
@@ -1,29 +0,0 @@
-<%@ taglib prefix="s" uri="/struts-tags" %>
-<html>
-<head>
-	<title>Struts2 Showcase - Execute and Wait Examples - Example 3</title>
-</head>
-
-<body>
-<div class="page-header">
-	<h1>Execute and Wait Examples - Example 3</h1>
-</div>
-
-
-<div class="container-fluid">
-	<div class="row-fluid">
-		<div class="span12">
-
-			<p><b>Example 3:</b> As example 1 but uses a delay of 3000 millis before the wait page is shown.
-				While waiting for the wait page it will check every 1000 millis if the background process is already
-				done. Try simulating with a value of 700 millis to see that the wait page is shown soon thereafter.</p>
-
-			<s:form action="longProcess3">
-				<s:textfield label="Time (millis)" name="time" required="true" value="9000"/>
-				<s:submit value="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/wait/index.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/wait/index.jsp b/apps/showcase/src/main/webapp/wait/index.jsp
deleted file mode 100644
index 14f4e19..0000000
--- a/apps/showcase/src/main/webapp/wait/index.jsp
+++ /dev/null
@@ -1,34 +0,0 @@
-<%@ taglib prefix="s" uri="/struts-tags" %>
-<html>
-<head>
-	<title>Struts2 Showcase - Execute and Wait Examples</title>
-</head>
-
-<body>
-<div class="page-header">
-	<h1>Execute and Wait Examples</h1>
-</div>
-
-
-
-<div class="container-fluid">
-	<div class="row-fluid">
-		<div class="span12" style="text-align: center;">
-
-			<p>
-				These examples illustrate Struts build in support for execute and wait.
-			<p/>
-			<p>
-				When you have a process that takes a long time your users can be impatient and starts to submit/click again.
-				<br/> A good solution is to show the user a progress page (wait page) while the process takes it time.
-			<p/>
-
-			<br/>
-			<br/><a href="example1.jsp">Example 1 (no delay)</a>
-			<br/><a href="example2.jsp">Example 2 (with delay)</a>
-			<br/><a href="example3.jsp">Example 3 (with longer check delay)</a>
-		</div>
-	</div>
-</div>
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/wait/wait.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/wait/wait.jsp b/apps/showcase/src/main/webapp/wait/wait.jsp
deleted file mode 100644
index deb8151..0000000
--- a/apps/showcase/src/main/webapp/wait/wait.jsp
+++ /dev/null
@@ -1,53 +0,0 @@
-<%@ taglib prefix="s" uri="/struts-tags" %>
-<html>
-<head>
-	<title>Struts2 Showcase - Execute and Wait Examples - Wait</title>
-</head>
-
-<body>
-<div class="page-header">
-	<h1>Execute and Wait Examples - Wait</h1>
-</div>
-
-
-<div class="container-fluid">
-	<div class="row-fluid">
-		<div class="span12" style="text-align: center;">
-
-			<p class="well">
-				We are processing your request. Please wait.
-			</p>
-
-			<div class="progress progress-striped active">
-				<div class="bar" style="width: 50%;"></div>
-			</div>
-
-			<p/>
-			You can click this link to <a href="<s:url includeParams="all"/>">refresh</a>.
-
-			<b>We have processed your request.</b>
-			<p/>
-			Click here to <s:url var="back" value="/wait/index.jsp"/><s:a href="%{back}" cssClass="btn btn-link">return</s:a>.
-
-		</div>
-	</div>
-</div>
-</body>
-</html>
-
-<%@ taglib prefix="s" uri="/struts-tags" %>
-<html>
-<head>
-    <meta http-equiv="refresh" content="5;url=<s:url includeParams="all"/>"/>
-</head>
-
-<body>
-    <p style="border: 1px solid silver; padding: 5px; background: #ffd; text-align: center;">
-        We are processing your request. Please wait.
-    </p>
-
-    <p/>
-    You can click this link to <a href="<s:url includeParams="all"/>">refresh</a>.
-
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/xslt/index.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/xslt/index.jsp b/apps/showcase/src/main/webapp/xslt/index.jsp
deleted file mode 100644
index 2a2f0a2..0000000
--- a/apps/showcase/src/main/webapp/xslt/index.jsp
+++ /dev/null
@@ -1,26 +0,0 @@
-<%@taglib prefix="s" uri="/struts-tags" %>
-
-<html>
-<head>
-<title>Showcase - XSLT </title>
-</head>
-<body>
-<h1> XSLT Result Showcase</h1>
-
-<p>
-    The XSLT result can be used to generate xml from the action. By default, each of the action's
-    properties will be converted into a DOM and rendered.  These results can be transformed via
-    xslt.  Additionally, the result's exposedValue parameter can be used to define an ognl expression
-    which can be used to manipulate the object which will be converted to xml.
-
-    <ul>
-        <li><s:url var="url" namespace="/xslt" action="jvmInfo"/><s:a href="%{url}">Render the exposed portion of the action as html</s:a></li>
-        <li><s:url var="url" namespace="/xslt" action="jvmInfoRaw"/><s:a href="%{url}">Render the exposed portion of the action as xml</s:a></li>
-        <li><s:url var="url" namespace="/xslt" action="jvmInfoAll"/><s:a href="%{url}">Render the action as xml</s:a></li>
-        <li><s:url var="url" namespace="/xslt" action="classpath"/><s:a href="%{url}">Render an ognl property</s:a></li>
-    </ul>
-</p>
-
-
-</body>
-</html>
\ No newline at end of file


[08/10] Moves showcase related JSPs under WEB-INF

Posted by lu...@apache.org.
http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/ajax/index.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/ajax/index.jsp b/apps/showcase/src/main/webapp/WEB-INF/ajax/index.jsp
new file mode 100644
index 0000000..8791fa3
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/ajax/index.jsp
@@ -0,0 +1,24 @@
+<html>
+<head><title>AJAX Examples</title></head>
+
+<body>
+
+<h1>AJAX Example</h1>
+
+<p>
+Note: The Ajax tags are experimental. These examples have only been tested under FireFox 1.5 and IE 6.
+</p>
+
+<ul>
+    <li><a href="bind/index.jsp">Bind tag</a></li>
+    <li><a href="autocompleter/index.jsp">Autocompleter combobox tag</a></li>
+    <li><a href="remotebutton/index.jsp">Remote button tag</a></li>
+    <li><a href="remotediv/index.jsp">Remote div tag</a></li>
+    <li><a href="remotelink/index.jsp">Remote link tag</a></li>
+    <li><a href="tabbedpanel/index.jsp">Tabbed panel</a></li>
+    <li><a href="remoteforms/index.jsp">Remote forms</a></li>
+    <li><a href="widgets/index.jsp">Widgets </a> (may not work in all browsers!) 
+        see the <a href="http://www.dojotoolkit.org">dojo website</a> for more information</li>
+</ul>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/ajax/options.ftl
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/ajax/options.ftl b/apps/showcase/src/main/webapp/WEB-INF/ajax/options.ftl
new file mode 100644
index 0000000..d12ad6d
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/ajax/options.ftl
@@ -0,0 +1,5 @@
+[
+<#list options as option>
+	["${option?html}"],
+</#list>
+]
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/ajax/remotebutton/index.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/ajax/remotebutton/index.jsp b/apps/showcase/src/main/webapp/WEB-INF/ajax/remotebutton/index.jsp
new file mode 100644
index 0000000..b8486ae
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/ajax/remotebutton/index.jsp
@@ -0,0 +1,70 @@
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<%@ taglib prefix="s" uri="/struts-tags" %>
+<%@ taglib prefix="sx" uri="/struts-dojo-tags" %>
+
+<html>
+<head>
+    <title>Ajax Examples</title>
+    <jsp:include page="/WEB-INF/ajax/commonInclude.jsplude.jsp"/>
+</head>
+
+<script type="text/javascript">
+   function before() {alert("before request");}
+   function after() {alert("after request");}
+   function handler(widget, node) {
+     alert('I will handle this myself!');
+     dojo.byId(widget.targetsArray[0]).innerHTML = "Done";
+   }
+
+    dojo.event.topic.subscribe("/alltopics", function(data, type, e){
+      alert('inside a topic event. type='+type);
+      //data : text returned
+      //type : "before", "load" or "error"
+      //e    : request object
+   });
+</script>
+
+<body>
+
+<div id="t1">Div 1</div>
+<s:url var="ajaxTest" value="/AjaxTest.action" />
+
+<br/><br/>
+
+A submit button, that highlights (blue color) its targets
+<sx:submit type="submit" value="submit" targets="t1" href="%{ajaxTest}" highlightColor="blue"/>
+
+<br/><br/>
+
+A submit button, with an indicator
+<img id="indicator" src="${pageContext.request.contextPath}/images/indicator.gif" alt="Loading..." style="display:none"/>
+<sx:submit id="submit2" type="submit" value="submit" targets="t1" href="%{ajaxTest}" indicator="indicator"/>
+
+<br/><br/>
+
+A submit button, with "notifyTopics"
+<sx:submit type="submit" value="submit" targets="t1" href="%{ajaxTest}" notifyTopics="/alltopics"/>
+
+<br/><br/>
+
+Use an image as submit
+<s:url value="/images/struts-power.gif" var="imgUrl" />
+<sx:submit type="image" label="Alt Text" targets="t1"
+  src="%{imgUrl}" href="%{ajaxTest}" />
+<br/><br/>
+
+<label for="textInput">Text to be echoed</label>
+<br/><br/>
+
+Use a button as submit (custom text)
+<s:form id="form" action="AjaxTest">
+  <input type=textbox name="data">
+  <sx:submit type="button" label="Update Content" targets="t1"  id="ajaxbtn"/>
+</s:form>
+
+<br/><br/>
+
+<s:include value="../footer.jsp"/>
+
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/ajax/remotediv/example1.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/ajax/remotediv/example1.jsp b/apps/showcase/src/main/webapp/WEB-INF/ajax/remotediv/example1.jsp
new file mode 100644
index 0000000..4dfdd1d
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/ajax/remotediv/example1.jsp
@@ -0,0 +1,23 @@
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<%@ taglib prefix="s" uri="/struts-tags" %>
+<%@ taglib prefix="sx" uri="/struts-dojo-tags" %>
+
+<html>
+<head>
+    <title>Ajax Examples</title>
+    <jsp:include page="/WEB-INF/ajax/commonInclude.jsp"/>
+</head>
+
+<s:url var="ajaxTest" value="/AjaxTest.action" />
+
+
+<body>
+<sx:div
+        cssStyle="border: 1px solid yellow;"
+        href="%{ajaxTest}">
+    Initial Content</sx:div>
+
+<s:include value="../footer.jsp"/>
+
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/ajax/remotediv/example10.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/ajax/remotediv/example10.jsp b/apps/showcase/src/main/webapp/WEB-INF/ajax/remotediv/example10.jsp
new file mode 100644
index 0000000..4350984
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/ajax/remotediv/example10.jsp
@@ -0,0 +1,31 @@
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<%@ taglib prefix="s" uri="/struts-tags" %>
+<%@ taglib prefix="sx" uri="/struts-dojo-tags" %>
+
+<html>
+<head>
+    <title>Ajax Examples</title>
+    <jsp:include page="/WEB-INF/ajax/commonInclude.jsp"/>
+</head>
+
+<script type="text/javascript">
+   function handler(widget, node) {
+     alert('I will handle this myself!');
+	 node.innerHTML = "Done";
+   }
+</script>
+
+<s:url var="ajaxTest" value="/AjaxTest.action" />
+
+<body>
+<sx:div
+        id="once"
+        cssStyle="border: 1px solid yellow;"
+        href="%{ajaxTest}"
+		handler="handler">
+    Initial Content</sx:div>
+
+<s:include value="../footer.jsp"/>
+
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/ajax/remotediv/example2.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/ajax/remotediv/example2.jsp b/apps/showcase/src/main/webapp/WEB-INF/ajax/remotediv/example2.jsp
new file mode 100644
index 0000000..4257d72
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/ajax/remotediv/example2.jsp
@@ -0,0 +1,28 @@
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<%@ taglib prefix="s" uri="/struts-tags" %>
+<%@ taglib prefix="sx" uri="/struts-dojo-tags" %>
+
+<html>
+<head>
+    <title>Ajax Examples</title>
+    <jsp:include page="/WEB-INF/ajax/commonInclude.jsp"/>
+</head>
+
+
+<body>
+<s:url var="ajaxTest" value="/AjaxTest.action" />
+
+
+<sx:div
+        id="once"
+        cssStyle="border: 1px solid yellow;"
+        href="%{#ajaxTest}"
+        updateFreq="2000"
+        indicator="indicator"
+		>
+    Initial Content</sx:div>
+<img id="indicator" src="${pageContext.request.contextPath}/images/indicator.gif" alt="Loading..." style="display:none"/>
+<s:include value="../footer.jsp"/>
+
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/ajax/remotediv/example3.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/ajax/remotediv/example3.jsp b/apps/showcase/src/main/webapp/WEB-INF/ajax/remotediv/example3.jsp
new file mode 100644
index 0000000..1ea2b17
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/ajax/remotediv/example3.jsp
@@ -0,0 +1,27 @@
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<%@ taglib prefix="s" uri="/struts-tags" %>
+<%@ taglib prefix="sx" uri="/struts-dojo-tags" %>
+
+<html>
+<head>
+    <title>Ajax Examples</title>
+    <jsp:include page="/WEB-INF/ajax/commonInclude.jsp"/>
+</head>
+
+<body>
+
+<s:url var="ajaxTest" value="/AjaxTest.action" />
+
+
+<sx:div
+        id="twoseconds"
+        cssStyle="border: 1px solid yellow;"
+        href="%{ajaxTest}"
+        delay="2000"
+        updateFreq="%{#parameters.period}"
+        errorText="There was an error">Initial Content</sx:div>
+
+<s:include value="../footer.jsp"/>
+
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/ajax/remotediv/example4.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/ajax/remotediv/example4.jsp b/apps/showcase/src/main/webapp/WEB-INF/ajax/remotediv/example4.jsp
new file mode 100644
index 0000000..959cff1
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/ajax/remotediv/example4.jsp
@@ -0,0 +1,28 @@
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<%@ taglib prefix="s" uri="/struts-tags" %>
+<%@ taglib prefix="sx" uri="/struts-dojo-tags" %>
+
+<html>
+<head>
+    <title>Ajax Examples</title>
+    <jsp:include page="/WEB-INF/ajax/commonInclude.jsp"/>
+</head>
+
+<body>
+
+<s:url var="ajaxTest" value="/AjaxTest.action" />
+
+<sx:div
+        id="fiveseconds"
+        cssStyle="border: 1px solid yellow;"
+        href="%{ajaxTest}"
+        delay="1000"
+        updateFreq="5000"
+        errorText="There was an error"
+        loadingText="reloading"
+        showLoadingText="true">loading now</sx:div>
+
+<s:include value="../footer.jsp"/>
+
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/ajax/remotediv/example5.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/ajax/remotediv/example5.jsp b/apps/showcase/src/main/webapp/WEB-INF/ajax/remotediv/example5.jsp
new file mode 100644
index 0000000..ac06d1e
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/ajax/remotediv/example5.jsp
@@ -0,0 +1,27 @@
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<%@ taglib prefix="s" uri="/struts-tags" %>
+<%@ taglib prefix="sx" uri="/struts-dojo-tags" %>
+
+<html>
+<head>
+    <title>Ajax Examples</title>
+    <jsp:include page="/WEB-INF/ajax/commonInclude.jsp"/>
+</head>
+
+<body>
+
+<s:url var="ajaxNoUrl" value="/AjaxNoUrl.jsp" />
+
+<sx:div
+        id="error"
+        cssStyle="border: 1px solid yellow;"
+        href="/AjaxNoUrl.jsp"
+        delay="1000"
+        errorText="Could not contact server"
+        loadingText="reloading">loading now</sx:div>
+
+
+<s:include value="../footer.jsp"/>
+
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/ajax/remotediv/example6.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/ajax/remotediv/example6.jsp b/apps/showcase/src/main/webapp/WEB-INF/ajax/remotediv/example6.jsp
new file mode 100644
index 0000000..c944005
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/ajax/remotediv/example6.jsp
@@ -0,0 +1,24 @@
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<%@ taglib prefix="s" uri="/struts-tags" %>
+<%@ taglib prefix="sx" uri="/struts-dojo-tags" %>
+
+<html>
+<head>
+    <title>Ajax Examples</title>
+    <jsp:include page="/WEB-INF/ajax/commonInclude.jsp"/>
+</head>
+
+<body>
+
+<sx:div
+        id="error"
+        cssStyle="border: 1px solid yellow;"
+        href="/AjaxNoUrl.jsp"
+        delay="1000"
+        showErrorTransportText="true"
+        loadingText="reloading">loading now</sx:div>
+
+<s:include value="../footer.jsp"/>
+
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/ajax/remotediv/example7.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/ajax/remotediv/example7.jsp b/apps/showcase/src/main/webapp/WEB-INF/ajax/remotediv/example7.jsp
new file mode 100644
index 0000000..d444474
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/ajax/remotediv/example7.jsp
@@ -0,0 +1,27 @@
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<%@ taglib prefix="s" uri="/struts-tags" %>
+<%@ taglib prefix="sx" uri="/struts-dojo-tags" %>
+
+<html>
+<head>
+    <title>Ajax Examples</title>
+    <jsp:include page="/WEB-INF/ajax/commonInclude.jsp"/>
+</head>
+
+<body>
+
+<s:url var="test3" value="/Test3.action" />
+
+
+<sx:div
+        id="error"
+        cssStyle="border: 1px solid yellow;"
+        href="%{test3}"
+        delay="1000"
+		executeScripts="true"
+        loadingText="reloading">loading now</sx:div>
+
+<s:include value="../footer.jsp"/>
+
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/ajax/remotediv/example8.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/ajax/remotediv/example8.jsp b/apps/showcase/src/main/webapp/WEB-INF/ajax/remotediv/example8.jsp
new file mode 100644
index 0000000..3314475
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/ajax/remotediv/example8.jsp
@@ -0,0 +1,57 @@
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<%@ taglib prefix="s" uri="/struts-tags" %>
+<%@ taglib prefix="sx" uri="/struts-dojo-tags" %>
+
+<html>
+<head>
+    <title>Ajax Examples</title>
+    <jsp:include page="/WEB-INF/ajax/commonInclude.jsp"/>
+</head>
+
+<body>
+
+<script>
+	var controller = {
+		refresh : function() {},
+		start : function() {},
+		stop : function() {}
+	};
+
+
+	dojo.event.topic.registerPublisher("/refresh", controller, "refresh");
+	dojo.event.topic.registerPublisher("/startTimer", controller, "start");
+	dojo.event.topic.registerPublisher("/stopTimer", controller, "stop");
+
+</script>
+<form id="form">
+	<label for="textInput">Text to be echoed</label>
+	<input type=textbox id="textInput" name="data">
+</form>
+
+<br/><br/>
+
+<input type=button value="refresh" onclick="controller.refresh()">
+<input type=button value="stop timer" onclick="controller.stop()">
+<input type=button value="start timer" onclick="controller.start()">
+
+<s:url var="ajaxTest" value="/AjaxTest.action" />
+
+<sx:div
+        id="once"
+        cssStyle="border: 1px solid yellow;"
+        href="%{ajaxTest}"
+        loadingText="Loading..."
+		listenTopics="/refresh"
+		startTimerListenTopics="/startTimer"
+		stopTimerListenTopics="/stopTimer"
+		updateFreq="3000"
+		autoStart="true"
+        highlightColor="red"
+		formId="form"
+		>
+    Initial Content</sx:div>
+
+<s:include value="../footer.jsp"/>
+
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/ajax/remotediv/example9.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/ajax/remotediv/example9.jsp b/apps/showcase/src/main/webapp/WEB-INF/ajax/remotediv/example9.jsp
new file mode 100644
index 0000000..14ab4f0
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/ajax/remotediv/example9.jsp
@@ -0,0 +1,63 @@
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<%@ taglib prefix="s" uri="/struts-tags" %>
+<%@ taglib prefix="sx" uri="/struts-dojo-tags" %>
+
+<html>
+<head>
+    <title>Ajax Examples</title>
+    <jsp:include page="/WEB-INF/ajax/commonInclude.jsp"/>
+</head>
+
+<body>
+
+<script>
+	var controller = {
+		refresh : function() {},
+		start : function() {},
+		stop : function() {}
+	};
+
+	dojo.event.topic.registerPublisher("/refresh", controller, "refresh");
+	dojo.event.topic.registerPublisher("/startTimer", controller, "start");
+	dojo.event.topic.registerPublisher("/stopTimer", controller, "stop");
+
+    dojo.event.topic.subscribe("/before", function(data, type, e){
+      alert('inside a topic event. before request');
+      //data : source element id
+      //type : "before" 
+      //e    : request object
+    });
+    
+    dojo.event.topic.subscribe("/after", function(data, type, e){
+      alert('inside a topic event. after request');
+      //data : text returned
+      //type : "load" 
+      //e    : undefined
+    });
+
+</script>
+
+<input type=button value="refresh" onclick="controller.refresh()">
+<input type=button value="start timer" onclick="controller.start()">
+<input type=button value="stop timer" onclick="controller.stop()">
+
+<s:url var="ajaxTest" value="/AjaxTest.action" />
+
+<sx:div
+        id="div1"
+        cssStyle="border: 1px solid yellow;"
+        href="%{ajaxTest}"
+        listenTopics="/refresh"
+		startTimerListenTopics="/startTimer"
+		stopTimerListenTopics="/stopTimer"
+		updateFreq="10000"
+		autoStart="false"
+        beforeNotifyTopics="/before"
+        afterNotifyTopics="/after"
+		>
+    Initial Content</sx:div>
+
+<s:include value="../footer.jsp"/>
+
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/ajax/remotediv/index.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/ajax/remotediv/index.jsp b/apps/showcase/src/main/webapp/WEB-INF/ajax/remotediv/index.jsp
new file mode 100644
index 0000000..a0e9711
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/ajax/remotediv/index.jsp
@@ -0,0 +1,55 @@
+<%@ taglib prefix="s" uri="/struts-tags" %>
+<html>
+<head>
+    <title>AJAX-based remote DIV tag</title>
+    <%@ include file="/WEB-INF/ajax/commonInclude.jsp" %>
+</head>
+
+<body>
+
+<h2>Examples</h2>
+
+<p>
+    <ol>
+        <li>
+            <a href="example1.jsp">A simple DIV that refreshes only once</a>
+        </li>
+
+		<li>
+            <a href="example10.jsp">A simple DIV that uses a custom handler</a>
+        </li>
+
+        <li>
+            <a href="example2.jsp?url=/AjaxTest.action">A simple DIV that updates every 2 seconds, with indicator</a>
+        </li>
+
+        <li>
+            <a href="example4.jsp">A simple DIV that updates every 5 seconds with loading text and reloading text and delay</a>
+        </li>
+
+        <li>
+            <a href="example5.jsp">A simple DIV's that cannot contact the server, with fixed error message</a>
+        </li>
+
+
+        <li>
+            <a href="example7.jsp">A div that calls the server, and JS in the resulting page is executed</a>
+        </li>
+
+        <li>
+            <a href="example8.jsp">A div that will listen to events to refresh and start/stop autoupdate, and gets highlighted in red (when it loads)</a>
+        </li>
+
+		<li>
+            <a href="example9.jsp">A div that will listen to events to refresh and start/stop autoupdate, publish notifyTopics</a>
+        </li>
+
+    </ol>
+
+
+</p>
+
+<s:include value="../footer.jsp"/>
+
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/ajax/remoteforms/index.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/ajax/remoteforms/index.jsp b/apps/showcase/src/main/webapp/WEB-INF/ajax/remoteforms/index.jsp
new file mode 100644
index 0000000..a961b94
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/ajax/remoteforms/index.jsp
@@ -0,0 +1,119 @@
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<%@ taglib prefix="s" uri="/struts-tags" %>
+<%@ taglib prefix="sx" uri="/struts-dojo-tags" %>
+
+<html>
+<head>
+    <title>Ajax Examples</title>
+    <sx:head />
+
+    <script language="JavaScript" type="text/javascript">
+        dojo.event.topic.subscribe("/beforeSubmit", function(event, widget) {
+            alert('you can manipulate the form before it gets submitted. To cancel the submit event set event.cancel=true');
+            event.cancel = true;
+        });
+    </script>
+
+</head>
+
+<body>
+
+<div id='two' style="border: 1px solid yellow;"><b>initial content</b></div>
+
+
+<br /><br />
+Remote form replacing another div:<br/>
+<s:form
+        id='theForm2'
+        cssStyle="border: 1px solid green;"
+        action='AjaxRemoteForm'
+        method='post'>
+
+    <input type='text' name='data' value='Struts User'>
+
+    <sx:submit value="GO2" targets="two"/>
+
+</s:form>
+
+<br /><br />
+Remote form replacing the forms content:<br/>
+<s:form
+        id='theForm3'
+        cssStyle="border: 1px solid green;"
+        action='AjaxRemoteForm'
+        method='post'>
+
+    <input type='text' name='data' value='Struts User'>
+
+    <sx:submit value="GO3" targets="theForm3"/>
+
+</s:form>
+
+<br /><br />
+Remote form evaluating suplied JS on completion:<br/>
+<s:form
+        id='theForm4'
+        cssStyle="border: 1px solid green;"
+        action='Test3'
+        method='post'>
+
+    <input type='text' name='data' value='Struts User'>
+
+    <sx:submit value="GO4" executeScripts="true"/>
+
+</s:form>
+
+<br /><br />
+Submit outside form:<br/>
+<s:form
+        id='theForm5'
+        cssStyle="border: 1px solid green;"
+        action='AjaxRemoteForm'
+        method='post'>
+
+    <input type='text' name='data' value='Struts User'>
+</s:form>
+<sx:submit value="GO5" formId="theForm5" targets="two"/>
+
+<br /><br />
+<s:url var="remoteUrl" namespace="/remoteforms" action="AjaxRemoteForm"/>
+Submit outside form, href in submit tag:<br/>
+<s:form
+        id='theForm6'
+        cssStyle="border: 1px solid green;"
+        method='post'>
+
+    <input type='text' name='data' value='Struts User'>
+</s:form>
+<sx:submit value="GO6" formId="theForm6" targets="two" href="%{#remoteUrl}"/>
+
+<br /><br />
+Remote form whose submit is cancelled:<br/>
+<s:form
+        id='theForm7'
+        cssStyle="border: 1px solid green;"
+        action='AjaxRemoteForm'
+        method='post'>
+
+    <input type='text' name='data' value='Struts User'>
+
+    <sx:submit value="GO7" targets="theForm7" beforeNotifyTopics="/beforeSubmit"/>
+
+</s:form>
+
+<br /><br />
+A form with no remote submit (so should not be ajaxified):<br/>
+<s:form
+        id='theForm8'
+        cssStyle="border: 1px solid green;"
+        action='AjaxRemoteForm'
+        method='post'>
+
+    <input type='text' name='data' value='Struts User'>
+
+    <s:submit value="Go AWAY"  />
+
+</s:form>
+
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/ajax/remotelink/index.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/ajax/remotelink/index.jsp b/apps/showcase/src/main/webapp/WEB-INF/ajax/remotelink/index.jsp
new file mode 100644
index 0000000..89e32f3
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/ajax/remotelink/index.jsp
@@ -0,0 +1,127 @@
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<%@ taglib prefix="s" uri="/struts-tags" %>
+<%@ taglib prefix="sx" uri="/struts-dojo-tags" %>
+
+<html>
+<head>
+    <title>Ajax Examples</title>
+    <jsp:include page="/WEB-INF/ajax/commonInclude.jsp"/>
+</head>
+
+<script type="text/javascript">
+   function handler(widget, node) {
+     alert('I will handle this myself!');
+	 dojo.byId(widget.targetsArray[0]).innerHTML = "Done";
+   }
+
+   dojo.event.topic.subscribe("/before", function(event, widget){
+      alert('inside a topic event. before request');
+      //event: set event.cancel = true, to cancel request
+      //widget: widget that published the topic
+   });
+   
+   dojo.event.topic.subscribe("/after", function(data, request, widget){
+      alert('inside a topic event. after request');
+      //data : text returned from request
+      //request: XMLHttpRequest object
+      //widget: widget that published the topic
+   });
+   
+   dojo.event.topic.subscribe("/error", function(error, request, widget){
+      alert('inside a topic event. on error');
+      //error : error object (error.message has the error message)
+      //request: XMLHttpRequest object
+      //widget: widget that published the topic
+   });
+   
+   dojo.event.topic.subscribe("/topics", function(data, type, e){
+      alert('inside a topic event. type='+type);
+      //data : text returned
+      //type : "before", "load", "error"
+      //e    : request object
+   });
+</script>
+
+<body>
+
+<div id="t1">Div 1</div>
+
+<br/>
+
+<div id="t2">Div 2</div>
+
+<br/><br/>
+
+<s:url var="ajaxTest" value="/AjaxTest.action" />
+<s:url var="test3" value="/Test3.action" />
+
+<sx:a  
+        href="%{#ajaxTest}"
+        targets="t1"
+        highlightColor="red"
+        highlightDuration="2000">Update 'Div 1' and use red highligh to notify user of changed content</sx:a>
+
+<br/><br/>
+
+<sx:a   id="link1"
+        href="%{#ajaxTest}"
+        indicator="indicator"
+		targets="t1,t2" 
+        beforeNotifyTopics="/before"
+        afterNotifyTopics="/after" >Update 'Div 1' and 'Div 2', publish topic '/before' and '/after', use indicator</sx:a>
+<img id="indicator" src="${pageContext.request.contextPath}/images/indicator.gif" alt="Loading..." style="display:none"/>
+
+<br/><br/>
+
+<sx:a  id="link2"
+        href="/AjaxNoUrl.jsp"
+		errorText="Error Loading"
+		targets="t1"
+        errorNotifyTopics="/error">Try to update 'Div 1', publish '/error', use custom error message</sx:a>
+
+<br/><br/>
+
+<sx:a  id="link3"
+        href="%{#ajaxTest}"
+		loadingText="Loading!!!"
+        showLoadingText="true"
+		targets="t1">Update 'Div 1', use custom loading message</sx:a>
+
+<br/><br/>
+
+<sx:a  id="link4"
+        href="%{#test3}"
+		executeScripts="true"
+		targets="t2">Update 'Div 2' and execute returned javascript </sx:a>
+
+<br/><br/>
+
+<sx:a  id="link5"
+        href="%{#ajaxTest}"
+		handler="handler"
+		targets="t2">Update 'Div 2' using a custom handler </sx:a>
+
+
+<br/><br/>
+
+<label for="textInput">Text to be echoed</label>
+
+<form id="form">
+  <input type=textbox name="data">
+</form>
+
+<br/><br/>
+
+<sx:a  id="link6"
+        href="%{#ajaxTest}"
+		targets="t2"
+		formId="form"
+		>Update 'Div 2' with the content of the textbox </sx:a>
+
+
+<br/><br/>
+
+<s:include value="../footer.jsp"/>
+
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/ajax/tabbedpanel/example1.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/ajax/tabbedpanel/example1.jsp b/apps/showcase/src/main/webapp/WEB-INF/ajax/tabbedpanel/example1.jsp
new file mode 100644
index 0000000..8d455be
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/ajax/tabbedpanel/example1.jsp
@@ -0,0 +1,95 @@
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<%@ taglib prefix="s" uri="/struts-tags" %>
+<%@ taglib prefix="sx" uri="/struts-dojo-tags" %>
+ 
+<html>
+<head>
+    <title>Ajax examples - tabbled panel</title>
+
+    <jsp:include page="/WEB-INF/ajax/commonInclude.jsp"/>
+</head>
+
+<s:url var="ajaxTest" value="/AjaxTest.action" />
+
+<body>
+
+    <table cellpadding="0" cellspacing="10" border="0" width="900">
+        <tr>
+            <td align="top" width="400">
+                <sx:tabbedpanel id="test" >
+                    <sx:div id="one" label="one" >
+                        This is the first pane<br/>
+                        <s:form>
+                            <s:textfield name="tt" label="Test Text"/>  <br/>
+                            <s:textfield name="tt2" label="Test Text2"/>
+                        </s:form>
+                    </sx:div>
+                    <sx:div id="two" label="two" >
+                        This is the second panel
+                    </sx:div>
+                    <sx:div id="three" label="three" >
+                        This is the three
+                    </sx:div>
+                </sx:tabbedpanel>
+            </td>
+            <td align="top">
+                <sx:tabbedpanel id="test2" >
+                    <sx:div id="left" label="left" >
+                        This is the left pane<br/>
+                        <s:form>
+                            <s:textfield name="tt" label="Test Text"/>  <br/>
+                            <s:textfield name="tt2" label="Test Text2"/>
+                        </s:form>
+                    </sx:div>
+                    <sx:div href="%{ajaxTest}" id="ryh1" 
+                                    label="remote one"></sx:div>
+                    <sx:div id="middle" label="middle" >
+                        middle tab<br/>
+                        <s:form>
+                            <s:textfield name="tt" label="Test Text44"/>  <br/>
+                            <s:textfield name="tt2" label="Test Text442"/>
+                        </s:form>
+                    </sx:div>
+                    <sx:div  href="%{ajaxTest}" id="ryh21"  label="remote right"/>
+                </sx:tabbedpanel>
+            </td>
+        </tr>
+        <tr>
+            <td align="top">
+                <sx:tabbedpanel id="testremote">
+                    <sx:div  href="%{ajaxTest}" id="r1"  label="remote one">
+                        <s:action name="AjaxTest" executeResult="true" />
+                    </sx:div>
+                    <sx:div  href="%{ajaxTest}" id="r2"  label="remote two"></sx:div>
+                    <sx:div  href="%{ajaxTest}" id="r3"  label="remote three"></sx:div>
+                </sx:tabbedpanel>
+            </td>
+            <td align="top">
+                <sx:tabbedpanel id="test3" >
+                    <sx:tabbedpanel id="test11" label="Container 1">
+                        <sx:div id="i11" label="inner 1 one">Inner 1</sx:div>
+                        <sx:div id="112" label="inner 1 two">Inner 2</sx:div>
+                        <sx:div id="i13" label="inner 1 three">Inner 3</sx:div>
+                    </sx:tabbedpanel>
+                   
+                    <sx:tabbedpanel id="test12" label="Container 2">
+                        <sx:div id="i21" label="inner 2 one" >Inner 21</sx:div>
+                        <sx:div id="122" label="inner 2 two" >Inner 22</sx:div>
+                        <sx:div id="i23" label="inner 2 three" >Inner 23</sx:div>
+                    </sx:tabbedpanel>
+                    
+                    <sx:tabbedpanel id="test13" label="Container 3">
+                        <sx:div id="i31" label="inner 3 one" >Inner 31</sx:div>
+                        <sx:div id="132" label="inner 3 two" >Inner 32</sx:div>
+                        <sx:div id="i33" label="inner 3 three" >Inner 33</sx:div>
+                    </sx:tabbedpanel>
+                </sx:tabbedpanel>
+            </td>
+        </tr>
+    </table>
+
+<s:include value="../footer.jsp"/>
+
+
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/ajax/tabbedpanel/example2.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/ajax/tabbedpanel/example2.jsp b/apps/showcase/src/main/webapp/WEB-INF/ajax/tabbedpanel/example2.jsp
new file mode 100644
index 0000000..65b54d2
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/ajax/tabbedpanel/example2.jsp
@@ -0,0 +1,26 @@
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<%@ taglib prefix="s" uri="/struts-tags" %>
+<%@ taglib prefix="sx" uri="/struts-dojo-tags" %>
+
+<html>
+<head>
+    <title>Ajax examples - tabbled panel</title>
+
+    <jsp:include page="/WEB-INF/ajax/commonInclude.jsp"/>
+</head>
+
+<body>
+
+    <sx:tabbedpanel id="test2" cssStyle="width: 500px; height: 300px;" doLayout="true">
+        <sx:div label="test1"  >
+          I'm a Tab!!!
+        </sx:div >
+        <sx:div  id="middle" label="test2"   >
+          I'm the other Tab!!!
+        </sx:div >
+    </sx:tabbedpanel>
+				  
+<s:include value="../footer.jsp"/>
+
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/ajax/tabbedpanel/example3.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/ajax/tabbedpanel/example3.jsp b/apps/showcase/src/main/webapp/WEB-INF/ajax/tabbedpanel/example3.jsp
new file mode 100644
index 0000000..cd3c9b6
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/ajax/tabbedpanel/example3.jsp
@@ -0,0 +1,46 @@
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<%@ taglib prefix="s" uri="/struts-tags" %>
+<%@ taglib prefix="sx" uri="/struts-dojo-tags" %>
+
+<html>
+<head>
+    <title>Ajax examples - tabbled panel</title>
+
+    <jsp:include page="/WEB-INF/ajax/commonInclude.jsp"/>
+</head>
+
+<s:url var="ajaxTest" value="/AjaxTest.action" />
+
+<body>
+
+    <table cellpadding="0" cellspacing="10" border="0" width="600">
+        <tr>
+            <td align="top">
+                <!--// START SNIPPET: tabbedpanel-tag-->
+                <sx:tabbedpanel id="test2" cssStyle="width: 500px; height: 300px;" doLayout="true">
+                      <sx:div id="left" label="left">
+                          This is the left pane<br/>
+                          <s:form >
+                              <s:textfield name="tt" label="Test Text" />  <br/>
+                              <s:textfield name="tt2" label="Test Text2" />
+                          </s:form>
+                      </sx:div>
+                      <sx:div href="%{ajaxTest}" id="ryh1" label="remote one" preload="false"/>
+                      <sx:div id="middle" label="middle">
+                          middle tab<br/>
+                          <s:form >
+                              <s:textfield name="tt" label="Test Text44" />  <br/>
+                              <s:textfield name="tt2" label="Test Text442" />
+                          </s:form>
+                      </sx:div>
+                      <sx:div href="%{ajaxTest}"  id="ryh21" label="remote right" preload="false"/>
+                  </sx:tabbedpanel>
+                <!--// END SNIPPET: tabbedpanel-tag-->
+             </td>
+        </tr>
+    </table>
+
+<s:include value="../footer.jsp"/>
+
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/ajax/tabbedpanel/example4.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/ajax/tabbedpanel/example4.jsp b/apps/showcase/src/main/webapp/WEB-INF/ajax/tabbedpanel/example4.jsp
new file mode 100644
index 0000000..e6f1b2b
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/ajax/tabbedpanel/example4.jsp
@@ -0,0 +1,57 @@
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<%@ taglib prefix="s" uri="/struts-tags" %>
+<%@ taglib prefix="sx" uri="/struts-dojo-tags" %>
+
+<html>
+<head>
+    <title>Ajax examples - tabbled panel</title>
+
+    <jsp:include page="/WEB-INF/ajax/commonInclude.jsp"/>
+</head>
+
+<script>
+    function enableTab(id) {
+      var tabContainer = dojo.widget.byId('tabContainer');
+      tabContainer.enableTab(id);
+    }
+    
+    function disableTab(index) {
+      var tabContainer = dojo.widget.byId('tabContainer');
+      tabContainer.disableTab(index);
+    }
+</script>
+
+<body>
+    
+    <sx:tabbedpanel id="tabContainer" cssStyle="width: 500px; height: 300px;" doLayout="true">
+          <sx:div id="tab1" label="test1"  >
+              Enabled Tab
+          </sx:div >
+          <sx:div  id="tab2" label="test2"  disabled="true" >
+              Diabled Tab
+          </sx:div >
+           <sx:div  id="tab3" label="test3" >
+              Some other Tab
+          </sx:div >
+      </sx:tabbedpanel>
+
+    <br />
+    
+    <input type="button" onclick="enableTab(1)" value="Enable Tab 2 using Index" />
+    <input type="button" onclick="disableTab(1)" value="Disable Tab 2 using Index" />
+    
+    <br />
+    
+    <input type="button" onclick="enableTab('tab2')" value="Enable Tab 2 using Id" />
+    <input type="button" onclick="disableTab('tab2')" value="Disable Tab 2 using Id" />
+    
+    <br />
+    
+    <input type="button" onclick="enableTab(dojo.widget.byId('tab2'))" value="Enable Tab 2 using widget" />
+    <input type="button" onclick="disableTab(dojo.widget.byId('tab2'))" value="Disable Tab 2 using widget" />
+
+<br /> <br />     
+<s:include value="../footer.jsp"/>
+
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/ajax/tabbedpanel/example5.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/ajax/tabbedpanel/example5.jsp b/apps/showcase/src/main/webapp/WEB-INF/ajax/tabbedpanel/example5.jsp
new file mode 100644
index 0000000..25ed4f7
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/ajax/tabbedpanel/example5.jsp
@@ -0,0 +1,29 @@
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<%@ taglib prefix="s" uri="/struts-tags" %>
+<%@ taglib prefix="sx" uri="/struts-dojo-tags" %>
+
+<html>
+<head>
+    <title>Ajax examples - tabbled panel</title>
+
+    <jsp:include page="/WEB-INF/ajax/commonInclude.jsp"/>
+</head>
+
+<body>
+
+				<sx:tabbedpanel id="test2" cssStyle="width: 500px; height: 300px;" doLayout="true" labelposition="bottom">
+                      <sx:div id="left" label="test1" closable="true">
+                          I'm a Tab!!!
+                      </sx:div >
+                      <sx:div  id="middle" label="test2"  closable="true">
+                          I'm the other Tab!!!
+                      </sx:div >
+                     
+                  </sx:tabbedpanel>
+				  
+				
+
+<s:include value="../footer.jsp"/>
+
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/ajax/tabbedpanel/example5Ok.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/ajax/tabbedpanel/example5Ok.jsp b/apps/showcase/src/main/webapp/WEB-INF/ajax/tabbedpanel/example5Ok.jsp
new file mode 100644
index 0000000..5c3b801
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/ajax/tabbedpanel/example5Ok.jsp
@@ -0,0 +1,9 @@
+<%@ page language="java" contentType="text/html; charset=UTF-8"
+    pageEncoding="UTF-8"%>
+<%@taglib prefix="s" uri="/struts-tags" %>
+    
+<h1>OK</h1>    
+<s:property value="name" /><br/>
+<s:property value="age" /><br/>
+    
+    
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/ajax/tabbedpanel/example6.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/ajax/tabbedpanel/example6.jsp b/apps/showcase/src/main/webapp/WEB-INF/ajax/tabbedpanel/example6.jsp
new file mode 100644
index 0000000..3bc62cd
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/ajax/tabbedpanel/example6.jsp
@@ -0,0 +1,40 @@
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<%@ taglib prefix="s" uri="/struts-tags" %>
+<%@ taglib prefix="sx" uri="/struts-dojo-tags" %>
+
+<html>
+<head>
+    <title>Ajax examples - tabbled panel</title>
+
+    <jsp:include page="/WEB-INF/ajax/commonInclude.jsp"/>
+</head>
+
+<script>
+    dojo.event.topic.subscribe('/before', function(event, tab, tabContainer) {
+      alert("Before selecting tab. Set 'event.cancel=true' to prevent selection");
+    });
+    dojo.event.topic.subscribe('/after', function(tab, tabContainer) {
+      alert("After tab was selected");
+    });
+</script>
+<body>
+    
+<sx:tabbedpanel 
+    id="tabContainer"
+    cssStyle="width: 500px; height: 300px;" 
+    doLayout="true"
+    beforeSelectTabNotifyTopics="/before"
+    afterSelectTabNotifyTopics="/after">
+  <sx:div id="tab1" label="test1"  >
+      Tab 1
+  </sx:div >
+  <sx:div  id="tab2" label="test2" >
+      Tab 2
+  </sx:div >
+</sx:tabbedpanel>
+
+<br /><br />    
+<s:include value="../footer.jsp"/>
+
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/ajax/tabbedpanel/index.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/ajax/tabbedpanel/index.jsp b/apps/showcase/src/main/webapp/WEB-INF/ajax/tabbedpanel/index.jsp
new file mode 100644
index 0000000..196d0d4
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/ajax/tabbedpanel/index.jsp
@@ -0,0 +1,28 @@
+<%@ taglib prefix="s" uri="/struts-tags" %>
+<html>
+<head>
+    <title>Tabbed Panes</title>
+    <%@ include file="/WEB-INF/ajax/commonInclude.jsp" %>
+</head>
+
+<body>
+
+<h2>Examples</h2>
+
+<p>
+    <ol>
+        <li><a href="example2.jsp">A local tabbed panel width fixed size (doLayout="true")</a></li>
+        <li><a href="example4.jsp">A Local tabbed panel with disabled tabs</a></li>
+        <li><a href="example6.jsp">A Local tabbed panel that publishes topics when tabs are selected(before and after)</a></li>
+        <li><a href="example3.jsp">A remote (href != "") and local tabbed panel</a></li>
+        <li><a href="example1.jsp">Various remote and local tabbed panels (with enclosed tabbed pannels) with layout (doLayout="false")</a></li>
+        <li><a href="example5.jsp">A local tabbed panel width fixed size (doLayout="true") with close button on the tab pane (closable="true" on tabs), and tabs on the bottom (labelposition="bottom")</a></li>
+    </ol>
+
+
+</p>
+
+<s:include value="../footer.jsp"/>
+
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/ajax/tabbedpanel/nodecorate/panel1.ftl
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/ajax/tabbedpanel/nodecorate/panel1.ftl b/apps/showcase/src/main/webapp/WEB-INF/ajax/tabbedpanel/nodecorate/panel1.ftl
new file mode 100644
index 0000000..fcc895e
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/ajax/tabbedpanel/nodecorate/panel1.ftl
@@ -0,0 +1,3 @@
+
+Hello, <br/>
+Today is ${todayDate?html}, the time now is ${todayTime?html}

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/ajax/tabbedpanel/nodecorate/panel2.ftl
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/ajax/tabbedpanel/nodecorate/panel2.ftl b/apps/showcase/src/main/webapp/WEB-INF/ajax/tabbedpanel/nodecorate/panel2.ftl
new file mode 100644
index 0000000..e866e6d
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/ajax/tabbedpanel/nodecorate/panel2.ftl
@@ -0,0 +1,7 @@
+
+<div id="result">
+</div>
+<@sx.form action="panel2Submit" namespace="/nodecorate">
+	<@s.textfield label="Name" name="name" />
+	<@sx.submit targets="result" />
+</...@sx.form>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/ajax/tabbedpanel/nodecorate/panel2Submit.ftl
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/ajax/tabbedpanel/nodecorate/panel2Submit.ftl b/apps/showcase/src/main/webapp/WEB-INF/ajax/tabbedpanel/nodecorate/panel2Submit.ftl
new file mode 100644
index 0000000..d338eac
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/ajax/tabbedpanel/nodecorate/panel2Submit.ftl
@@ -0,0 +1,2 @@
+
+Hello, ${name?html}

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/ajax/tabbedpanel/nodecorate/panel3.ftl
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/ajax/tabbedpanel/nodecorate/panel3.ftl b/apps/showcase/src/main/webapp/WEB-INF/ajax/tabbedpanel/nodecorate/panel3.ftl
new file mode 100644
index 0000000..79209df
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/ajax/tabbedpanel/nodecorate/panel3.ftl
@@ -0,0 +1,9 @@
+
+<div id="result">
+</div>
+
+<@s.form action="panel3Submit" namespace="/nodecorate">
+	<@sx.autocompleter label="Gender" name="gender" list="%{#{'Male':'Male','Female':'Female'}}"  />
+	<@sx.submit targets="result" />
+</...@s.form>
+

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/ajax/tabbedpanel/nodecorate/panel3Submit.ftl
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/ajax/tabbedpanel/nodecorate/panel3Submit.ftl b/apps/showcase/src/main/webapp/WEB-INF/ajax/tabbedpanel/nodecorate/panel3Submit.ftl
new file mode 100644
index 0000000..7dacc93
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/ajax/tabbedpanel/nodecorate/panel3Submit.ftl
@@ -0,0 +1,2 @@
+
+So, you are a ${gender?html}

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/ajax/testjs.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/ajax/testjs.jsp b/apps/showcase/src/main/webapp/WEB-INF/ajax/testjs.jsp
new file mode 100644
index 0000000..5223ef7
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/ajax/testjs.jsp
@@ -0,0 +1,14 @@
+<%
+    request.setAttribute("decorator", "none");
+    response.setHeader("Cache-Control","no-cache"); //HTTP 1.1
+    response.setHeader("Pragma","no-cache"); //HTTP 1.0
+    response.setDateHeader ("Expires", 0); //prevents caching at the proxy server
+%>
+
+<script language="JavaScript" type="text/javascript">
+    alert('This JavaScript currently being evaluated is in the result...');
+</script>
+Show me some text also
+<script language="JavaScript" type="text/javascript">
+    alert('And some more text for fun!');
+</script>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/ajax/tree/getCategory.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/ajax/tree/getCategory.jsp b/apps/showcase/src/main/webapp/WEB-INF/ajax/tree/getCategory.jsp
new file mode 100644
index 0000000..6a56cbd
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/ajax/tree/getCategory.jsp
@@ -0,0 +1,23 @@
+<%@ taglib prefix="s" uri="/struts-tags" %>
+<%@include file="partialChunkHeader.jsp"%>
+<ul>
+<s:iterator value="category.children">
+    <li>
+        <s:if test="children.size() > 0">
+            <sx:a href="toggle.action?catId=%{id}">+</sx:a>
+        </s:if>
+        <s:property value="name"/>
+    </li>
+    <s:if test="toggle">
+        <s:set name="display" value="'none'"/>
+    </s:if>
+    <s:else>
+        <s:set name="display" value="''"/>
+    </s:else>                                                                                     ›
+
+    <sx:div id="children_%{id}"
+            cssStyle="display: %{display}"
+            href="getCategory.action?catId=%{id}"
+            refreshListenTopic="children_%{id}"/>
+</s:iterator>
+</ul>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/ajax/tree/partialChunkHeader.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/ajax/tree/partialChunkHeader.jsp b/apps/showcase/src/main/webapp/WEB-INF/ajax/tree/partialChunkHeader.jsp
new file mode 100644
index 0000000..01113d6
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/ajax/tree/partialChunkHeader.jsp
@@ -0,0 +1,6 @@
+<%
+    request.setAttribute("decorator", "none");
+    response.setHeader("Cache-Control","no-cache"); //HTTP 1.1
+    response.setHeader("Pragma","no-cache"); //HTTP 1.0
+    response.setDateHeader ("Expires", 0); //prevents caching at the proxy server
+%>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/ajax/tree/toggle.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/ajax/tree/toggle.jsp b/apps/showcase/src/main/webapp/WEB-INF/ajax/tree/toggle.jsp
new file mode 100644
index 0000000..35010bb
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/ajax/tree/toggle.jsp
@@ -0,0 +1,12 @@
+<%@ taglib prefix="s" uri="/struts-tags" %>
+<%@include file="partialChunkHeader.jsp"%>
+<%
+    response.setContentType("text/javascript");
+%>
+dojo.event.topic.publish("children_<s:property value="category.id"/>");
+var d = document.getElementById("children_<s:property value="category.id"/>");
+if (d.style.display != "none") {
+    d.style.display = "none";
+} else {
+    d.style.display = "";
+}

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/ajax/tree/tree.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/ajax/tree/tree.jsp b/apps/showcase/src/main/webapp/WEB-INF/ajax/tree/tree.jsp
new file mode 100644
index 0000000..81d68d6
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/ajax/tree/tree.jsp
@@ -0,0 +1,13 @@
+<%@ taglib prefix="s" uri="/struts-tags" %>
+<html>
+<head>
+    <title>Tree</title>
+    <sx:head />
+</head>
+
+<body>
+
+<s:action name="getCategory" executeResult="true"/>
+
+</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/ajax/widgets/index.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/ajax/widgets/index.jsp b/apps/showcase/src/main/webapp/WEB-INF/ajax/widgets/index.jsp
new file mode 100644
index 0000000..e86efbd
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/ajax/widgets/index.jsp
@@ -0,0 +1,40 @@
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<%@ taglib prefix="s" uri="/struts-tags" %>
+<%@ taglib prefix="sx" uri="/struts-dojo-tags" %>
+
+<html>
+<head>
+    <title>Ajax Widgets</title>
+    <jsp:include page="/WEB-INF/ajax/commonInclude.jsp"/>
+</head>
+
+<body>
+
+<br/>
+NOTES:
+<ul>
+    <li>Make sure that there is a 'value' attribute in the textarea with the content for the editor</li>
+    <li>This is experimental</li>
+</ul>
+
+
+Default Editor configuration:<br/>
+<s:form id="form1" action="AjaxRemoteForm" method="post">
+    <sx:textarea name="data" cols="50" rows="10" value="Test Data 1" />
+    <s:submit value="Submit"/>
+</s:form>
+<br/>
+
+Configured Editor configuration:<br/>  
+<s:form id="form2" action="AjaxRemoteForm" method="post">
+    <sx:textarea id="editor2" name="data" cols="50" rows="10" value="Test Data 2">
+        <s:param name="editorControls">textGroup;|;justifyGroup;|;listGroup;|;indentGroup</s:param>
+    </sx:textarea>
+    <s:submit value="Submit"/>
+</s:form>
+<br/>
+
+<s:include value="../footer.jsp"/>
+
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/chat/chatLogin.ftl
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/chat/chatLogin.ftl b/apps/showcase/src/main/webapp/WEB-INF/chat/chatLogin.ftl
new file mode 100644
index 0000000..439ea6b
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/chat/chatLogin.ftl
@@ -0,0 +1,27 @@
+<html>
+	<head>
+		<title>Struts2 Showcase - Chat - Login</title>
+		<@s.head />
+	</head>
+	<body>
+	<div class="page-header">
+		<h1>Chat - Login</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="login" namespace="/chat" method="POST">
+				<@s.textfield name="name" label="Name" required="true" />
+				<@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/chat/createRoom.ftl
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/chat/createRoom.ftl b/apps/showcase/src/main/webapp/WEB-INF/chat/createRoom.ftl
new file mode 100644
index 0000000..fbe71cc
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/chat/createRoom.ftl
@@ -0,0 +1,2 @@
+<@s.actionerror />
+<@s.fielderror />

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/chat/index.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/chat/index.jsp b/apps/showcase/src/main/webapp/WEB-INF/chat/index.jsp
new file mode 100644
index 0000000..b58d7a3
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/chat/index.jsp
@@ -0,0 +1,3 @@
+
+<% response.sendRedirect("main.action"); %>
+

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/chat/messagesAvailableInRoom.ftl
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/chat/messagesAvailableInRoom.ftl b/apps/showcase/src/main/webapp/WEB-INF/chat/messagesAvailableInRoom.ftl
new file mode 100644
index 0000000..2550dcd
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/chat/messagesAvailableInRoom.ftl
@@ -0,0 +1,33 @@
+
+<table class="table">
+<tr class="tableHeader">
+	<td class="tableSenderColumn">Sender</td>
+	<td class="tableDateColumn">Date</td>
+	<td class="tableMessageColumn">Message</td>
+</tr>
+<@s.iterator id="message" value="%{messagesAvailableInRoom}" status="stat">
+<tr class="tableContent">
+	<#if stat.odd>
+	<td class="tableSenderColumnOdd"> 
+	<#else>
+	<td clas="tableSenderColumnEven">
+	</#if>
+		<@s.property value="%{#message.creator.name}" />
+	</td>
+	<#if stat.odd>
+	<td class="tableDateColumnOdd">
+	<#else>
+	<td class="tableDateColumnEven">
+	</#if>
+		<@s.property value="%{#message.creationDate}" />
+	</td>
+	<#if stat.odd>
+	<td class="tableMessageColumnOdd">
+	<#else>
+	<td class="tableMessageColumnEven">
+	</#if>
+		<@s.property value="%{#message.message}" />
+	</td>
+</tr>
+</...@s.iterator>
+</table>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/chat/roomSelection.ftl
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/chat/roomSelection.ftl b/apps/showcase/src/main/webapp/WEB-INF/chat/roomSelection.ftl
new file mode 100644
index 0000000..05eaf17
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/chat/roomSelection.ftl
@@ -0,0 +1,172 @@
+<html>
+<head>
+	<title>Struts2 Showcase - Chat - Room Selection</title>
+<@sx.head />
+	<style type="text/css">
+		div.box {
+			border: 1px solid darkblue;
+			margin: 5px;
+		}
+
+		div.box h3 {
+			color: white;
+			background: darkblue;
+			margin: 3px;
+			padding: 2px;
+		}
+
+		div.nobox {
+			margin: 5px;
+		}
+
+		table.table {
+			border: 1px solid darkblue;
+			width: 98%;
+			margin: 5px;
+		}
+
+		table.table tr.tableHeader {
+			color: white;
+			background: darkblue;
+			margin: 3px;
+			padding: 2px;
+			font-size: medium;
+			font-weight: bold;
+		}
+
+		table.table td.tableOperationColumnOdd {
+			background: gray;
+			color: white;
+			width: 20%
+		}
+
+		table.table td.tableNameColumnOdd {
+			background: gray;
+			color: white;
+			width: 20%;
+		}
+
+		table.table td.tableDescriptionColumnOdd {
+			background: gray;
+			color: white;
+			width: 40%;
+		}
+
+		table.table td.tableDateCreatedColumnOdd {
+			background: gray;
+			color: white;
+			width: 20%;
+		}
+
+		table.table td.tableOperationColumnEven {
+			background: white;
+			color: gray;
+			width: 20%
+		}
+
+		table.table td.tableNameColumnEven {
+			background: white;
+			color: gray;
+			width: 20%;
+		}
+
+		table.table td.tableDescriptionColumnEven {
+			background: white;
+			color: gray;
+			width: 40%;
+		}
+
+		table.table td.tableDateCreatedColumnEven {
+			background: white;
+			color: gray;
+			width: 20%;
+		}
+
+		div.container {
+			margin-left: auto;
+			margin-right: auto;
+			width: 100%;
+		}
+
+		div.left {
+			width: 20%;
+			float: left;
+		}
+
+		div.right {
+			width: 20%;
+			float: right;
+		}
+
+		div.center {
+			width: 60%;
+			float: left;
+		}
+
+	</style>
+</head>
+<body>
+<div class="page-header">
+	<h1>Chat - Room Selection</h1>
+</div>
+
+<div class="container-fluid">
+	<div class="row-fluid">
+		<div class="span12 container">
+
+
+			<div class="left">
+				<div class="box">
+					<h3>Operations</h3>
+				<@s.url id="url" action="logout" namespace="/chat" />
+					<ul>
+						<li><@s.a href="%{#url}">Logout</...@s.a></li>
+					</ul>
+				</div>
+			<#if (actionErrors?size gt 0)>
+				<div class="box">
+					<h3>Action Errors</h3>
+					<@s.actionerrors />
+				</div>
+			</#if>
+				<div class="box">
+					<h3>Users Available In Chat</h3>
+				<@s.url id="usersAvailableUrl" action="usersAvailable" namespace="/chat/ajax" />
+				<@sx.div id="usersAvailable" updateFreq="%{@org.apache.struts2.showcase.chat.Constants@UPDATE_FREQ}"
+				href="%{usersAvailableUrl}"
+				class="box">
+					Initial Loading Users ...
+				</...@sx.div>
+				</div>
+			</div>
+
+
+			<div class="center">
+				<div class="box">
+					<h3>Rooms Available In Chat</h3>
+				<@s.url id="roomsAvailableUrl" action="roomsAvailable" namespace="/chat/ajax" />
+				<@sx.div id="roomsAvailable" listenTopics="topicRoomCreated"
+				updateFreq="%{@org.apache.struts2.showcase.chat.Constants@UPDATE_FREQ}"
+				href="%{roomsAvailableUrl}" >
+					Initial Loading Rooms ...
+				</...@sx.div>
+				</div>
+
+				<div id="createRoom" class="box">
+					<h3>Create Room In Chat</h3>
+
+					<div id="createRoomResult"></div>
+				<@s.form id="createRoomId" action="createRoom" namespace="/chat/ajax" method="POST">
+					<@s.textfield label="Room Name" required="true" name="name" />
+					<@s.textarea theme="xhtml" label="Room Description" required="true" name="Description" />
+					<@sx.submit value="%{'Create Room'}" targets="createRoomResult" afterNotifyTopics="topicRoomCreated" align="left" cssClass="btn btn-primary" />
+				</...@s.form>
+				</div>
+			</div>
+
+		</div>
+	</div>
+</div>
+</body>
+</html>
+

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/chat/roomsAvailable.ftl
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/chat/roomsAvailable.ftl b/apps/showcase/src/main/webapp/WEB-INF/chat/roomsAvailable.ftl
new file mode 100644
index 0000000..1d343c0
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/chat/roomsAvailable.ftl
@@ -0,0 +1,44 @@
+
+<table class="table">
+<tr class="tableHeader">
+	<td>Operation</td>
+	<td>Name</td>
+	<td>Description</td>
+	<td>Date Created</td>
+</tr>
+<@s.iterator id="room" value="%{availableRooms}" status="stat">
+<tr class="tableContent">
+	<#if stat.isOdd()>
+	<td class="tableOperationColumnOdd">
+	<#else>
+	<td class="tableOperationColumnEven">
+	</#if>
+	<@s.url id="url" action="enterRoom" namespace="/chat">
+		<@s.param name="roomName" value="%{#room.name}" />
+	</...@s.url>
+	<@s.a href="%{url}">Enter</...@s.a>
+	</td>
+	<#if stat.odd>
+	<td class="tableNameColumnOdd">
+	<#else>
+	<td class="tableNameColumnEven">
+	</#if>
+	<@s.property value="%{#room.name}" />
+	</td>
+	<#if stat.odd>
+	<td class="tableDescriptionColumnOdd">
+	<#else>
+	<td class="tableDescriptionColumnEven">
+	</#if>
+	<@s.property value="%{#room.description}" />
+	</td>
+	<#if stat.odd>
+	<td class="tableDateCreatedColumnOdd">
+	<#else>
+	<td class="tableDateCreateColumnEven">
+	</#if>
+	<@s.property value="%{#room.creationDate}" />
+	</td>
+</tr>
+</...@s.iterator>
+</table>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/chat/sendMessageToRoomResult.ftl
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/chat/sendMessageToRoomResult.ftl b/apps/showcase/src/main/webapp/WEB-INF/chat/sendMessageToRoomResult.ftl
new file mode 100644
index 0000000..c75d32b
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/chat/sendMessageToRoomResult.ftl
@@ -0,0 +1,2 @@
+
+<@s.fielderror />

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/chat/showRoom.ftl
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/chat/showRoom.ftl b/apps/showcase/src/main/webapp/WEB-INF/chat/showRoom.ftl
new file mode 100644
index 0000000..0a82d48
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/chat/showRoom.ftl
@@ -0,0 +1,167 @@
+<html>
+<head>
+	<title>Struts2 Showcase - Chat - Show Room </title>
+<@sx.head />
+	<style type="text/css">
+		div.box {
+			border: 1px solid darkblue;
+			margin: 5px;
+		}
+
+		div.box h3 {
+			color: white;
+			background: darkblue;
+			margin: 3px;
+			padding: 2px;
+		}
+
+		div.nobox {
+			margin: 5px;
+		}
+
+		table.table {
+			border: 1px solid darkblue;
+			width: 98%;
+			margin: 5px;
+		}
+
+		table.table tr.tableHeader {
+			color: white;
+			background: darkblue;
+			margin: 3px;
+			padding: 2px;
+			font-size: medium;
+			font-weight: bold;
+		}
+
+		table.table td.tableSenderColumnOdd {
+			background: gray;
+			color: white;
+			width: 20%
+		}
+
+		table.table td.tableDateColumnOdd {
+			background: gray;
+			color: white;
+			width: 20%;
+		}
+
+		table.table td.tableMessageColumnOdd {
+			background: gray;
+			color: white;
+			width: 60%;
+		}
+
+		table.table td.tableSenderColumnEven {
+			background: white;
+			color: gray;
+			width: 20%
+		}
+
+		table.table td.tableDateColumnEven {
+			background: white;
+			color: gray;
+			width: 20%;
+		}
+
+		table.table td.tableMessageColumnEven {
+			background: white;
+			color: gray;
+			width: 60%;
+		}
+
+		div.container {
+			margin-left: auto;
+			margin-right: auto;
+			width: 100%;
+		}
+
+		div.left {
+			width: 20%;
+			float: left;
+		}
+
+		div.right {
+			width: 20%;
+			float: left;
+		}
+
+		div.center {
+			width: 60%;
+			float: left;
+		}
+
+	</style>
+</head>
+<body>
+<div class="page-header">
+	<h1>Chat - Show Room</h1>
+</div>
+
+<div class="container-fluid">
+	<div class="row-fluid">
+		<div class="span12 container">
+			<div class="left">
+				<div class="box">
+					<h3>Operation</h3>
+				<@s.url id="url" action="exitRoom" namespace="/chat">
+					<@s.param name="roomName" value="%{roomName}" />
+				</...@s.url>
+					<ul>
+						<li><@s.a href="%{#url}">Exit Room</...@s.a></li>
+					</ul>
+				</div>
+				<div class="box">
+					<h3>Users Available In Chat</h3>
+				<@s.url id="usersAvailableUrl" action="usersAvailable" namespace="/chat/ajax" />
+				<@sx.div id="usersAvailable" href="%{usersAvailableUrl}"
+				updateFreq="%{@org.apache.struts2.showcase.chat.Constants@UPDATE_FREQ}">
+					Initial Users Available ...
+				</...@sx.div>
+				</div>
+			</div>
+
+			<div class="center">
+				<div class="box">
+					<h3>Messages Posted In Room [${roomName?default('')?html}]</h3>
+				<@s.url id="url" value="/chat/ajax/messagesAvailableInRoom.action" includeContext="true">
+					<@s.param name="roomName" value="%{roomName}" />
+				</...@s.url>
+				<@sx.div id="messagesInRoom" href="%{#url}" includeContext="true"
+				updateFreq="%{@org.apache.struts2.showcase.chat.Constants@UPDATE_FREQ}"
+				listenTopics="topicMessageSend">
+					Initial Messages In Room ...
+				</...@sx.div>
+				</div>
+
+				<div class="box">
+					<h3>Send Messages</h3>
+				<@s.form id="sendMessageForm" action="sendMessageToRoom" namespace="/chat/ajax" method="POST">
+					<div id="sendMessageResult"></div>
+					<@s.textarea label="Message"name="message" theme="xhtml" />
+					<@s.hidden name="roomName" value="%{roomName}" />
+					<@sx.submit id="submit" resultDivId="sendMessageResult" afterNotifyTopics="topicMessageSend" value="%{'Send'}"  cssClass="btn btn-primary"/>
+				</...@s.form>
+				</div>
+			</div>
+
+
+			<div class="right">
+				<div class="box">
+					<h3>Users Available In Room [${roomName?default('')?html}]</h3>
+				<@s.url id="url" value="/chat/ajax/usersAvailableInRoom.action" includeContext="true">
+					<@s.param name="roomName" value="%{roomName}" />
+				</...@s.url>
+				<@sx.div id="usersAvailableInRoom" href="%{#url}" includeContext="true"
+				delay="1" updateFreq="%{@org.apache.struts2.showcase.chat.Constants@UPDATE_FREQ}">
+					Initial Users Available In Room ...
+				</...@sx.div>
+				</div>
+			</div>
+
+
+		</div>
+	</div>
+</div>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/chat/usersAvailable.ftl
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/chat/usersAvailable.ftl b/apps/showcase/src/main/webapp/WEB-INF/chat/usersAvailable.ftl
new file mode 100644
index 0000000..1ff2963
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/chat/usersAvailable.ftl
@@ -0,0 +1,6 @@
+
+<ul>
+<#list availableUsers as user>
+	<li>${user.name?html}</li>
+</#list>
+</ul>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/chat/usersAvailableInRoom.ftl
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/chat/usersAvailableInRoom.ftl b/apps/showcase/src/main/webapp/WEB-INF/chat/usersAvailableInRoom.ftl
new file mode 100644
index 0000000..95822bf
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/chat/usersAvailableInRoom.ftl
@@ -0,0 +1,8 @@
+
+<ul>
+<@s.iterator id="member" value="%{usersAvailableInRoom}">
+	<li><@s.property value="%{#member.name}" /></li>
+</...@s.iterator>
+</ul>
+
+

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/conversion/Address.java.txt
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/conversion/Address.java.txt b/apps/showcase/src/main/webapp/WEB-INF/conversion/Address.java.txt
new file mode 100644
index 0000000..d3e494c
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/conversion/Address.java.txt
@@ -0,0 +1,35 @@
+/*
+ * $Id$
+ *
+ * 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.
+ */
+package org.apache.struts2.showcase.conversion;
+
+
+/**
+ * @version $Date$ $Id$
+ */
+public class Address {
+	
+	private String id;
+	private String address;
+	
+	public String getId() { return id; }
+	public void setId(String id) { this.id = id; }
+	
+	public String getAddress() { return address; }
+	public void setAddress(String address) { this.address = address; }
+	
+}

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/conversion/AddressAction.java.txt
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/conversion/AddressAction.java.txt b/apps/showcase/src/main/webapp/WEB-INF/conversion/AddressAction.java.txt
new file mode 100644
index 0000000..4342f8b
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/conversion/AddressAction.java.txt
@@ -0,0 +1,44 @@
+/*
+ * $Id$
+ *
+ * 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.
+ */
+package org.apache.struts2.showcase.conversion;
+
+import java.util.LinkedHashSet;
+import java.util.Set;
+
+import com.opensymphony.xwork2.ActionSupport;
+
+/**
+ * @version $Date$ $Id$
+ */
+public class AddressAction extends ActionSupport {
+
+	private Set addresses = new LinkedHashSet();
+	
+	public Set getAddresses() { return addresses; }
+	public void setAddresses(Set addresses) { this.addresses = addresses; }
+	
+	
+	public String input() throws Exception {
+		return SUCCESS;
+	}
+	
+	public String submit() throws Exception {
+		System.out.println(addresses);
+		return SUCCESS;
+	}
+}

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/conversion/EnumTypeConverter.java.txt
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/conversion/EnumTypeConverter.java.txt b/apps/showcase/src/main/webapp/WEB-INF/conversion/EnumTypeConverter.java.txt
new file mode 100644
index 0000000..acc3cf2
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/conversion/EnumTypeConverter.java.txt
@@ -0,0 +1,55 @@
+/*
+ * $Id$
+ *
+ * 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.
+ */
+package org.apache.struts2.showcase.conversion;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.struts2.util.StrutsTypeConverter;
+
+/**
+ * @version $Date$ $Id$
+ */
+public class EnumTypeConverter extends StrutsTypeConverter {
+
+	@Override
+	public Object convertFromString(Map context, String[] values, Class toClass) {
+		List<Enum> result = new ArrayList<Enum>();
+		for (int a=0; a< values.length; a++) {
+			Enum e = Enum.valueOf(OperationsEnum.class, values[a]);
+			if (e != null)
+				result.add(e);
+		}
+		return result;
+	}
+
+	@Override
+	public String convertToString(Map context, Object o) {
+		List l = (List) o;
+		String result ="<";
+		for (Iterator i = l.iterator(); i.hasNext(); ) {
+			result = result + "["+ i.next() +"]";
+		}
+		result = result+">";
+		return result;
+	}
+
+	
+}

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/conversion/OperationsEnum.java.txt
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/conversion/OperationsEnum.java.txt b/apps/showcase/src/main/webapp/WEB-INF/conversion/OperationsEnum.java.txt
new file mode 100644
index 0000000..14865ce
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/conversion/OperationsEnum.java.txt
@@ -0,0 +1,30 @@
+/*
+ * $Id$
+ *
+ * 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.
+ */
+package org.apache.struts2.showcase.conversion;
+
+/**
+ * 
+ * @version $Date$ $Id$
+ */
+public enum OperationsEnum {
+	ADD, 
+	MINUS, 
+	DIVIDE, 
+	MULTIPLY, 
+	REMAINDER;
+}

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/conversion/OperationsEnumAction.java.txt
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/conversion/OperationsEnumAction.java.txt b/apps/showcase/src/main/webapp/WEB-INF/conversion/OperationsEnumAction.java.txt
new file mode 100644
index 0000000..35e1175
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/conversion/OperationsEnumAction.java.txt
@@ -0,0 +1,53 @@
+/*
+ * $Id$
+ *
+ * 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.
+ */
+package org.apache.struts2.showcase.conversion;
+
+import java.util.Arrays;
+import java.util.LinkedList;
+import java.util.List;
+
+import com.opensymphony.xwork2.ActionSupport;
+
+/**
+ * 
+ * @version $Date$ $Id$
+ */
+public class OperationsEnumAction extends ActionSupport {
+
+	private static final long serialVersionUID = -2229489704988870318L;
+	
+	private List<OperationsEnum> selectedOperations = new LinkedList<OperationsEnum>();
+	
+	public List<OperationsEnum> getSelectedOperations() { return this.selectedOperations; }
+	public void setSelectedOperations(List<OperationsEnum> selectedOperations) {
+		this.selectedOperations = selectedOperations;
+	}
+	
+	
+	public List<OperationsEnum> getAvailableOperations() {
+		return Arrays.asList(OperationsEnum.values());
+	}
+	
+	public String input() throws Exception {
+		return SUCCESS;
+	}
+	public String submit() throws Exception {
+		return SUCCESS;
+	}
+}
+

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/conversion/OperationsEnumActionConversion.txt
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/conversion/OperationsEnumActionConversion.txt b/apps/showcase/src/main/webapp/WEB-INF/conversion/OperationsEnumActionConversion.txt
new file mode 100644
index 0000000..621beaf
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/conversion/OperationsEnumActionConversion.txt
@@ -0,0 +1,4 @@
+
+selectedOperations=org.apache.struts2.showcase.conversion.EnumTypeConverter
+Element_selectedOperations=org.apache.struts2.showcase.conversion.OperationsEnum
+

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/conversion/Person.java.txt
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/conversion/Person.java.txt b/apps/showcase/src/main/webapp/WEB-INF/conversion/Person.java.txt
new file mode 100644
index 0000000..f87072c
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/conversion/Person.java.txt
@@ -0,0 +1,34 @@
+/*
+ * $Id$
+ *
+ * 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.
+ */
+package org.apache.struts2.showcase.conversion;
+
+import java.io.Serializable;
+
+/**
+ *
+ */
+public class Person implements Serializable {
+	private String name;
+	private Integer age;
+	
+	public void setName(String name) { this.name = name; }
+	public String getName() { return this.name; }
+	
+	public void setAge(Integer age) { this.age = age; }
+	public Integer getAge() { return this.age; }
+}

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/conversion/PersonAction.java.txt
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/conversion/PersonAction.java.txt b/apps/showcase/src/main/webapp/WEB-INF/conversion/PersonAction.java.txt
new file mode 100644
index 0000000..1e0bd55
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/conversion/PersonAction.java.txt
@@ -0,0 +1,43 @@
+/*
+ * $Id$
+ *
+ * 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.
+ */
+package org.apache.struts2.showcase.conversion;
+
+import java.util.List;
+
+import com.opensymphony.xwork2.ActionSupport;
+
+/**
+ * 
+ */
+public class PersonAction extends ActionSupport {
+	
+	private List persons;
+	
+	public List getPersons() { return persons; }
+	public void setPersons(List persons) { this.persons = persons; }
+	
+	
+	
+	public String input() throws Exception {
+		return SUCCESS;
+	}
+	
+	public String submit() throws Exception {
+		return SUCCESS;
+	}
+}

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/conversion/enterAddressInfo.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/conversion/enterAddressInfo.jsp b/apps/showcase/src/main/webapp/WEB-INF/conversion/enterAddressInfo.jsp
new file mode 100644
index 0000000..b0e3e79
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/conversion/enterAddressInfo.jsp
@@ -0,0 +1,53 @@
+<%@taglib prefix="s" uri="/struts-tags" %>
+<html>
+<head>
+	<title>Struts2 Showcase - Conversion - Populate into Struts action class a Set of Address.java Object</title>
+</head>
+<body>
+<div class="page-header">
+	<h1>Conversion - Populate into Struts action class a Set of Address.java Object</h1>
+</div>
+
+<div class="container-fluid">
+	<div class="row-fluid">
+		<div class="span12">
+
+			<p/>
+			An example populating a Set of object (Address.java) into Struts' action (AddressAction.java)
+			<p/>
+
+			See the jsp code <s:url var="url" action="showAddressJspCode" namespace="/conversion" /><s:a href="%{#url}">here.</s:a><br/>
+			See the code for PersonAction.java <s:url var="url" action="showAddressActionJavaCode" namespace="/conversion" /><s:a href="%{#url}">here.</s:a><br/>
+			See the code for Person.java <s:url var="url" action="showAddressJavaCode" namespace="/conversion" /><s:a href="%{#url}">here.</s:a><br/>
+
+			<p/>
+
+				<s:form action="submitAddressesInfo" namespace="/conversion">
+					<s:iterator value="%{new int[3]}" status="stat">
+						<s:textfield label="%{'Address '+#stat.index}"
+								     name="%{'addresses(\\'id'+#stat.index+'\\').address'}" />
+					</s:iterator>
+					<s:submit cssClass="btn btn-primary"/>
+				</s:form>
+
+				<%--
+					The following is how its done statically
+				--%>
+				<%--
+				<s:form action="submitAddressInfo" namespace="/conversion">
+					<s:textfield label="Address 0"
+								 name="addresses('id0')" />
+					<s:textfield label="Address 1"
+								 name="addresses('id1')" />
+					<s:textfield label="Address 2"
+								 name="addresses('id2')" />
+					<s:submit />
+				</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/conversion/enterOperations.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/conversion/enterOperations.jsp b/apps/showcase/src/main/webapp/WEB-INF/conversion/enterOperations.jsp
new file mode 100644
index 0000000..817e81f
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/conversion/enterOperations.jsp
@@ -0,0 +1,38 @@
+<%@taglib prefix="s" uri="/struts-tags" %>
+<html>
+<head>
+	<title>Struts2 Showcase - Conversion - Tiger 5 Enum</title>
+</head>
+<body>
+<div class="page-header">
+	<h1>Conversion - Tiger 5 Enum</h1>
+</div>
+
+<div class="container-fluid">
+	<div class="row-fluid">
+		<div class="span12">
+
+
+			See the jsp code <s:url var="url" action="showEnumJspCode" namespace="/conversion" /><s:a href="%{#url}">here.</s:a><br/>
+			See the code for OperationsEnum.java <s:url var="url" action="showOperationsEnumJavaCode" namespace="/conversion" /><s:a href="%{#url}">here.</s:a><br/>
+			See the code for OperationsEnumAction.java <s:url var="url" action="showOperationEnumActionJavaCode" namespace="/conversion" /><s:a href="%{#url}">here.</s:a><br/>
+			See the code for EnumTypeConverter.java  <s:url var="url" action="showEnumTypeConverterJavaCode" namespace="/conversion" /><s:a href="%{#url}">here.</s:a><br/>
+			See the properties for OperationsEnumAction-conversion.properties <s:url var="url" action="showOperationsEnumActionConversionProperties" namespace="/conversion" /><s:a href="%{#url}">here.</s:a>
+			<br/>
+			<br/>
+
+				<s:form action="submitOperationEnumInfo" namespace="/conversion">
+					<s:checkboxlist label="Operations"
+									name="selectedOperations"
+									list="%{availableOperations}"
+									listKey="name()"
+									listValue="name()"
+									/>
+					<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/conversion/enterPersonInfo.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/conversion/enterPersonInfo.jsp b/apps/showcase/src/main/webapp/WEB-INF/conversion/enterPersonInfo.jsp
new file mode 100644
index 0000000..ba30a79
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/conversion/enterPersonInfo.jsp
@@ -0,0 +1,67 @@
+<%@taglib prefix="s" uri="/struts-tags" %>
+<html>
+<head>
+	<title>Struts2 Showcase - Conversion - Populate Object into Struts' action List</title>
+</head>
+<body>
+<div class="page-header">
+	<h1>Conversion - Populate Object into Struts' action List</h1>
+</div>
+
+<div class="container-fluid">
+	<div class="row-fluid">
+		<div class="span12">
+
+
+			<p/>
+				An example populating a list of object (Person.java) into Struts' action (PersonAction.java)
+			<p/>
+
+			See the jsp code <s:url var="url" action="showPersonJspCode" namespace="/conversion" /><s:a href="%{#url}">here.</s:a><br/>
+			See the code for PersonAction.java <s:url var="url" action="showPersonActionJavaCode" namespace="/conversion" /><s:a href="%{#url}">here.</s:a><br/>
+			See the code for Person.java <s:url var="url" action="showPersonJavaCode" namespace="/conversion" /><s:a href="%{#url}">here.</s:a><br/>
+
+			<p/>
+
+			<s:actionerror cssClass="alert alert-error"/>
+			<s:fielderror cssClass="alert alert-error"/>
+
+			<s:form action="submitPersonInfo" namespace="/conversion" method="post">
+			    <%--
+			        The following is done Dynamically
+			    --%>
+			    <s:iterator value="new int[3]" status="stat">
+			        <s:textfield    label="%{'Person '+#stat.index+' Name'}"
+			                        name="%{'persons['+#stat.index+'].name'}" />
+			        <s:textfield    label="%{'Person '+#stat.index+' Age'}"
+			                        name="%{'persons['+#stat.index+'].age'}" />
+			    </s:iterator>
+
+
+
+			    <%--
+			    The following is done statically:-
+			    --%>
+			    <%--
+			    <s:textfield    label="Person 1 Name"
+			                    name="persons[0].name" />
+			    <s:textfield    label="Person 1 Age"
+			                    name="persons[0].age" />
+			    <s:textfield    label="Person 2 Name"
+			                    name="persons[1].name" />
+			    <s:textfield    label="Person 2 Age"
+			                    name="persons[1].age" />
+			    <s:textfield    label="Person 3 Name"
+			                    name="persons[2].name" />
+			    <s:textfield    label="Person 3 Age"
+			                    name="persons[2].age" />
+			    --%>
+
+			    <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/conversion/index.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/conversion/index.jsp b/apps/showcase/src/main/webapp/WEB-INF/conversion/index.jsp
new file mode 100644
index 0000000..805d490
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/conversion/index.jsp
@@ -0,0 +1,35 @@
+<%@taglib prefix="s" uri="/struts-tags" %>
+
+<html>
+<head>
+	<title>Struts2 Showcase - Conversion</title>
+</head>
+<body>
+<div class="page-header">
+	<h1>Conversion</h1>
+</div>
+
+<div class="container-fluid">
+	<div class="row-fluid">
+		<div class="span12">
+
+			<ul>
+			    <li>
+			        <s:url var="url" action="enterPersonsInfo" namespace="/conversion" />
+			        <s:a href="%{#url}">Populate into the Struts action class a List of Person.java Object</s:a>
+			    </li>
+			    <li>
+			        <s:url var="url" action="enterAddressesInfo" namespace="/conversion" />
+			        <s:a href="%{#url}">Populate into Struts action class a Set of Address.java Object</s:a>
+			    </li>
+			    <li>
+			        <s:url var="url" action="enterOperationEnumInfo" namespace="/conversion" />
+			        <s:a href="%{#url}">Populate into Struts action class a List of OperationEnum.java (Java5 Enum)</s:a>
+			    </li>
+			</ul>
+
+		</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/conversion/showAddressInfo.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/conversion/showAddressInfo.jsp b/apps/showcase/src/main/webapp/WEB-INF/conversion/showAddressInfo.jsp
new file mode 100644
index 0000000..8f2c0c4
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/conversion/showAddressInfo.jsp
@@ -0,0 +1,21 @@
+<%@taglib prefix="s" uri="/struts-tags" %>
+<html>
+<head>
+	<title>Struts2 Showcase - Conversion - Populate into Struts action class a Set of Address.java Object</title>
+</head>
+<body>
+<div class="page-header">
+	<h1>Conversion - Populate into Struts action class a Set of Address.java Object</h1>
+</div>
+
+<div class="container-fluid">
+	<div class="row-fluid">
+		<div class="span12">
+			<s:iterator value="%{addresses}">
+				<s:property value="%{top.id}" /> -> <s:property value="%{top.address}" /><br/>
+			</s:iterator>
+		</div>
+	</div>
+</div>
+</body>
+</html>
\ No newline at end of file


[04/10] Moves showcase related JSPs under WEB-INF

Posted by lu...@apache.org.
http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/ajax/autocompleter/index.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/ajax/autocompleter/index.jsp b/apps/showcase/src/main/webapp/ajax/autocompleter/index.jsp
deleted file mode 100644
index 9079e7d..0000000
--- a/apps/showcase/src/main/webapp/ajax/autocompleter/index.jsp
+++ /dev/null
@@ -1,178 +0,0 @@
-<%@ page contentType="text/html;charset=UTF-8" language="java" %>
-<%@ taglib prefix="s" uri="/struts-tags" %>
-<%@ taglib prefix="sx" uri="/struts-dojo-tags" %>
-<html>
-<head>
-    <title>Ajax Examples</title>
-
-    <!--// START SNIPPET: common-include-->
-    <jsp:include page="/ajax/commonInclude.jsp"/>
-    <!--// END SNIPPET: common-include-->
-</head>
-
-<script type="text/javascript">
-   dojo.event.topic.subscribe("/before", function(event, widget){
-      alert('inside a topic event. before request');
-      //event: set event.cancel = true, to cancel request
-      //widget: widget that published the topic
-   });
-   
-   dojo.event.topic.subscribe("/after", function(data, request, widget){
-      alert('inside a topic event. after request');
-      //data : json object from request
-      //request: XMLHttpRequest object
-      //widget: widget that published the topic
-   });
-   
-   dojo.event.topic.subscribe("/value", function(error, request, widget){
-      alert('inside a topic event. on error');
-      //error : error object (error.message has the error message)
-      //request: XMLHttpRequest object
-      //widget: widget that published the topic
-   });
-   
-   function showKey() {
-      var autoCompleter = dojo.widget.byId('jsauto');
-      alert(autoCompleter.getSelectedKey());
-   }
-   
-   function showValue() {
-      var autoCompleter = dojo.widget.byId('jsauto');
-      alert(autoCompleter.getSelectedValue());
-   }
-</script>
-
-<body>
-
-
-<s:url var="jsonList" value="/JSONList.action"/>
-
-Using a JSON list returned from an action (href="/JSONList.action"), without autoComplete (autoComplete="false"), use indicator, search substring (searchType="substring")
-<br/>
-<sx:autocompleter 
-    indicator="indicator1" 
-    href="%{jsonList}" 
-    cssStyle="width: 200px;" 
-    autoComplete="false" 
-    searchType="substring"
-    name="state"/>
-<img id="indicator1" src="${pageContext.request.contextPath}/images/indicator.gif" alt="Loading..." style="display:none"/>
-
-<br/><br/>
-
-Reload on type (loadOnTextChange="true"), after 3 characters (loadMinimumCount="3", it is "3" by default), without the down arrow button (showDownArrow="false")
-<br/>
-<sx:autocompleter  
-    id="auto2"
-    indicator="indicator" 
-    href="%{jsonList}" 
-    cssStyle="width: 200px;" 
-    autoComplete="false" 
-    loadOnTextChange="true"
-    loadMinimumCount="3"
-    showDownArrow="false"/>
-<img id="indicator" src="${pageContext.request.contextPath}/images/indicator.gif" alt="Loading..." style="display:none"/>
-
-<br/><br/>
-
-Using a JSON list returned from an action (href="/JSONList.action"), with autoComplete (autoComplete="true")
-<br/>
-<sx:autocompleter  
-    name="auto3"
-    href="%{#jsonList}" 
-    cssStyle="width: 200px;" 
-    autoComplete="true" />
-
-<br/><br/>
-
-Using a local list (list="%{'apple','banana','grape','pear'}")
-<br/>
-<sx:autocompleter list="{'apple','banana','grape','pear'}" cssStyle="width: 150px;"/>
-
-<br/><br/>
-
-Force valid options (forceValidOption="true")
-<br/>
-<sx:autocompleter  
-    name="auto4"
-    href="%{#jsonList}" 
-    cssStyle="width: 200px;" 
-    forceValidOption="true"/>
-
-<br/>
-<br/>
-
-Make dropdown's height to 180px  (dropdownHeight="180")
-<br/>
-<sx:autocompleter
-    name="auto5"
-    href="%{#jsonList}" 
-    cssStyle="width: 200px;" 
-    dropdownHeight="180"/>
-
-<br/>
-<br/>
-
-Disabled combobox (disabled="true")
-<br/>
-<sx:autocompleter
-    name="auto6"
-    href="%{#jsonList}" 
-    cssStyle="width: 200px;" 
-    disabled="true"/>
-
-<br/>
-<br/>
-
-
-<s:url var="autoex" action="AutocompleterExample" namespace="/nodecorate"/>
-
-Link two autocompleter elements. When the selected value in 'Autocompleter 1' changes, the available values in 'Autocompleter 2' will change also.
-<br/>
-<form id="selectForm">
-  <p>
-    Autocompleter 1 
-    <sx:autocompleter  
-        name="select" 
-        list="{'fruits','colors'}" 
-        value="colors"
-        valueNotifyTopics="/Changed"
-        forceValidOption="true"/>
-  </p>
-</form>
-Autocompleter 2 
-<sx:autocompleter
-     name="auto8"
-     href="%{#autoex}"
-     autoComplete="false"
-     formId="selectForm"
-     listenTopics="/Changed"
-     forceValidOption="true" />
-
-<br/><br/>
-
-Publish before/after/value notify topics
-<br/>
-<sx:autocompleter 
-    name="auto9"
-    href="%{#jsonList}" 
-    listenTopics="/reload"
-    beforeNotifyTopics="/before"
-    afterNotifyTopics="/after"
-    valueNotifyTopics="/value"
-    cssStyle="width: 200px;" />
-<s:submit theme="simple" value="Reload Values" onclick="dojo.event.topic.publish('/reload')"/>
-
-<br/><br/>
-
-Get values using JavaScript
-<br/>
-<sx:autocompleter  href="%{#jsonList}"  id="jsauto" name="state"/>
-<s:submit theme="simple" value="Show Key" onclick="showKey()"/>
-<s:submit theme="simple" value="Show Value" onclick="showValue()"/>
-
-<br/><br/>
-
-<s:include value="../footer.jsp"/>
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/ajax/bind/index.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/ajax/bind/index.jsp b/apps/showcase/src/main/webapp/ajax/bind/index.jsp
deleted file mode 100644
index 779e453..0000000
--- a/apps/showcase/src/main/webapp/ajax/bind/index.jsp
+++ /dev/null
@@ -1,61 +0,0 @@
-<%@ page contentType="text/html;charset=UTF-8" language="java" %>
-<%@ taglib prefix="s" uri="/struts-tags" %>
-<%@ taglib prefix="sx" uri="/struts-dojo-tags" %>
-
-<html>
-<head>
-    <title>Bind Examples</title>
-    <jsp:include page="/ajax/commonInclude.jsp"/>
-</head>
-
-<script type="text/javascript">
-   dojo.event.topic.subscribe("/before", function(event, widget){
-      alert('inside a topic event. before request');
-      //event: set event.cancel = true, to cancel request
-      //widget: widget that published the topic
-   });
-   
-   dojo.event.topic.subscribe("/after", function(data, request, widget){
-      alert('inside a topic event. after request');
-      //data : text returned from request
-      //request: XMLHttpRequest object
-      //widget: widget that published the topic
-   });
-</script>
-
-<body>
-
-<div id="div1">Div 1</div>
-<s:url var="ajaxTest" value="/AjaxTest.action" />
-
-
-<br/><br/>
-<p>
-    1. Attach to "onclick" event on button. Update content of Div 1. Use with indicator.
-    <img id="indicator" src="${pageContext.request.contextPath}/images/indicator.gif" alt="Loading..." style="display:none"/>
-    <sx:bind href="%{#ajaxTest}" sources="button" targets="div1" events="onclick" indicator="indicator" />
-     <br/>
-    <s:submit theme="simple" type="submit" value="submit" id="button"/>
-</p>
-<br/><br/>
-<p>
-    2. Attach to "onmouseover", and "onclick" event on Area below and update content of Div1, highlight targets with green color
-    <sx:bind id="ex2" href="%{#ajaxTest}" sources="div2" targets="div1" events="onmouseover,onclick" highlightColor="green"/>
-    <div id="div2" style="width: 300px; height: 50px; border: 1px solid black">
-        Mouse Over or Click Here!
-    </div>
-</p>
-<br/><br/>
-<p>
-    3. Attach to "onkeydown" event on Textbox below update content of Div1. Publish topics.
-    <sx:bind id="ex4" href="%{#ajaxTest}" sources="txt1" targets="div1" events="onkeydown" beforeNotifyTopics="/before" afterNotifyTopics="/after" />
-    <br/>
-    <s:textfield id="txt1"/>
-</p>
-
-
-<br/><br/>
-<s:include value="../footer.jsp"/>
-
-</body>
-</html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/ajax/commonInclude.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/ajax/commonInclude.jsp b/apps/showcase/src/main/webapp/ajax/commonInclude.jsp
deleted file mode 100644
index 8be4022..0000000
--- a/apps/showcase/src/main/webapp/ajax/commonInclude.jsp
+++ /dev/null
@@ -1,5 +0,0 @@
-<%@ taglib prefix="s" uri="/struts-tags" %>
-<%@ taglib prefix="sx" uri="/struts-dojo-tags" %>
-<!--// START SNIPPET: common-include-->
-<sx:head cache="true"/>
-<!--// END SNIPPET: common-include-->

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/ajax/footer.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/ajax/footer.jsp b/apps/showcase/src/main/webapp/ajax/footer.jsp
deleted file mode 100644
index 366ebb8..0000000
--- a/apps/showcase/src/main/webapp/ajax/footer.jsp
+++ /dev/null
@@ -1,8 +0,0 @@
-<%@taglib prefix="s" uri="/struts-tags" %>
-
-<hr/>
-
-<s:url var="backToAjaxExamples" value="../index.jsp" />
-
-<s:a href="%{backToAjaxExamples}">Back To AJAX Examples</s:a>&nbsp;
-

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/ajax/index.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/ajax/index.jsp b/apps/showcase/src/main/webapp/ajax/index.jsp
deleted file mode 100644
index 8791fa3..0000000
--- a/apps/showcase/src/main/webapp/ajax/index.jsp
+++ /dev/null
@@ -1,24 +0,0 @@
-<html>
-<head><title>AJAX Examples</title></head>
-
-<body>
-
-<h1>AJAX Example</h1>
-
-<p>
-Note: The Ajax tags are experimental. These examples have only been tested under FireFox 1.5 and IE 6.
-</p>
-
-<ul>
-    <li><a href="bind/index.jsp">Bind tag</a></li>
-    <li><a href="autocompleter/index.jsp">Autocompleter combobox tag</a></li>
-    <li><a href="remotebutton/index.jsp">Remote button tag</a></li>
-    <li><a href="remotediv/index.jsp">Remote div tag</a></li>
-    <li><a href="remotelink/index.jsp">Remote link tag</a></li>
-    <li><a href="tabbedpanel/index.jsp">Tabbed panel</a></li>
-    <li><a href="remoteforms/index.jsp">Remote forms</a></li>
-    <li><a href="widgets/index.jsp">Widgets </a> (may not work in all browsers!) 
-        see the <a href="http://www.dojotoolkit.org">dojo website</a> for more information</li>
-</ul>
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/ajax/options.ftl
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/ajax/options.ftl b/apps/showcase/src/main/webapp/ajax/options.ftl
deleted file mode 100644
index d12ad6d..0000000
--- a/apps/showcase/src/main/webapp/ajax/options.ftl
+++ /dev/null
@@ -1,5 +0,0 @@
-[
-<#list options as option>
-	["${option?html}"],
-</#list>
-]
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/ajax/remotebutton/index.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/ajax/remotebutton/index.jsp b/apps/showcase/src/main/webapp/ajax/remotebutton/index.jsp
deleted file mode 100644
index 4dfe10d..0000000
--- a/apps/showcase/src/main/webapp/ajax/remotebutton/index.jsp
+++ /dev/null
@@ -1,70 +0,0 @@
-<%@ page contentType="text/html;charset=UTF-8" language="java" %>
-<%@ taglib prefix="s" uri="/struts-tags" %>
-<%@ taglib prefix="sx" uri="/struts-dojo-tags" %>
-
-<html>
-<head>
-    <title>Ajax Examples</title>
-    <jsp:include page="/ajax/commonInclude.jsp"/>
-</head>
-
-<script type="text/javascript">
-   function before() {alert("before request");}
-   function after() {alert("after request");}
-   function handler(widget, node) {
-     alert('I will handle this myself!');
-     dojo.byId(widget.targetsArray[0]).innerHTML = "Done";
-   }
-
-    dojo.event.topic.subscribe("/alltopics", function(data, type, e){
-      alert('inside a topic event. type='+type);
-      //data : text returned
-      //type : "before", "load" or "error"
-      //e    : request object
-   });
-</script>
-
-<body>
-
-<div id="t1">Div 1</div>
-<s:url var="ajaxTest" value="/AjaxTest.action" />
-
-<br/><br/>
-
-A submit button, that highlights (blue color) its targets
-<sx:submit type="submit" value="submit" targets="t1" href="%{ajaxTest}" highlightColor="blue"/>
-
-<br/><br/>
-
-A submit button, with an indicator
-<img id="indicator" src="${pageContext.request.contextPath}/images/indicator.gif" alt="Loading..." style="display:none"/>
-<sx:submit id="submit2" type="submit" value="submit" targets="t1" href="%{ajaxTest}" indicator="indicator"/>
-
-<br/><br/>
-
-A submit button, with "notifyTopics"
-<sx:submit type="submit" value="submit" targets="t1" href="%{ajaxTest}" notifyTopics="/alltopics"/>
-
-<br/><br/>
-
-Use an image as submit
-<s:url value="/images/struts-power.gif" var="imgUrl" />
-<sx:submit type="image" label="Alt Text" targets="t1"
-  src="%{imgUrl}" href="%{ajaxTest}" />
-<br/><br/>
-
-<label for="textInput">Text to be echoed</label>
-<br/><br/>
-
-Use a button as submit (custom text)
-<s:form id="form" action="AjaxTest">
-  <input type=textbox name="data">
-  <sx:submit type="button" label="Update Content" targets="t1"  id="ajaxbtn"/>
-</s:form>
-
-<br/><br/>
-
-<s:include value="../footer.jsp"/>
-
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/ajax/remotediv/example1.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/ajax/remotediv/example1.jsp b/apps/showcase/src/main/webapp/ajax/remotediv/example1.jsp
deleted file mode 100644
index 652ad0b..0000000
--- a/apps/showcase/src/main/webapp/ajax/remotediv/example1.jsp
+++ /dev/null
@@ -1,23 +0,0 @@
-<%@ page contentType="text/html;charset=UTF-8" language="java" %>
-<%@ taglib prefix="s" uri="/struts-tags" %>
-<%@ taglib prefix="sx" uri="/struts-dojo-tags" %>
-
-<html>
-<head>
-    <title>Ajax Examples</title>
-    <jsp:include page="/ajax/commonInclude.jsp"/>
-</head>
-
-<s:url var="ajaxTest" value="/AjaxTest.action" />
-
-
-<body>
-<sx:div
-        cssStyle="border: 1px solid yellow;"
-        href="%{ajaxTest}">
-    Initial Content</sx:div>
-
-<s:include value="../footer.jsp"/>
-
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/ajax/remotediv/example10.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/ajax/remotediv/example10.jsp b/apps/showcase/src/main/webapp/ajax/remotediv/example10.jsp
deleted file mode 100644
index f214e1c..0000000
--- a/apps/showcase/src/main/webapp/ajax/remotediv/example10.jsp
+++ /dev/null
@@ -1,31 +0,0 @@
-<%@ page contentType="text/html;charset=UTF-8" language="java" %>
-<%@ taglib prefix="s" uri="/struts-tags" %>
-<%@ taglib prefix="sx" uri="/struts-dojo-tags" %>
-
-<html>
-<head>
-    <title>Ajax Examples</title>
-    <jsp:include page="/ajax/commonInclude.jsp"/>
-</head>
-
-<script type="text/javascript">
-   function handler(widget, node) {
-     alert('I will handle this myself!');
-	 node.innerHTML = "Done";
-   }
-</script>
-
-<s:url var="ajaxTest" value="/AjaxTest.action" />
-
-<body>
-<sx:div
-        id="once"
-        cssStyle="border: 1px solid yellow;"
-        href="%{ajaxTest}"
-		handler="handler">
-    Initial Content</sx:div>
-
-<s:include value="../footer.jsp"/>
-
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/ajax/remotediv/example2.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/ajax/remotediv/example2.jsp b/apps/showcase/src/main/webapp/ajax/remotediv/example2.jsp
deleted file mode 100644
index a13eb22..0000000
--- a/apps/showcase/src/main/webapp/ajax/remotediv/example2.jsp
+++ /dev/null
@@ -1,28 +0,0 @@
-<%@ page contentType="text/html;charset=UTF-8" language="java" %>
-<%@ taglib prefix="s" uri="/struts-tags" %>
-<%@ taglib prefix="sx" uri="/struts-dojo-tags" %>
-
-<html>
-<head>
-    <title>Ajax Examples</title>
-    <jsp:include page="/ajax/commonInclude.jsp"/>
-</head>
-
-
-<body>
-<s:url var="ajaxTest" value="/AjaxTest.action" />
-
-
-<sx:div
-        id="once"
-        cssStyle="border: 1px solid yellow;"
-        href="%{#ajaxTest}"
-        updateFreq="2000"
-        indicator="indicator"
-		>
-    Initial Content</sx:div>
-<img id="indicator" src="${pageContext.request.contextPath}/images/indicator.gif" alt="Loading..." style="display:none"/>
-<s:include value="../footer.jsp"/>
-
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/ajax/remotediv/example3.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/ajax/remotediv/example3.jsp b/apps/showcase/src/main/webapp/ajax/remotediv/example3.jsp
deleted file mode 100644
index e263ce9..0000000
--- a/apps/showcase/src/main/webapp/ajax/remotediv/example3.jsp
+++ /dev/null
@@ -1,27 +0,0 @@
-<%@ page contentType="text/html;charset=UTF-8" language="java" %>
-<%@ taglib prefix="s" uri="/struts-tags" %>
-<%@ taglib prefix="sx" uri="/struts-dojo-tags" %>
-
-<html>
-<head>
-    <title>Ajax Examples</title>
-    <jsp:include page="/ajax/commonInclude.jsp"/>
-</head>
-
-<body>
-
-<s:url var="ajaxTest" value="/AjaxTest.action" />
-
-
-<sx:div
-        id="twoseconds"
-        cssStyle="border: 1px solid yellow;"
-        href="%{ajaxTest}"
-        delay="2000"
-        updateFreq="%{#parameters.period}"
-        errorText="There was an error">Initial Content</sx:div>
-
-<s:include value="../footer.jsp"/>
-
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/ajax/remotediv/example4.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/ajax/remotediv/example4.jsp b/apps/showcase/src/main/webapp/ajax/remotediv/example4.jsp
deleted file mode 100644
index c8a8576..0000000
--- a/apps/showcase/src/main/webapp/ajax/remotediv/example4.jsp
+++ /dev/null
@@ -1,28 +0,0 @@
-<%@ page contentType="text/html;charset=UTF-8" language="java" %>
-<%@ taglib prefix="s" uri="/struts-tags" %>
-<%@ taglib prefix="sx" uri="/struts-dojo-tags" %>
-
-<html>
-<head>
-    <title>Ajax Examples</title>
-    <jsp:include page="/ajax/commonInclude.jsp"/>
-</head>
-
-<body>
-
-<s:url var="ajaxTest" value="/AjaxTest.action" />
-
-<sx:div
-        id="fiveseconds"
-        cssStyle="border: 1px solid yellow;"
-        href="%{ajaxTest}"
-        delay="1000"
-        updateFreq="5000"
-        errorText="There was an error"
-        loadingText="reloading"
-        showLoadingText="true">loading now</sx:div>
-
-<s:include value="../footer.jsp"/>
-
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/ajax/remotediv/example5.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/ajax/remotediv/example5.jsp b/apps/showcase/src/main/webapp/ajax/remotediv/example5.jsp
deleted file mode 100644
index dbc87eb..0000000
--- a/apps/showcase/src/main/webapp/ajax/remotediv/example5.jsp
+++ /dev/null
@@ -1,27 +0,0 @@
-<%@ page contentType="text/html;charset=UTF-8" language="java" %>
-<%@ taglib prefix="s" uri="/struts-tags" %>
-<%@ taglib prefix="sx" uri="/struts-dojo-tags" %>
-
-<html>
-<head>
-    <title>Ajax Examples</title>
-    <jsp:include page="/ajax/commonInclude.jsp"/>
-</head>
-
-<body>
-
-<s:url var="ajaxNoUrl" value="/AjaxNoUrl.jsp" />
-
-<sx:div
-        id="error"
-        cssStyle="border: 1px solid yellow;"
-        href="/AjaxNoUrl.jsp"
-        delay="1000"
-        errorText="Could not contact server"
-        loadingText="reloading">loading now</sx:div>
-
-
-<s:include value="../footer.jsp"/>
-
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/ajax/remotediv/example6.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/ajax/remotediv/example6.jsp b/apps/showcase/src/main/webapp/ajax/remotediv/example6.jsp
deleted file mode 100644
index b33caf9..0000000
--- a/apps/showcase/src/main/webapp/ajax/remotediv/example6.jsp
+++ /dev/null
@@ -1,24 +0,0 @@
-<%@ page contentType="text/html;charset=UTF-8" language="java" %>
-<%@ taglib prefix="s" uri="/struts-tags" %>
-<%@ taglib prefix="sx" uri="/struts-dojo-tags" %>
-
-<html>
-<head>
-    <title>Ajax Examples</title>
-    <jsp:include page="/ajax/commonInclude.jsp"/>
-</head>
-
-<body>
-
-<sx:div
-        id="error"
-        cssStyle="border: 1px solid yellow;"
-        href="/AjaxNoUrl.jsp"
-        delay="1000"
-        showErrorTransportText="true"
-        loadingText="reloading">loading now</sx:div>
-
-<s:include value="../footer.jsp"/>
-
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/ajax/remotediv/example7.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/ajax/remotediv/example7.jsp b/apps/showcase/src/main/webapp/ajax/remotediv/example7.jsp
deleted file mode 100644
index 44b3917..0000000
--- a/apps/showcase/src/main/webapp/ajax/remotediv/example7.jsp
+++ /dev/null
@@ -1,27 +0,0 @@
-<%@ page contentType="text/html;charset=UTF-8" language="java" %>
-<%@ taglib prefix="s" uri="/struts-tags" %>
-<%@ taglib prefix="sx" uri="/struts-dojo-tags" %>
-
-<html>
-<head>
-    <title>Ajax Examples</title>
-    <jsp:include page="/ajax/commonInclude.jsp"/>
-</head>
-
-<body>
-
-<s:url var="test3" value="/Test3.action" />
-
-
-<sx:div
-        id="error"
-        cssStyle="border: 1px solid yellow;"
-        href="%{test3}"
-        delay="1000"
-		executeScripts="true"
-        loadingText="reloading">loading now</sx:div>
-
-<s:include value="../footer.jsp"/>
-
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/ajax/remotediv/example8.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/ajax/remotediv/example8.jsp b/apps/showcase/src/main/webapp/ajax/remotediv/example8.jsp
deleted file mode 100644
index 231d05b..0000000
--- a/apps/showcase/src/main/webapp/ajax/remotediv/example8.jsp
+++ /dev/null
@@ -1,57 +0,0 @@
-<%@ page contentType="text/html;charset=UTF-8" language="java" %>
-<%@ taglib prefix="s" uri="/struts-tags" %>
-<%@ taglib prefix="sx" uri="/struts-dojo-tags" %>
-
-<html>
-<head>
-    <title>Ajax Examples</title>
-    <jsp:include page="/ajax/commonInclude.jsp"/>
-</head>
-
-<body>
-
-<script>
-	var controller = {
-		refresh : function() {},
-		start : function() {},
-		stop : function() {}
-	};
-
-
-	dojo.event.topic.registerPublisher("/refresh", controller, "refresh");
-	dojo.event.topic.registerPublisher("/startTimer", controller, "start");
-	dojo.event.topic.registerPublisher("/stopTimer", controller, "stop");
-
-</script>
-<form id="form">
-	<label for="textInput">Text to be echoed</label>
-	<input type=textbox id="textInput" name="data">
-</form>
-
-<br/><br/>
-
-<input type=button value="refresh" onclick="controller.refresh()">
-<input type=button value="stop timer" onclick="controller.stop()">
-<input type=button value="start timer" onclick="controller.start()">
-
-<s:url var="ajaxTest" value="/AjaxTest.action" />
-
-<sx:div
-        id="once"
-        cssStyle="border: 1px solid yellow;"
-        href="%{ajaxTest}"
-        loadingText="Loading..."
-		listenTopics="/refresh"
-		startTimerListenTopics="/startTimer"
-		stopTimerListenTopics="/stopTimer"
-		updateFreq="3000"
-		autoStart="true"
-        highlightColor="red"
-		formId="form"
-		>
-    Initial Content</sx:div>
-
-<s:include value="../footer.jsp"/>
-
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/ajax/remotediv/example9.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/ajax/remotediv/example9.jsp b/apps/showcase/src/main/webapp/ajax/remotediv/example9.jsp
deleted file mode 100644
index e4d599f..0000000
--- a/apps/showcase/src/main/webapp/ajax/remotediv/example9.jsp
+++ /dev/null
@@ -1,63 +0,0 @@
-<%@ page contentType="text/html;charset=UTF-8" language="java" %>
-<%@ taglib prefix="s" uri="/struts-tags" %>
-<%@ taglib prefix="sx" uri="/struts-dojo-tags" %>
-
-<html>
-<head>
-    <title>Ajax Examples</title>
-    <jsp:include page="/ajax/commonInclude.jsp"/>
-</head>
-
-<body>
-
-<script>
-	var controller = {
-		refresh : function() {},
-		start : function() {},
-		stop : function() {}
-	};
-
-	dojo.event.topic.registerPublisher("/refresh", controller, "refresh");
-	dojo.event.topic.registerPublisher("/startTimer", controller, "start");
-	dojo.event.topic.registerPublisher("/stopTimer", controller, "stop");
-
-    dojo.event.topic.subscribe("/before", function(data, type, e){
-      alert('inside a topic event. before request');
-      //data : source element id
-      //type : "before" 
-      //e    : request object
-    });
-    
-    dojo.event.topic.subscribe("/after", function(data, type, e){
-      alert('inside a topic event. after request');
-      //data : text returned
-      //type : "load" 
-      //e    : undefined
-    });
-
-</script>
-
-<input type=button value="refresh" onclick="controller.refresh()">
-<input type=button value="start timer" onclick="controller.start()">
-<input type=button value="stop timer" onclick="controller.stop()">
-
-<s:url var="ajaxTest" value="/AjaxTest.action" />
-
-<sx:div
-        id="div1"
-        cssStyle="border: 1px solid yellow;"
-        href="%{ajaxTest}"
-        listenTopics="/refresh"
-		startTimerListenTopics="/startTimer"
-		stopTimerListenTopics="/stopTimer"
-		updateFreq="10000"
-		autoStart="false"
-        beforeNotifyTopics="/before"
-        afterNotifyTopics="/after"
-		>
-    Initial Content</sx:div>
-
-<s:include value="../footer.jsp"/>
-
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/ajax/remotediv/index.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/ajax/remotediv/index.jsp b/apps/showcase/src/main/webapp/ajax/remotediv/index.jsp
deleted file mode 100644
index 753db37..0000000
--- a/apps/showcase/src/main/webapp/ajax/remotediv/index.jsp
+++ /dev/null
@@ -1,55 +0,0 @@
-<%@ taglib prefix="s" uri="/struts-tags" %>
-<html>
-<head>
-    <title>AJAX-based remote DIV tag</title>
-    <%@ include file="/ajax/commonInclude.jsp" %>
-</head>
-
-<body>
-
-<h2>Examples</h2>
-
-<p>
-    <ol>
-        <li>
-            <a href="example1.jsp">A simple DIV that refreshes only once</a>
-        </li>
-
-		<li>
-            <a href="example10.jsp">A simple DIV that uses a custom handler</a>
-        </li>
-
-        <li>
-            <a href="example2.jsp?url=/AjaxTest.action">A simple DIV that updates every 2 seconds, with indicator</a>
-        </li>
-
-        <li>
-            <a href="example4.jsp">A simple DIV that updates every 5 seconds with loading text and reloading text and delay</a>
-        </li>
-
-        <li>
-            <a href="example5.jsp">A simple DIV's that cannot contact the server, with fixed error message</a>
-        </li>
-
-
-        <li>
-            <a href="example7.jsp">A div that calls the server, and JS in the resulting page is executed</a>
-        </li>
-
-        <li>
-            <a href="example8.jsp">A div that will listen to events to refresh and start/stop autoupdate, and gets highlighted in red (when it loads)</a>
-        </li>
-
-		<li>
-            <a href="example9.jsp">A div that will listen to events to refresh and start/stop autoupdate, publish notifyTopics</a>
-        </li>
-
-    </ol>
-
-
-</p>
-
-<s:include value="../footer.jsp"/>
-
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/ajax/remoteforms/index.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/ajax/remoteforms/index.jsp b/apps/showcase/src/main/webapp/ajax/remoteforms/index.jsp
deleted file mode 100644
index a961b94..0000000
--- a/apps/showcase/src/main/webapp/ajax/remoteforms/index.jsp
+++ /dev/null
@@ -1,119 +0,0 @@
-<%@ page contentType="text/html;charset=UTF-8" language="java" %>
-<%@ taglib prefix="s" uri="/struts-tags" %>
-<%@ taglib prefix="sx" uri="/struts-dojo-tags" %>
-
-<html>
-<head>
-    <title>Ajax Examples</title>
-    <sx:head />
-
-    <script language="JavaScript" type="text/javascript">
-        dojo.event.topic.subscribe("/beforeSubmit", function(event, widget) {
-            alert('you can manipulate the form before it gets submitted. To cancel the submit event set event.cancel=true');
-            event.cancel = true;
-        });
-    </script>
-
-</head>
-
-<body>
-
-<div id='two' style="border: 1px solid yellow;"><b>initial content</b></div>
-
-
-<br /><br />
-Remote form replacing another div:<br/>
-<s:form
-        id='theForm2'
-        cssStyle="border: 1px solid green;"
-        action='AjaxRemoteForm'
-        method='post'>
-
-    <input type='text' name='data' value='Struts User'>
-
-    <sx:submit value="GO2" targets="two"/>
-
-</s:form>
-
-<br /><br />
-Remote form replacing the forms content:<br/>
-<s:form
-        id='theForm3'
-        cssStyle="border: 1px solid green;"
-        action='AjaxRemoteForm'
-        method='post'>
-
-    <input type='text' name='data' value='Struts User'>
-
-    <sx:submit value="GO3" targets="theForm3"/>
-
-</s:form>
-
-<br /><br />
-Remote form evaluating suplied JS on completion:<br/>
-<s:form
-        id='theForm4'
-        cssStyle="border: 1px solid green;"
-        action='Test3'
-        method='post'>
-
-    <input type='text' name='data' value='Struts User'>
-
-    <sx:submit value="GO4" executeScripts="true"/>
-
-</s:form>
-
-<br /><br />
-Submit outside form:<br/>
-<s:form
-        id='theForm5'
-        cssStyle="border: 1px solid green;"
-        action='AjaxRemoteForm'
-        method='post'>
-
-    <input type='text' name='data' value='Struts User'>
-</s:form>
-<sx:submit value="GO5" formId="theForm5" targets="two"/>
-
-<br /><br />
-<s:url var="remoteUrl" namespace="/remoteforms" action="AjaxRemoteForm"/>
-Submit outside form, href in submit tag:<br/>
-<s:form
-        id='theForm6'
-        cssStyle="border: 1px solid green;"
-        method='post'>
-
-    <input type='text' name='data' value='Struts User'>
-</s:form>
-<sx:submit value="GO6" formId="theForm6" targets="two" href="%{#remoteUrl}"/>
-
-<br /><br />
-Remote form whose submit is cancelled:<br/>
-<s:form
-        id='theForm7'
-        cssStyle="border: 1px solid green;"
-        action='AjaxRemoteForm'
-        method='post'>
-
-    <input type='text' name='data' value='Struts User'>
-
-    <sx:submit value="GO7" targets="theForm7" beforeNotifyTopics="/beforeSubmit"/>
-
-</s:form>
-
-<br /><br />
-A form with no remote submit (so should not be ajaxified):<br/>
-<s:form
-        id='theForm8'
-        cssStyle="border: 1px solid green;"
-        action='AjaxRemoteForm'
-        method='post'>
-
-    <input type='text' name='data' value='Struts User'>
-
-    <s:submit value="Go AWAY"  />
-
-</s:form>
-
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/ajax/remotelink/index.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/ajax/remotelink/index.jsp b/apps/showcase/src/main/webapp/ajax/remotelink/index.jsp
deleted file mode 100644
index a5070ca..0000000
--- a/apps/showcase/src/main/webapp/ajax/remotelink/index.jsp
+++ /dev/null
@@ -1,127 +0,0 @@
-<%@ page contentType="text/html;charset=UTF-8" language="java" %>
-<%@ taglib prefix="s" uri="/struts-tags" %>
-<%@ taglib prefix="sx" uri="/struts-dojo-tags" %>
-
-<html>
-<head>
-    <title>Ajax Examples</title>
-    <jsp:include page="/ajax/commonInclude.jsp"/>
-</head>
-
-<script type="text/javascript">
-   function handler(widget, node) {
-     alert('I will handle this myself!');
-	 dojo.byId(widget.targetsArray[0]).innerHTML = "Done";
-   }
-
-   dojo.event.topic.subscribe("/before", function(event, widget){
-      alert('inside a topic event. before request');
-      //event: set event.cancel = true, to cancel request
-      //widget: widget that published the topic
-   });
-   
-   dojo.event.topic.subscribe("/after", function(data, request, widget){
-      alert('inside a topic event. after request');
-      //data : text returned from request
-      //request: XMLHttpRequest object
-      //widget: widget that published the topic
-   });
-   
-   dojo.event.topic.subscribe("/error", function(error, request, widget){
-      alert('inside a topic event. on error');
-      //error : error object (error.message has the error message)
-      //request: XMLHttpRequest object
-      //widget: widget that published the topic
-   });
-   
-   dojo.event.topic.subscribe("/topics", function(data, type, e){
-      alert('inside a topic event. type='+type);
-      //data : text returned
-      //type : "before", "load", "error"
-      //e    : request object
-   });
-</script>
-
-<body>
-
-<div id="t1">Div 1</div>
-
-<br/>
-
-<div id="t2">Div 2</div>
-
-<br/><br/>
-
-<s:url var="ajaxTest" value="/AjaxTest.action" />
-<s:url var="test3" value="/Test3.action" />
-
-<sx:a  
-        href="%{#ajaxTest}"
-        targets="t1"
-        highlightColor="red"
-        highlightDuration="2000">Update 'Div 1' and use red highligh to notify user of changed content</sx:a>
-
-<br/><br/>
-
-<sx:a   id="link1"
-        href="%{#ajaxTest}"
-        indicator="indicator"
-		targets="t1,t2" 
-        beforeNotifyTopics="/before"
-        afterNotifyTopics="/after" >Update 'Div 1' and 'Div 2', publish topic '/before' and '/after', use indicator</sx:a>
-<img id="indicator" src="${pageContext.request.contextPath}/images/indicator.gif" alt="Loading..." style="display:none"/>
-
-<br/><br/>
-
-<sx:a  id="link2"
-        href="/AjaxNoUrl.jsp"
-		errorText="Error Loading"
-		targets="t1"
-        errorNotifyTopics="/error">Try to update 'Div 1', publish '/error', use custom error message</sx:a>
-
-<br/><br/>
-
-<sx:a  id="link3"
-        href="%{#ajaxTest}"
-		loadingText="Loading!!!"
-        showLoadingText="true"
-		targets="t1">Update 'Div 1', use custom loading message</sx:a>
-
-<br/><br/>
-
-<sx:a  id="link4"
-        href="%{#test3}"
-		executeScripts="true"
-		targets="t2">Update 'Div 2' and execute returned javascript </sx:a>
-
-<br/><br/>
-
-<sx:a  id="link5"
-        href="%{#ajaxTest}"
-		handler="handler"
-		targets="t2">Update 'Div 2' using a custom handler </sx:a>
-
-
-<br/><br/>
-
-<label for="textInput">Text to be echoed</label>
-
-<form id="form">
-  <input type=textbox name="data">
-</form>
-
-<br/><br/>
-
-<sx:a  id="link6"
-        href="%{#ajaxTest}"
-		targets="t2"
-		formId="form"
-		>Update 'Div 2' with the content of the textbox </sx:a>
-
-
-<br/><br/>
-
-<s:include value="../footer.jsp"/>
-
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/ajax/tabbedpanel/example1.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/ajax/tabbedpanel/example1.jsp b/apps/showcase/src/main/webapp/ajax/tabbedpanel/example1.jsp
deleted file mode 100644
index 99932dd..0000000
--- a/apps/showcase/src/main/webapp/ajax/tabbedpanel/example1.jsp
+++ /dev/null
@@ -1,95 +0,0 @@
-<%@ page contentType="text/html;charset=UTF-8" language="java" %>
-<%@ taglib prefix="s" uri="/struts-tags" %>
-<%@ taglib prefix="sx" uri="/struts-dojo-tags" %>
- 
-<html>
-<head>
-    <title>Ajax examples - tabbled panel</title>
-
-    <jsp:include page="/ajax/commonInclude.jsp"/>
-</head>
-
-<s:url var="ajaxTest" value="/AjaxTest.action" />
-
-<body>
-
-    <table cellpadding="0" cellspacing="10" border="0" width="900">
-        <tr>
-            <td align="top" width="400">
-                <sx:tabbedpanel id="test" >
-                    <sx:div id="one" label="one" >
-                        This is the first pane<br/>
-                        <s:form>
-                            <s:textfield name="tt" label="Test Text"/>  <br/>
-                            <s:textfield name="tt2" label="Test Text2"/>
-                        </s:form>
-                    </sx:div>
-                    <sx:div id="two" label="two" >
-                        This is the second panel
-                    </sx:div>
-                    <sx:div id="three" label="three" >
-                        This is the three
-                    </sx:div>
-                </sx:tabbedpanel>
-            </td>
-            <td align="top">
-                <sx:tabbedpanel id="test2" >
-                    <sx:div id="left" label="left" >
-                        This is the left pane<br/>
-                        <s:form>
-                            <s:textfield name="tt" label="Test Text"/>  <br/>
-                            <s:textfield name="tt2" label="Test Text2"/>
-                        </s:form>
-                    </sx:div>
-                    <sx:div href="%{ajaxTest}" id="ryh1" 
-                                    label="remote one"></sx:div>
-                    <sx:div id="middle" label="middle" >
-                        middle tab<br/>
-                        <s:form>
-                            <s:textfield name="tt" label="Test Text44"/>  <br/>
-                            <s:textfield name="tt2" label="Test Text442"/>
-                        </s:form>
-                    </sx:div>
-                    <sx:div  href="%{ajaxTest}" id="ryh21"  label="remote right"/>
-                </sx:tabbedpanel>
-            </td>
-        </tr>
-        <tr>
-            <td align="top">
-                <sx:tabbedpanel id="testremote">
-                    <sx:div  href="%{ajaxTest}" id="r1"  label="remote one">
-                        <s:action name="AjaxTest" executeResult="true" />
-                    </sx:div>
-                    <sx:div  href="%{ajaxTest}" id="r2"  label="remote two"></sx:div>
-                    <sx:div  href="%{ajaxTest}" id="r3"  label="remote three"></sx:div>
-                </sx:tabbedpanel>
-            </td>
-            <td align="top">
-                <sx:tabbedpanel id="test3" >
-                    <sx:tabbedpanel id="test11" label="Container 1">
-                        <sx:div id="i11" label="inner 1 one">Inner 1</sx:div>
-                        <sx:div id="112" label="inner 1 two">Inner 2</sx:div>
-                        <sx:div id="i13" label="inner 1 three">Inner 3</sx:div>
-                    </sx:tabbedpanel>
-                   
-                    <sx:tabbedpanel id="test12" label="Container 2">
-                        <sx:div id="i21" label="inner 2 one" >Inner 21</sx:div>
-                        <sx:div id="122" label="inner 2 two" >Inner 22</sx:div>
-                        <sx:div id="i23" label="inner 2 three" >Inner 23</sx:div>
-                    </sx:tabbedpanel>
-                    
-                    <sx:tabbedpanel id="test13" label="Container 3">
-                        <sx:div id="i31" label="inner 3 one" >Inner 31</sx:div>
-                        <sx:div id="132" label="inner 3 two" >Inner 32</sx:div>
-                        <sx:div id="i33" label="inner 3 three" >Inner 33</sx:div>
-                    </sx:tabbedpanel>
-                </sx:tabbedpanel>
-            </td>
-        </tr>
-    </table>
-
-<s:include value="../footer.jsp"/>
-
-
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/ajax/tabbedpanel/example2.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/ajax/tabbedpanel/example2.jsp b/apps/showcase/src/main/webapp/ajax/tabbedpanel/example2.jsp
deleted file mode 100644
index 283bbdd..0000000
--- a/apps/showcase/src/main/webapp/ajax/tabbedpanel/example2.jsp
+++ /dev/null
@@ -1,26 +0,0 @@
-<%@ page contentType="text/html;charset=UTF-8" language="java" %>
-<%@ taglib prefix="s" uri="/struts-tags" %>
-<%@ taglib prefix="sx" uri="/struts-dojo-tags" %>
-
-<html>
-<head>
-    <title>Ajax examples - tabbled panel</title>
-
-    <jsp:include page="/ajax/commonInclude.jsp"/>
-</head>
-
-<body>
-
-    <sx:tabbedpanel id="test2" cssStyle="width: 500px; height: 300px;" doLayout="true">
-        <sx:div label="test1"  >
-          I'm a Tab!!!
-        </sx:div >
-        <sx:div  id="middle" label="test2"   >
-          I'm the other Tab!!!
-        </sx:div >
-    </sx:tabbedpanel>
-				  
-<s:include value="../footer.jsp"/>
-
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/ajax/tabbedpanel/example3.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/ajax/tabbedpanel/example3.jsp b/apps/showcase/src/main/webapp/ajax/tabbedpanel/example3.jsp
deleted file mode 100644
index 2456d39..0000000
--- a/apps/showcase/src/main/webapp/ajax/tabbedpanel/example3.jsp
+++ /dev/null
@@ -1,46 +0,0 @@
-<%@ page contentType="text/html;charset=UTF-8" language="java" %>
-<%@ taglib prefix="s" uri="/struts-tags" %>
-<%@ taglib prefix="sx" uri="/struts-dojo-tags" %>
-
-<html>
-<head>
-    <title>Ajax examples - tabbled panel</title>
-
-    <jsp:include page="/ajax/commonInclude.jsp"/>
-</head>
-
-<s:url var="ajaxTest" value="/AjaxTest.action" />
-
-<body>
-
-    <table cellpadding="0" cellspacing="10" border="0" width="600">
-        <tr>
-            <td align="top">
-                <!--// START SNIPPET: tabbedpanel-tag-->
-                <sx:tabbedpanel id="test2" cssStyle="width: 500px; height: 300px;" doLayout="true">
-                      <sx:div id="left" label="left">
-                          This is the left pane<br/>
-                          <s:form >
-                              <s:textfield name="tt" label="Test Text" />  <br/>
-                              <s:textfield name="tt2" label="Test Text2" />
-                          </s:form>
-                      </sx:div>
-                      <sx:div href="%{ajaxTest}" id="ryh1" label="remote one" preload="false"/>
-                      <sx:div id="middle" label="middle">
-                          middle tab<br/>
-                          <s:form >
-                              <s:textfield name="tt" label="Test Text44" />  <br/>
-                              <s:textfield name="tt2" label="Test Text442" />
-                          </s:form>
-                      </sx:div>
-                      <sx:div href="%{ajaxTest}"  id="ryh21" label="remote right" preload="false"/>
-                  </sx:tabbedpanel>
-                <!--// END SNIPPET: tabbedpanel-tag-->
-             </td>
-        </tr>
-    </table>
-
-<s:include value="../footer.jsp"/>
-
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/ajax/tabbedpanel/example4.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/ajax/tabbedpanel/example4.jsp b/apps/showcase/src/main/webapp/ajax/tabbedpanel/example4.jsp
deleted file mode 100644
index 3b960fa..0000000
--- a/apps/showcase/src/main/webapp/ajax/tabbedpanel/example4.jsp
+++ /dev/null
@@ -1,57 +0,0 @@
-<%@ page contentType="text/html;charset=UTF-8" language="java" %>
-<%@ taglib prefix="s" uri="/struts-tags" %>
-<%@ taglib prefix="sx" uri="/struts-dojo-tags" %>
-
-<html>
-<head>
-    <title>Ajax examples - tabbled panel</title>
-
-    <jsp:include page="/ajax/commonInclude.jsp"/>
-</head>
-
-<script>
-    function enableTab(id) {
-      var tabContainer = dojo.widget.byId('tabContainer');
-      tabContainer.enableTab(id);
-    }
-    
-    function disableTab(index) {
-      var tabContainer = dojo.widget.byId('tabContainer');
-      tabContainer.disableTab(index);
-    }
-</script>
-
-<body>
-    
-    <sx:tabbedpanel id="tabContainer" cssStyle="width: 500px; height: 300px;" doLayout="true">
-          <sx:div id="tab1" label="test1"  >
-              Enabled Tab
-          </sx:div >
-          <sx:div  id="tab2" label="test2"  disabled="true" >
-              Diabled Tab
-          </sx:div >
-           <sx:div  id="tab3" label="test3" >
-              Some other Tab
-          </sx:div >
-      </sx:tabbedpanel>
-
-    <br />
-    
-    <input type="button" onclick="enableTab(1)" value="Enable Tab 2 using Index" />
-    <input type="button" onclick="disableTab(1)" value="Disable Tab 2 using Index" />
-    
-    <br />
-    
-    <input type="button" onclick="enableTab('tab2')" value="Enable Tab 2 using Id" />
-    <input type="button" onclick="disableTab('tab2')" value="Disable Tab 2 using Id" />
-    
-    <br />
-    
-    <input type="button" onclick="enableTab(dojo.widget.byId('tab2'))" value="Enable Tab 2 using widget" />
-    <input type="button" onclick="disableTab(dojo.widget.byId('tab2'))" value="Disable Tab 2 using widget" />
-
-<br /> <br />     
-<s:include value="../footer.jsp"/>
-
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/ajax/tabbedpanel/example5.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/ajax/tabbedpanel/example5.jsp b/apps/showcase/src/main/webapp/ajax/tabbedpanel/example5.jsp
deleted file mode 100644
index 40dd71f..0000000
--- a/apps/showcase/src/main/webapp/ajax/tabbedpanel/example5.jsp
+++ /dev/null
@@ -1,29 +0,0 @@
-<%@ page contentType="text/html;charset=UTF-8" language="java" %>
-<%@ taglib prefix="s" uri="/struts-tags" %>
-<%@ taglib prefix="sx" uri="/struts-dojo-tags" %>
-
-<html>
-<head>
-    <title>Ajax examples - tabbled panel</title>
-
-    <jsp:include page="/ajax/commonInclude.jsp"/>
-</head>
-
-<body>
-
-				<sx:tabbedpanel id="test2" cssStyle="width: 500px; height: 300px;" doLayout="true" labelposition="bottom">
-                      <sx:div id="left" label="test1" closable="true">
-                          I'm a Tab!!!
-                      </sx:div >
-                      <sx:div  id="middle" label="test2"  closable="true">
-                          I'm the other Tab!!!
-                      </sx:div >
-                     
-                  </sx:tabbedpanel>
-				  
-				
-
-<s:include value="../footer.jsp"/>
-
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/ajax/tabbedpanel/example5Ok.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/ajax/tabbedpanel/example5Ok.jsp b/apps/showcase/src/main/webapp/ajax/tabbedpanel/example5Ok.jsp
deleted file mode 100644
index 5c3b801..0000000
--- a/apps/showcase/src/main/webapp/ajax/tabbedpanel/example5Ok.jsp
+++ /dev/null
@@ -1,9 +0,0 @@
-<%@ page language="java" contentType="text/html; charset=UTF-8"
-    pageEncoding="UTF-8"%>
-<%@taglib prefix="s" uri="/struts-tags" %>
-    
-<h1>OK</h1>    
-<s:property value="name" /><br/>
-<s:property value="age" /><br/>
-    
-    
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/ajax/tabbedpanel/example6.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/ajax/tabbedpanel/example6.jsp b/apps/showcase/src/main/webapp/ajax/tabbedpanel/example6.jsp
deleted file mode 100644
index be6e9ef..0000000
--- a/apps/showcase/src/main/webapp/ajax/tabbedpanel/example6.jsp
+++ /dev/null
@@ -1,40 +0,0 @@
-<%@ page contentType="text/html;charset=UTF-8" language="java" %>
-<%@ taglib prefix="s" uri="/struts-tags" %>
-<%@ taglib prefix="sx" uri="/struts-dojo-tags" %>
-
-<html>
-<head>
-    <title>Ajax examples - tabbled panel</title>
-
-    <jsp:include page="/ajax/commonInclude.jsp"/>
-</head>
-
-<script>
-    dojo.event.topic.subscribe('/before', function(event, tab, tabContainer) {
-      alert("Before selecting tab. Set 'event.cancel=true' to prevent selection");
-    });
-    dojo.event.topic.subscribe('/after', function(tab, tabContainer) {
-      alert("After tab was selected");
-    });
-</script>
-<body>
-    
-<sx:tabbedpanel 
-    id="tabContainer"
-    cssStyle="width: 500px; height: 300px;" 
-    doLayout="true"
-    beforeSelectTabNotifyTopics="/before"
-    afterSelectTabNotifyTopics="/after">
-  <sx:div id="tab1" label="test1"  >
-      Tab 1
-  </sx:div >
-  <sx:div  id="tab2" label="test2" >
-      Tab 2
-  </sx:div >
-</sx:tabbedpanel>
-
-<br /><br />    
-<s:include value="../footer.jsp"/>
-
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/ajax/tabbedpanel/index.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/ajax/tabbedpanel/index.jsp b/apps/showcase/src/main/webapp/ajax/tabbedpanel/index.jsp
deleted file mode 100644
index d2d3e9c..0000000
--- a/apps/showcase/src/main/webapp/ajax/tabbedpanel/index.jsp
+++ /dev/null
@@ -1,28 +0,0 @@
-<%@ taglib prefix="s" uri="/struts-tags" %>
-<html>
-<head>
-    <title>Tabbed Panes</title>
-    <%@ include file="/ajax/commonInclude.jsp" %>
-</head>
-
-<body>
-
-<h2>Examples</h2>
-
-<p>
-    <ol>
-        <li><a href="example2.jsp">A local tabbed panel width fixed size (doLayout="true")</a></li>
-        <li><a href="example4.jsp">A Local tabbed panel with disabled tabs</a></li>
-        <li><a href="example6.jsp">A Local tabbed panel that publishes topics when tabs are selected(before and after)</a></li>
-        <li><a href="example3.jsp">A remote (href != "") and local tabbed panel</a></li>
-        <li><a href="example1.jsp">Various remote and local tabbed panels (with enclosed tabbed pannels) with layout (doLayout="false")</a></li>
-        <li><a href="example5.jsp">A local tabbed panel width fixed size (doLayout="true") with close button on the tab pane (closable="true" on tabs), and tabs on the bottom (labelposition="bottom")</a></li>
-    </ol>
-
-
-</p>
-
-<s:include value="../footer.jsp"/>
-
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/ajax/tabbedpanel/nodecorate/panel1.ftl
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/ajax/tabbedpanel/nodecorate/panel1.ftl b/apps/showcase/src/main/webapp/ajax/tabbedpanel/nodecorate/panel1.ftl
deleted file mode 100644
index fcc895e..0000000
--- a/apps/showcase/src/main/webapp/ajax/tabbedpanel/nodecorate/panel1.ftl
+++ /dev/null
@@ -1,3 +0,0 @@
-
-Hello, <br/>
-Today is ${todayDate?html}, the time now is ${todayTime?html}

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/ajax/tabbedpanel/nodecorate/panel2.ftl
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/ajax/tabbedpanel/nodecorate/panel2.ftl b/apps/showcase/src/main/webapp/ajax/tabbedpanel/nodecorate/panel2.ftl
deleted file mode 100644
index e866e6d..0000000
--- a/apps/showcase/src/main/webapp/ajax/tabbedpanel/nodecorate/panel2.ftl
+++ /dev/null
@@ -1,7 +0,0 @@
-
-<div id="result">
-</div>
-<@sx.form action="panel2Submit" namespace="/nodecorate">
-	<@s.textfield label="Name" name="name" />
-	<@sx.submit targets="result" />
-</...@sx.form>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/ajax/tabbedpanel/nodecorate/panel2Submit.ftl
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/ajax/tabbedpanel/nodecorate/panel2Submit.ftl b/apps/showcase/src/main/webapp/ajax/tabbedpanel/nodecorate/panel2Submit.ftl
deleted file mode 100644
index d338eac..0000000
--- a/apps/showcase/src/main/webapp/ajax/tabbedpanel/nodecorate/panel2Submit.ftl
+++ /dev/null
@@ -1,2 +0,0 @@
-
-Hello, ${name?html}

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/ajax/tabbedpanel/nodecorate/panel3.ftl
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/ajax/tabbedpanel/nodecorate/panel3.ftl b/apps/showcase/src/main/webapp/ajax/tabbedpanel/nodecorate/panel3.ftl
deleted file mode 100644
index 79209df..0000000
--- a/apps/showcase/src/main/webapp/ajax/tabbedpanel/nodecorate/panel3.ftl
+++ /dev/null
@@ -1,9 +0,0 @@
-
-<div id="result">
-</div>
-
-<@s.form action="panel3Submit" namespace="/nodecorate">
-	<@sx.autocompleter label="Gender" name="gender" list="%{#{'Male':'Male','Female':'Female'}}"  />
-	<@sx.submit targets="result" />
-</...@s.form>
-

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/ajax/tabbedpanel/nodecorate/panel3Submit.ftl
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/ajax/tabbedpanel/nodecorate/panel3Submit.ftl b/apps/showcase/src/main/webapp/ajax/tabbedpanel/nodecorate/panel3Submit.ftl
deleted file mode 100644
index 7dacc93..0000000
--- a/apps/showcase/src/main/webapp/ajax/tabbedpanel/nodecorate/panel3Submit.ftl
+++ /dev/null
@@ -1,2 +0,0 @@
-
-So, you are a ${gender?html}

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/ajax/testjs.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/ajax/testjs.jsp b/apps/showcase/src/main/webapp/ajax/testjs.jsp
deleted file mode 100644
index 5223ef7..0000000
--- a/apps/showcase/src/main/webapp/ajax/testjs.jsp
+++ /dev/null
@@ -1,14 +0,0 @@
-<%
-    request.setAttribute("decorator", "none");
-    response.setHeader("Cache-Control","no-cache"); //HTTP 1.1
-    response.setHeader("Pragma","no-cache"); //HTTP 1.0
-    response.setDateHeader ("Expires", 0); //prevents caching at the proxy server
-%>
-
-<script language="JavaScript" type="text/javascript">
-    alert('This JavaScript currently being evaluated is in the result...');
-</script>
-Show me some text also
-<script language="JavaScript" type="text/javascript">
-    alert('And some more text for fun!');
-</script>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/ajax/tree/getCategory.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/ajax/tree/getCategory.jsp b/apps/showcase/src/main/webapp/ajax/tree/getCategory.jsp
deleted file mode 100644
index 6a56cbd..0000000
--- a/apps/showcase/src/main/webapp/ajax/tree/getCategory.jsp
+++ /dev/null
@@ -1,23 +0,0 @@
-<%@ taglib prefix="s" uri="/struts-tags" %>
-<%@include file="partialChunkHeader.jsp"%>
-<ul>
-<s:iterator value="category.children">
-    <li>
-        <s:if test="children.size() > 0">
-            <sx:a href="toggle.action?catId=%{id}">+</sx:a>
-        </s:if>
-        <s:property value="name"/>
-    </li>
-    <s:if test="toggle">
-        <s:set name="display" value="'none'"/>
-    </s:if>
-    <s:else>
-        <s:set name="display" value="''"/>
-    </s:else>                                                                                     ›
-
-    <sx:div id="children_%{id}"
-            cssStyle="display: %{display}"
-            href="getCategory.action?catId=%{id}"
-            refreshListenTopic="children_%{id}"/>
-</s:iterator>
-</ul>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/ajax/tree/partialChunkHeader.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/ajax/tree/partialChunkHeader.jsp b/apps/showcase/src/main/webapp/ajax/tree/partialChunkHeader.jsp
deleted file mode 100644
index 01113d6..0000000
--- a/apps/showcase/src/main/webapp/ajax/tree/partialChunkHeader.jsp
+++ /dev/null
@@ -1,6 +0,0 @@
-<%
-    request.setAttribute("decorator", "none");
-    response.setHeader("Cache-Control","no-cache"); //HTTP 1.1
-    response.setHeader("Pragma","no-cache"); //HTTP 1.0
-    response.setDateHeader ("Expires", 0); //prevents caching at the proxy server
-%>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/ajax/tree/toggle.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/ajax/tree/toggle.jsp b/apps/showcase/src/main/webapp/ajax/tree/toggle.jsp
deleted file mode 100644
index 35010bb..0000000
--- a/apps/showcase/src/main/webapp/ajax/tree/toggle.jsp
+++ /dev/null
@@ -1,12 +0,0 @@
-<%@ taglib prefix="s" uri="/struts-tags" %>
-<%@include file="partialChunkHeader.jsp"%>
-<%
-    response.setContentType("text/javascript");
-%>
-dojo.event.topic.publish("children_<s:property value="category.id"/>");
-var d = document.getElementById("children_<s:property value="category.id"/>");
-if (d.style.display != "none") {
-    d.style.display = "none";
-} else {
-    d.style.display = "";
-}

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/ajax/tree/tree.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/ajax/tree/tree.jsp b/apps/showcase/src/main/webapp/ajax/tree/tree.jsp
deleted file mode 100644
index 81d68d6..0000000
--- a/apps/showcase/src/main/webapp/ajax/tree/tree.jsp
+++ /dev/null
@@ -1,13 +0,0 @@
-<%@ taglib prefix="s" uri="/struts-tags" %>
-<html>
-<head>
-    <title>Tree</title>
-    <sx:head />
-</head>
-
-<body>
-
-<s:action name="getCategory" executeResult="true"/>
-
-</body>
-</html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/ajax/widgets/index.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/ajax/widgets/index.jsp b/apps/showcase/src/main/webapp/ajax/widgets/index.jsp
deleted file mode 100644
index 5e43c6f..0000000
--- a/apps/showcase/src/main/webapp/ajax/widgets/index.jsp
+++ /dev/null
@@ -1,40 +0,0 @@
-<%@ page contentType="text/html;charset=UTF-8" language="java" %>
-<%@ taglib prefix="s" uri="/struts-tags" %>
-<%@ taglib prefix="sx" uri="/struts-dojo-tags" %>
-
-<html>
-<head>
-    <title>Ajax Widgets</title>
-    <jsp:include page="/ajax/commonInclude.jsp"/>
-</head>
-
-<body>
-
-<br/>
-NOTES:
-<ul>
-    <li>Make sure that there is a 'value' attribute in the textarea with the content for the editor</li>
-    <li>This is experimental</li>
-</ul>
-
-
-Default Editor configuration:<br/>
-<s:form id="form1" action="AjaxRemoteForm" method="post">
-    <sx:textarea name="data" cols="50" rows="10" value="Test Data 1" />
-    <s:submit value="Submit"/>
-</s:form>
-<br/>
-
-Configured Editor configuration:<br/>  
-<s:form id="form2" action="AjaxRemoteForm" method="post">
-    <sx:textarea id="editor2" name="data" cols="50" rows="10" value="Test Data 2">
-        <s:param name="editorControls">textGroup;|;justifyGroup;|;listGroup;|;indentGroup</s:param>
-    </sx:textarea>
-    <s:submit value="Submit"/>
-</s:form>
-<br/>
-
-<s:include value="../footer.jsp"/>
-
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/chat/chatLogin.ftl
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/chat/chatLogin.ftl b/apps/showcase/src/main/webapp/chat/chatLogin.ftl
deleted file mode 100644
index 439ea6b..0000000
--- a/apps/showcase/src/main/webapp/chat/chatLogin.ftl
+++ /dev/null
@@ -1,27 +0,0 @@
-<html>
-	<head>
-		<title>Struts2 Showcase - Chat - Login</title>
-		<@s.head />
-	</head>
-	<body>
-	<div class="page-header">
-		<h1>Chat - Login</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="login" namespace="/chat" method="POST">
-				<@s.textfield name="name" label="Name" required="true" />
-				<@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/chat/createRoom.ftl
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/chat/createRoom.ftl b/apps/showcase/src/main/webapp/chat/createRoom.ftl
deleted file mode 100644
index fbe71cc..0000000
--- a/apps/showcase/src/main/webapp/chat/createRoom.ftl
+++ /dev/null
@@ -1,2 +0,0 @@
-<@s.actionerror />
-<@s.fielderror />

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/chat/index.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/chat/index.jsp b/apps/showcase/src/main/webapp/chat/index.jsp
deleted file mode 100644
index b58d7a3..0000000
--- a/apps/showcase/src/main/webapp/chat/index.jsp
+++ /dev/null
@@ -1,3 +0,0 @@
-
-<% response.sendRedirect("main.action"); %>
-

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/chat/messagesAvailableInRoom.ftl
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/chat/messagesAvailableInRoom.ftl b/apps/showcase/src/main/webapp/chat/messagesAvailableInRoom.ftl
deleted file mode 100644
index 2550dcd..0000000
--- a/apps/showcase/src/main/webapp/chat/messagesAvailableInRoom.ftl
+++ /dev/null
@@ -1,33 +0,0 @@
-
-<table class="table">
-<tr class="tableHeader">
-	<td class="tableSenderColumn">Sender</td>
-	<td class="tableDateColumn">Date</td>
-	<td class="tableMessageColumn">Message</td>
-</tr>
-<@s.iterator id="message" value="%{messagesAvailableInRoom}" status="stat">
-<tr class="tableContent">
-	<#if stat.odd>
-	<td class="tableSenderColumnOdd"> 
-	<#else>
-	<td clas="tableSenderColumnEven">
-	</#if>
-		<@s.property value="%{#message.creator.name}" />
-	</td>
-	<#if stat.odd>
-	<td class="tableDateColumnOdd">
-	<#else>
-	<td class="tableDateColumnEven">
-	</#if>
-		<@s.property value="%{#message.creationDate}" />
-	</td>
-	<#if stat.odd>
-	<td class="tableMessageColumnOdd">
-	<#else>
-	<td class="tableMessageColumnEven">
-	</#if>
-		<@s.property value="%{#message.message}" />
-	</td>
-</tr>
-</...@s.iterator>
-</table>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/chat/roomSelection.ftl
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/chat/roomSelection.ftl b/apps/showcase/src/main/webapp/chat/roomSelection.ftl
deleted file mode 100644
index 05eaf17..0000000
--- a/apps/showcase/src/main/webapp/chat/roomSelection.ftl
+++ /dev/null
@@ -1,172 +0,0 @@
-<html>
-<head>
-	<title>Struts2 Showcase - Chat - Room Selection</title>
-<@sx.head />
-	<style type="text/css">
-		div.box {
-			border: 1px solid darkblue;
-			margin: 5px;
-		}
-
-		div.box h3 {
-			color: white;
-			background: darkblue;
-			margin: 3px;
-			padding: 2px;
-		}
-
-		div.nobox {
-			margin: 5px;
-		}
-
-		table.table {
-			border: 1px solid darkblue;
-			width: 98%;
-			margin: 5px;
-		}
-
-		table.table tr.tableHeader {
-			color: white;
-			background: darkblue;
-			margin: 3px;
-			padding: 2px;
-			font-size: medium;
-			font-weight: bold;
-		}
-
-		table.table td.tableOperationColumnOdd {
-			background: gray;
-			color: white;
-			width: 20%
-		}
-
-		table.table td.tableNameColumnOdd {
-			background: gray;
-			color: white;
-			width: 20%;
-		}
-
-		table.table td.tableDescriptionColumnOdd {
-			background: gray;
-			color: white;
-			width: 40%;
-		}
-
-		table.table td.tableDateCreatedColumnOdd {
-			background: gray;
-			color: white;
-			width: 20%;
-		}
-
-		table.table td.tableOperationColumnEven {
-			background: white;
-			color: gray;
-			width: 20%
-		}
-
-		table.table td.tableNameColumnEven {
-			background: white;
-			color: gray;
-			width: 20%;
-		}
-
-		table.table td.tableDescriptionColumnEven {
-			background: white;
-			color: gray;
-			width: 40%;
-		}
-
-		table.table td.tableDateCreatedColumnEven {
-			background: white;
-			color: gray;
-			width: 20%;
-		}
-
-		div.container {
-			margin-left: auto;
-			margin-right: auto;
-			width: 100%;
-		}
-
-		div.left {
-			width: 20%;
-			float: left;
-		}
-
-		div.right {
-			width: 20%;
-			float: right;
-		}
-
-		div.center {
-			width: 60%;
-			float: left;
-		}
-
-	</style>
-</head>
-<body>
-<div class="page-header">
-	<h1>Chat - Room Selection</h1>
-</div>
-
-<div class="container-fluid">
-	<div class="row-fluid">
-		<div class="span12 container">
-
-
-			<div class="left">
-				<div class="box">
-					<h3>Operations</h3>
-				<@s.url id="url" action="logout" namespace="/chat" />
-					<ul>
-						<li><@s.a href="%{#url}">Logout</...@s.a></li>
-					</ul>
-				</div>
-			<#if (actionErrors?size gt 0)>
-				<div class="box">
-					<h3>Action Errors</h3>
-					<@s.actionerrors />
-				</div>
-			</#if>
-				<div class="box">
-					<h3>Users Available In Chat</h3>
-				<@s.url id="usersAvailableUrl" action="usersAvailable" namespace="/chat/ajax" />
-				<@sx.div id="usersAvailable" updateFreq="%{@org.apache.struts2.showcase.chat.Constants@UPDATE_FREQ}"
-				href="%{usersAvailableUrl}"
-				class="box">
-					Initial Loading Users ...
-				</...@sx.div>
-				</div>
-			</div>
-
-
-			<div class="center">
-				<div class="box">
-					<h3>Rooms Available In Chat</h3>
-				<@s.url id="roomsAvailableUrl" action="roomsAvailable" namespace="/chat/ajax" />
-				<@sx.div id="roomsAvailable" listenTopics="topicRoomCreated"
-				updateFreq="%{@org.apache.struts2.showcase.chat.Constants@UPDATE_FREQ}"
-				href="%{roomsAvailableUrl}" >
-					Initial Loading Rooms ...
-				</...@sx.div>
-				</div>
-
-				<div id="createRoom" class="box">
-					<h3>Create Room In Chat</h3>
-
-					<div id="createRoomResult"></div>
-				<@s.form id="createRoomId" action="createRoom" namespace="/chat/ajax" method="POST">
-					<@s.textfield label="Room Name" required="true" name="name" />
-					<@s.textarea theme="xhtml" label="Room Description" required="true" name="Description" />
-					<@sx.submit value="%{'Create Room'}" targets="createRoomResult" afterNotifyTopics="topicRoomCreated" align="left" cssClass="btn btn-primary" />
-				</...@s.form>
-				</div>
-			</div>
-
-		</div>
-	</div>
-</div>
-</body>
-</html>
-

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/chat/roomsAvailable.ftl
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/chat/roomsAvailable.ftl b/apps/showcase/src/main/webapp/chat/roomsAvailable.ftl
deleted file mode 100644
index 1d343c0..0000000
--- a/apps/showcase/src/main/webapp/chat/roomsAvailable.ftl
+++ /dev/null
@@ -1,44 +0,0 @@
-
-<table class="table">
-<tr class="tableHeader">
-	<td>Operation</td>
-	<td>Name</td>
-	<td>Description</td>
-	<td>Date Created</td>
-</tr>
-<@s.iterator id="room" value="%{availableRooms}" status="stat">
-<tr class="tableContent">
-	<#if stat.isOdd()>
-	<td class="tableOperationColumnOdd">
-	<#else>
-	<td class="tableOperationColumnEven">
-	</#if>
-	<@s.url id="url" action="enterRoom" namespace="/chat">
-		<@s.param name="roomName" value="%{#room.name}" />
-	</...@s.url>
-	<@s.a href="%{url}">Enter</...@s.a>
-	</td>
-	<#if stat.odd>
-	<td class="tableNameColumnOdd">
-	<#else>
-	<td class="tableNameColumnEven">
-	</#if>
-	<@s.property value="%{#room.name}" />
-	</td>
-	<#if stat.odd>
-	<td class="tableDescriptionColumnOdd">
-	<#else>
-	<td class="tableDescriptionColumnEven">
-	</#if>
-	<@s.property value="%{#room.description}" />
-	</td>
-	<#if stat.odd>
-	<td class="tableDateCreatedColumnOdd">
-	<#else>
-	<td class="tableDateCreateColumnEven">
-	</#if>
-	<@s.property value="%{#room.creationDate}" />
-	</td>
-</tr>
-</...@s.iterator>
-</table>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/chat/sendMessageToRoomResult.ftl
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/chat/sendMessageToRoomResult.ftl b/apps/showcase/src/main/webapp/chat/sendMessageToRoomResult.ftl
deleted file mode 100644
index c75d32b..0000000
--- a/apps/showcase/src/main/webapp/chat/sendMessageToRoomResult.ftl
+++ /dev/null
@@ -1,2 +0,0 @@
-
-<@s.fielderror />

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/chat/showRoom.ftl
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/chat/showRoom.ftl b/apps/showcase/src/main/webapp/chat/showRoom.ftl
deleted file mode 100644
index 0a82d48..0000000
--- a/apps/showcase/src/main/webapp/chat/showRoom.ftl
+++ /dev/null
@@ -1,167 +0,0 @@
-<html>
-<head>
-	<title>Struts2 Showcase - Chat - Show Room </title>
-<@sx.head />
-	<style type="text/css">
-		div.box {
-			border: 1px solid darkblue;
-			margin: 5px;
-		}
-
-		div.box h3 {
-			color: white;
-			background: darkblue;
-			margin: 3px;
-			padding: 2px;
-		}
-
-		div.nobox {
-			margin: 5px;
-		}
-
-		table.table {
-			border: 1px solid darkblue;
-			width: 98%;
-			margin: 5px;
-		}
-
-		table.table tr.tableHeader {
-			color: white;
-			background: darkblue;
-			margin: 3px;
-			padding: 2px;
-			font-size: medium;
-			font-weight: bold;
-		}
-
-		table.table td.tableSenderColumnOdd {
-			background: gray;
-			color: white;
-			width: 20%
-		}
-
-		table.table td.tableDateColumnOdd {
-			background: gray;
-			color: white;
-			width: 20%;
-		}
-
-		table.table td.tableMessageColumnOdd {
-			background: gray;
-			color: white;
-			width: 60%;
-		}
-
-		table.table td.tableSenderColumnEven {
-			background: white;
-			color: gray;
-			width: 20%
-		}
-
-		table.table td.tableDateColumnEven {
-			background: white;
-			color: gray;
-			width: 20%;
-		}
-
-		table.table td.tableMessageColumnEven {
-			background: white;
-			color: gray;
-			width: 60%;
-		}
-
-		div.container {
-			margin-left: auto;
-			margin-right: auto;
-			width: 100%;
-		}
-
-		div.left {
-			width: 20%;
-			float: left;
-		}
-
-		div.right {
-			width: 20%;
-			float: left;
-		}
-
-		div.center {
-			width: 60%;
-			float: left;
-		}
-
-	</style>
-</head>
-<body>
-<div class="page-header">
-	<h1>Chat - Show Room</h1>
-</div>
-
-<div class="container-fluid">
-	<div class="row-fluid">
-		<div class="span12 container">
-			<div class="left">
-				<div class="box">
-					<h3>Operation</h3>
-				<@s.url id="url" action="exitRoom" namespace="/chat">
-					<@s.param name="roomName" value="%{roomName}" />
-				</...@s.url>
-					<ul>
-						<li><@s.a href="%{#url}">Exit Room</...@s.a></li>
-					</ul>
-				</div>
-				<div class="box">
-					<h3>Users Available In Chat</h3>
-				<@s.url id="usersAvailableUrl" action="usersAvailable" namespace="/chat/ajax" />
-				<@sx.div id="usersAvailable" href="%{usersAvailableUrl}"
-				updateFreq="%{@org.apache.struts2.showcase.chat.Constants@UPDATE_FREQ}">
-					Initial Users Available ...
-				</...@sx.div>
-				</div>
-			</div>
-
-			<div class="center">
-				<div class="box">
-					<h3>Messages Posted In Room [${roomName?default('')?html}]</h3>
-				<@s.url id="url" value="/chat/ajax/messagesAvailableInRoom.action" includeContext="true">
-					<@s.param name="roomName" value="%{roomName}" />
-				</...@s.url>
-				<@sx.div id="messagesInRoom" href="%{#url}" includeContext="true"
-				updateFreq="%{@org.apache.struts2.showcase.chat.Constants@UPDATE_FREQ}"
-				listenTopics="topicMessageSend">
-					Initial Messages In Room ...
-				</...@sx.div>
-				</div>
-
-				<div class="box">
-					<h3>Send Messages</h3>
-				<@s.form id="sendMessageForm" action="sendMessageToRoom" namespace="/chat/ajax" method="POST">
-					<div id="sendMessageResult"></div>
-					<@s.textarea label="Message"name="message" theme="xhtml" />
-					<@s.hidden name="roomName" value="%{roomName}" />
-					<@sx.submit id="submit" resultDivId="sendMessageResult" afterNotifyTopics="topicMessageSend" value="%{'Send'}"  cssClass="btn btn-primary"/>
-				</...@s.form>
-				</div>
-			</div>
-
-
-			<div class="right">
-				<div class="box">
-					<h3>Users Available In Room [${roomName?default('')?html}]</h3>
-				<@s.url id="url" value="/chat/ajax/usersAvailableInRoom.action" includeContext="true">
-					<@s.param name="roomName" value="%{roomName}" />
-				</...@s.url>
-				<@sx.div id="usersAvailableInRoom" href="%{#url}" includeContext="true"
-				delay="1" updateFreq="%{@org.apache.struts2.showcase.chat.Constants@UPDATE_FREQ}">
-					Initial Users Available In Room ...
-				</...@sx.div>
-				</div>
-			</div>
-
-
-		</div>
-	</div>
-</div>
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/chat/usersAvailable.ftl
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/chat/usersAvailable.ftl b/apps/showcase/src/main/webapp/chat/usersAvailable.ftl
deleted file mode 100644
index 1ff2963..0000000
--- a/apps/showcase/src/main/webapp/chat/usersAvailable.ftl
+++ /dev/null
@@ -1,6 +0,0 @@
-
-<ul>
-<#list availableUsers as user>
-	<li>${user.name?html}</li>
-</#list>
-</ul>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/chat/usersAvailableInRoom.ftl
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/chat/usersAvailableInRoom.ftl b/apps/showcase/src/main/webapp/chat/usersAvailableInRoom.ftl
deleted file mode 100644
index 95822bf..0000000
--- a/apps/showcase/src/main/webapp/chat/usersAvailableInRoom.ftl
+++ /dev/null
@@ -1,8 +0,0 @@
-
-<ul>
-<@s.iterator id="member" value="%{usersAvailableInRoom}">
-	<li><@s.property value="%{#member.name}" /></li>
-</...@s.iterator>
-</ul>
-
-

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/conversion/Address.java.txt
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/conversion/Address.java.txt b/apps/showcase/src/main/webapp/conversion/Address.java.txt
deleted file mode 100644
index d3e494c..0000000
--- a/apps/showcase/src/main/webapp/conversion/Address.java.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * $Id$
- *
- * 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.
- */
-package org.apache.struts2.showcase.conversion;
-
-
-/**
- * @version $Date$ $Id$
- */
-public class Address {
-	
-	private String id;
-	private String address;
-	
-	public String getId() { return id; }
-	public void setId(String id) { this.id = id; }
-	
-	public String getAddress() { return address; }
-	public void setAddress(String address) { this.address = address; }
-	
-}

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/conversion/AddressAction.java.txt
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/conversion/AddressAction.java.txt b/apps/showcase/src/main/webapp/conversion/AddressAction.java.txt
deleted file mode 100644
index 4342f8b..0000000
--- a/apps/showcase/src/main/webapp/conversion/AddressAction.java.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * $Id$
- *
- * 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.
- */
-package org.apache.struts2.showcase.conversion;
-
-import java.util.LinkedHashSet;
-import java.util.Set;
-
-import com.opensymphony.xwork2.ActionSupport;
-
-/**
- * @version $Date$ $Id$
- */
-public class AddressAction extends ActionSupport {
-
-	private Set addresses = new LinkedHashSet();
-	
-	public Set getAddresses() { return addresses; }
-	public void setAddresses(Set addresses) { this.addresses = addresses; }
-	
-	
-	public String input() throws Exception {
-		return SUCCESS;
-	}
-	
-	public String submit() throws Exception {
-		System.out.println(addresses);
-		return SUCCESS;
-	}
-}

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/conversion/EnumTypeConverter.java.txt
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/conversion/EnumTypeConverter.java.txt b/apps/showcase/src/main/webapp/conversion/EnumTypeConverter.java.txt
deleted file mode 100644
index acc3cf2..0000000
--- a/apps/showcase/src/main/webapp/conversion/EnumTypeConverter.java.txt
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * $Id$
- *
- * 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.
- */
-package org.apache.struts2.showcase.conversion;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.struts2.util.StrutsTypeConverter;
-
-/**
- * @version $Date$ $Id$
- */
-public class EnumTypeConverter extends StrutsTypeConverter {
-
-	@Override
-	public Object convertFromString(Map context, String[] values, Class toClass) {
-		List<Enum> result = new ArrayList<Enum>();
-		for (int a=0; a< values.length; a++) {
-			Enum e = Enum.valueOf(OperationsEnum.class, values[a]);
-			if (e != null)
-				result.add(e);
-		}
-		return result;
-	}
-
-	@Override
-	public String convertToString(Map context, Object o) {
-		List l = (List) o;
-		String result ="<";
-		for (Iterator i = l.iterator(); i.hasNext(); ) {
-			result = result + "["+ i.next() +"]";
-		}
-		result = result+">";
-		return result;
-	}
-
-	
-}

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/conversion/OperationsEnum.java.txt
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/conversion/OperationsEnum.java.txt b/apps/showcase/src/main/webapp/conversion/OperationsEnum.java.txt
deleted file mode 100644
index 14865ce..0000000
--- a/apps/showcase/src/main/webapp/conversion/OperationsEnum.java.txt
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * $Id$
- *
- * 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.
- */
-package org.apache.struts2.showcase.conversion;
-
-/**
- * 
- * @version $Date$ $Id$
- */
-public enum OperationsEnum {
-	ADD, 
-	MINUS, 
-	DIVIDE, 
-	MULTIPLY, 
-	REMAINDER;
-}

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/conversion/OperationsEnumAction.java.txt
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/conversion/OperationsEnumAction.java.txt b/apps/showcase/src/main/webapp/conversion/OperationsEnumAction.java.txt
deleted file mode 100644
index 35e1175..0000000
--- a/apps/showcase/src/main/webapp/conversion/OperationsEnumAction.java.txt
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * $Id$
- *
- * 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.
- */
-package org.apache.struts2.showcase.conversion;
-
-import java.util.Arrays;
-import java.util.LinkedList;
-import java.util.List;
-
-import com.opensymphony.xwork2.ActionSupport;
-
-/**
- * 
- * @version $Date$ $Id$
- */
-public class OperationsEnumAction extends ActionSupport {
-
-	private static final long serialVersionUID = -2229489704988870318L;
-	
-	private List<OperationsEnum> selectedOperations = new LinkedList<OperationsEnum>();
-	
-	public List<OperationsEnum> getSelectedOperations() { return this.selectedOperations; }
-	public void setSelectedOperations(List<OperationsEnum> selectedOperations) {
-		this.selectedOperations = selectedOperations;
-	}
-	
-	
-	public List<OperationsEnum> getAvailableOperations() {
-		return Arrays.asList(OperationsEnum.values());
-	}
-	
-	public String input() throws Exception {
-		return SUCCESS;
-	}
-	public String submit() throws Exception {
-		return SUCCESS;
-	}
-}
-

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/conversion/OperationsEnumActionConversion.txt
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/conversion/OperationsEnumActionConversion.txt b/apps/showcase/src/main/webapp/conversion/OperationsEnumActionConversion.txt
deleted file mode 100644
index 621beaf..0000000
--- a/apps/showcase/src/main/webapp/conversion/OperationsEnumActionConversion.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-
-selectedOperations=org.apache.struts2.showcase.conversion.EnumTypeConverter
-Element_selectedOperations=org.apache.struts2.showcase.conversion.OperationsEnum
-

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/conversion/Person.java.txt
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/conversion/Person.java.txt b/apps/showcase/src/main/webapp/conversion/Person.java.txt
deleted file mode 100644
index f87072c..0000000
--- a/apps/showcase/src/main/webapp/conversion/Person.java.txt
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * $Id$
- *
- * 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.
- */
-package org.apache.struts2.showcase.conversion;
-
-import java.io.Serializable;
-
-/**
- *
- */
-public class Person implements Serializable {
-	private String name;
-	private Integer age;
-	
-	public void setName(String name) { this.name = name; }
-	public String getName() { return this.name; }
-	
-	public void setAge(Integer age) { this.age = age; }
-	public Integer getAge() { return this.age; }
-}

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/conversion/PersonAction.java.txt
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/conversion/PersonAction.java.txt b/apps/showcase/src/main/webapp/conversion/PersonAction.java.txt
deleted file mode 100644
index 1e0bd55..0000000
--- a/apps/showcase/src/main/webapp/conversion/PersonAction.java.txt
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * $Id$
- *
- * 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.
- */
-package org.apache.struts2.showcase.conversion;
-
-import java.util.List;
-
-import com.opensymphony.xwork2.ActionSupport;
-
-/**
- * 
- */
-public class PersonAction extends ActionSupport {
-	
-	private List persons;
-	
-	public List getPersons() { return persons; }
-	public void setPersons(List persons) { this.persons = persons; }
-	
-	
-	
-	public String input() throws Exception {
-		return SUCCESS;
-	}
-	
-	public String submit() throws Exception {
-		return SUCCESS;
-	}
-}

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/conversion/enterAddressInfo.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/conversion/enterAddressInfo.jsp b/apps/showcase/src/main/webapp/conversion/enterAddressInfo.jsp
deleted file mode 100644
index b0e3e79..0000000
--- a/apps/showcase/src/main/webapp/conversion/enterAddressInfo.jsp
+++ /dev/null
@@ -1,53 +0,0 @@
-<%@taglib prefix="s" uri="/struts-tags" %>
-<html>
-<head>
-	<title>Struts2 Showcase - Conversion - Populate into Struts action class a Set of Address.java Object</title>
-</head>
-<body>
-<div class="page-header">
-	<h1>Conversion - Populate into Struts action class a Set of Address.java Object</h1>
-</div>
-
-<div class="container-fluid">
-	<div class="row-fluid">
-		<div class="span12">
-
-			<p/>
-			An example populating a Set of object (Address.java) into Struts' action (AddressAction.java)
-			<p/>
-
-			See the jsp code <s:url var="url" action="showAddressJspCode" namespace="/conversion" /><s:a href="%{#url}">here.</s:a><br/>
-			See the code for PersonAction.java <s:url var="url" action="showAddressActionJavaCode" namespace="/conversion" /><s:a href="%{#url}">here.</s:a><br/>
-			See the code for Person.java <s:url var="url" action="showAddressJavaCode" namespace="/conversion" /><s:a href="%{#url}">here.</s:a><br/>
-
-			<p/>
-
-				<s:form action="submitAddressesInfo" namespace="/conversion">
-					<s:iterator value="%{new int[3]}" status="stat">
-						<s:textfield label="%{'Address '+#stat.index}"
-								     name="%{'addresses(\\'id'+#stat.index+'\\').address'}" />
-					</s:iterator>
-					<s:submit cssClass="btn btn-primary"/>
-				</s:form>
-
-				<%--
-					The following is how its done statically
-				--%>
-				<%--
-				<s:form action="submitAddressInfo" namespace="/conversion">
-					<s:textfield label="Address 0"
-								 name="addresses('id0')" />
-					<s:textfield label="Address 1"
-								 name="addresses('id1')" />
-					<s:textfield label="Address 2"
-								 name="addresses('id2')" />
-					<s:submit />
-				</s:form>
-				--%>
-
-		</div>
-	</div>
-</div>
-
-</body>
-</html>
\ No newline at end of file


[05/10] Moves showcase related JSPs under WEB-INF

Posted by lu...@apache.org.
http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/tags/ui/lotsOfOptiontransferselect.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/tags/ui/lotsOfOptiontransferselect.jsp b/apps/showcase/src/main/webapp/WEB-INF/tags/ui/lotsOfOptiontransferselect.jsp
new file mode 100644
index 0000000..d4aca42
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/tags/ui/lotsOfOptiontransferselect.jsp
@@ -0,0 +1,101 @@
+<%@taglib prefix="s" uri="/struts-tags" %>
+<html>
+<head>
+	<title>Struts2 Showcase - UI Tags - Optiontransferselect</title>
+	<s:head/>
+</head>
+<body>
+<div class="page-header">
+	<h1>UI Tags - Optiontransferselect</h1>
+</div>
+
+<div class="container-fluid">
+	<div class="row-fluid">
+		<div class="span12">
+
+			<s:form action="lotsOfOptiontransferselectSubmit" namespace="/tags/ui" method="post">
+			    <s:optiontransferselect
+			        tooltip="Select Your Favourite Cartoon Characters"
+			        headerKey="-1"
+			        headerValue="--- Please Select ---"
+			        doubleHeaderKey="-1"
+			        doubleHeaderValue="--- Please Select ---"
+			        emptyOption="true"
+			        doubleEmptyOption="true"
+			        label="Favourite Cartoon Characters"
+			        leftTitle="Favourite Cartoon Characters"
+			        rightTitle="Non Favourite Cartoon Characters"
+			        name="favouriteCartoonCharacters"
+			        list="defaultFavouriteCartoonCharacters"
+			        doubleName="notFavouriteCartoonCharacters"
+			        doubleList="defaultNotFavouriteCartoonCharacters" />
+
+			    <br/>
+
+			    <s:optiontransferselect
+			        tooltip="Select Your Favourite Cars"
+			        label="Favourite Cars"
+			        leftTitle="Favourite Cars"
+			        rightTitle="Non Favourite Cars"
+			        name="favouriteCars"
+			        list="defaultFavouriteCars"
+			        doubleName="notFavouriteCars"
+			        doubleList="defaultNotFavouriteCars" />
+
+			    <br/>
+
+			    <s:optiontransferselect
+			        tooltip="Select Your Favourite Motorcycles"
+			        headerKey="-1"
+			        headerValue="--- Please Select ---"
+			        doubleHeaderKey="-1"
+			        doubleHeaderValue="--- Please Select ---"
+			        label="Favourite Motorcycles"
+			        leftTitle="Favourite Motorcycles"
+			        rightTitle="Non Favourite Motorcycles"
+			        name="favouriteMotorcycles"
+			        list="defaultFavouriteMotorcycles"
+			        doubleName="notFavouriteMotorcycles"
+			        doubleList="defaultNotFavouriteMotorcycles" />
+
+			    <br/>
+
+			    <s:optiontransferselect
+			        tooltip="Select Your Favourite Countries"
+			        emptyOption="true"
+			        doubleEmptyOption="true"
+			        label="Favourite Countries"
+			        leftTitle="Favourite Countries"
+			        rightTitle="Non Favourite Countries"
+			        name="favouriteCountries"
+			        list="defaultFavouriteCountries"
+			        doubleName="notFavouriteCountries"
+			        doubleList="defaultNotFavouriteCountries"
+			          />
+
+			    <br/>
+
+			    <s:optiontransferselect
+			        tooltip="Pick One at a Time"
+			        label="Favourite Sport"
+			        leftTitle="Non Favourite Sports"
+			        rightTitle="Favourite Sports"
+			        name="nonFavouriteSports"
+			        list="defaultNonFavoriteSports"
+			        doubleName="favouriteSports"
+			        doubleList="defaultFavouriteSports"
+			        size="1" multiple="false"
+			        doubleSize="5" doubleMultiple="true"
+			        allowAddAllToLeft="false"
+			        allowAddAllToRight="false"
+			        allowSelectAll="false"
+			          />
+			    <br/>
+
+			    <s:submit value="Submit It" />
+			</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/tags/ui/lotsOfOptiontransferselectSubmit.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/tags/ui/lotsOfOptiontransferselectSubmit.jsp b/apps/showcase/src/main/webapp/WEB-INF/tags/ui/lotsOfOptiontransferselectSubmit.jsp
new file mode 100644
index 0000000..03d6adc
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/tags/ui/lotsOfOptiontransferselectSubmit.jsp
@@ -0,0 +1,103 @@
+<%@taglib prefix="s" uri="/struts-tags" %>
+<html>
+<head>
+	<title>Struts2 Showcase - UI Tags - Optiontransferselect Result</title>
+	<s:head/>
+</head>
+<body>
+<div class="page-header">
+	<h1>UI Tags - Optiontransferselect Result</h1>
+</div>
+
+<div class="container-fluid">
+	<div class="row-fluid">
+		<div class="span12">
+
+		    <table>
+		    <tr>
+		        <td>Favourite Cartoons:</td>
+		        <td>
+		        <s:iterator value="favouriteCartoonCharacters" status="stat">
+		            <s:property value="%{#stat.count}" />.<s:property />&nbsp;
+		        </s:iterator>
+		        </td>
+		    </tr>
+		    <tr>
+		        <td>Non Favourite Cartoons:</td>
+		        <td>
+		        <s:iterator value="notFavouriteCartoonCharacters" status="stat">
+		            <s:property value="%{#stat.count}" />.<s:property />&nbsp;
+		        </s:iterator>
+		        </td>
+		    </tr>
+		    <tr>
+		        <td>Favourite Cars:</td>
+		        <td>
+		        <s:iterator value="favouriteCars" status="stat">
+		            <s:property value="%{#stat.count}" />.<s:property />&nbsp;
+		        </s:iterator>
+		        </td>
+		    </tr>
+		    <tr>
+		        <td>Non Favourite Cars:</td>
+		        <td>
+		        <s:iterator value="notFavouriteCars" status="stat">
+		            <s:property value="%{#stat.count}" />.<s:property />&nbsp;
+		        </s:iterator>
+		        </td>
+		    </tr>
+		    <tr>
+		        <td>Favourite Motorcycles:</td>
+		        <td>
+		        <s:iterator value="favouriteMotorcycles" status="stat">
+		            <s:property value="%{#stat.count}" />.<s:property />&nbsp;
+		        </s:iterator>
+		        </td>
+		    </tr>
+		    <tr>
+		        <td>Non Favourite Motorcycles:</td>
+		        <td>
+		        <s:iterator value="notFavouriteMotorcycles" status="stat">
+		            <s:property value="%{#stat.count}" />.<s:property />&nbsp;
+		        </s:iterator>
+		        </td>
+		    </tr>
+		    <tr>
+		        <td>Favourite Countries:</td>
+		        <td>
+		        <s:iterator value="favouriteCountries" status="stat">
+		            <s:property value="%{#stat.count}" />.<s:property />&nbsp;
+		        </s:iterator>
+		        </td>
+		    </tr>
+		    <tr>
+		        <td>Non Favourite Countries:</td>
+		        <td>
+		            <s:iterator value="notFavouriteCountries" status="stat">
+		                <s:property value="%{#stat.count}" />.<s:property />&nbsp;
+		            </s:iterator>
+		        </td>
+		    </tr>
+		      <tr>
+		        <td>Favourite Sports:</td>
+		        <td>
+		            <s:iterator value="favouriteSports" status="stat">
+		                <s:property value="%{#stat.count}" />.<s:property />&nbsp;
+		            </s:iterator>
+		        </td>
+		    </tr>
+
+		     <tr>
+		        <td>Non Favourite Sports:</td>
+		        <td>
+		            <s:iterator value="nonfavouriteSports" status="stat">
+		                <s:property value="%{#stat.count}" />.<s:property />&nbsp;
+		            </s:iterator>
+		        </td>
+		    </tr>
+		    </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/moreSelects.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/tags/ui/moreSelects.jsp b/apps/showcase/src/main/webapp/WEB-INF/tags/ui/moreSelects.jsp
new file mode 100644
index 0000000..39019f0
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/tags/ui/moreSelects.jsp
@@ -0,0 +1,69 @@
+<%@taglib prefix="s" uri="/struts-tags" %>
+<html>
+<head>
+	<title>Struts2 Showcase - UI Tags - More Select Box UI Examples</title>
+	<s:head/>
+</head>
+<body>
+<div class="page-header">
+	<h1>UI Tags - More Select Box UI Examples</h1>
+</div>
+
+<div class="container-fluid">
+	<div class="row-fluid">
+		<div class="span12">
+
+			<s:form action="moreSelectsSubmit" namespace="/tags/ui" method="post">
+
+		    <s:updownselect
+		        tooltip="Prioritized Your Favourite Cartoon Characters"
+		        label="Prioritised Favourite Cartoon Characters"
+		        list="defaultFavouriteCartoonCharacters"
+		        name="prioritisedFavouriteCartoonCharacters"
+		        headerKey="-1"
+		        headerValue="--- Please Order ---"
+		        emptyOption="true"  />
+
+		    <br/>
+
+		    <s:updownselect
+		        tooltip="Prioritise Your Favourite Cars"
+		        label="Prioritised Favourite Cars"
+		        list="defaultFavouriteCars"
+		        name="prioritisedFavouriteCars"
+		        headerKey="-10"
+		        headerValue="--- Please Order ---" />
+
+		    <br/>
+
+		    <s:updownselect
+		        tooltip="Prioritised Your Favourite Countries"
+		        label="Prioritised Favourite Countries"
+		        list="defaultFavouriteCountries"
+		        name="prioritisedFavouriteCountries"
+		        emptyOption="true"
+		        value="{'england', 'brazil'}" />
+
+		    <br/>
+
+		    <s:inputtransferselect
+		        list="defaultFavouriteNumbers"
+		        name="favouriteNumbers"
+		        label="Numbers"/>
+
+		    <s:select label="Favourite Cities"
+		        list="availableCities"
+		        name="favouriteCities"
+		        value="%{defaultFavouriteCities}"
+		        multiple="true" size="4"/>
+
+		    <s:submit value="Submit It" cssClass="btn btn-primary"/>
+
+		    <br/>
+
+		</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/tags/ui/moreSelectsSubmit.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/tags/ui/moreSelectsSubmit.jsp b/apps/showcase/src/main/webapp/WEB-INF/tags/ui/moreSelectsSubmit.jsp
new file mode 100644
index 0000000..82a0a70
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/tags/ui/moreSelectsSubmit.jsp
@@ -0,0 +1,63 @@
+<%@taglib prefix="s" uri="/struts-tags" %>
+<html>
+<head>
+	<title>Struts2 Showcase - UI Tags - More Select Box UI Examples - Result</title>
+	<s:head/>
+</head>
+<body>
+<div class="page-header">
+	<h1>UI Tags - More Select Box UI Examples - Result</h1>
+</div>
+
+<div class="container-fluid">
+	<div class="row-fluid">
+		<div class="span12">
+
+
+			<table>
+			    <tr>
+			        <td>Prioritised Favourite Cartoon Characters:</td>
+			        <td>
+			            <s:iterator value="prioritisedFavouriteCartoonCharacters" status="stat">
+			                <s:property value="%{#stat.count}" />.<s:property />&nbsp;
+			            </s:iterator>
+			        </td>
+			    </tr>
+			    <tr>
+			        <td>Prioritised Favourite Cars:</td>
+			        <td>
+			            <s:iterator value="prioritisedFavouriteCars" status="stat">
+			                <s:property value="%{#stat.count}" />.<s:property />&nbsp;
+			            </s:iterator>
+			        </td>
+			    </tr>
+			    <tr>
+			        <td>Prioritised Favourite Countries</td>
+			        <td>
+			            <s:iterator value="prioritisedFavouriteCountries" status="stat">
+			                <s:property value="%{#stat.count}" />.<s:property />&nbsp;
+			            </s:iterator>
+			        </td>
+			    </tr>
+			        <tr>
+			        <td>Favourite Cities</td>
+			        <td>
+			            <s:iterator value="favouriteCities" status="stat">
+			                <s:property value="%{#stat.count}" />.<s:property />&nbsp;
+			            </s:iterator>
+			        </td>
+			    </tr>
+			        <tr>
+			        <td>Favourite Numbers</td>
+			        <td>
+			            <s:iterator value="favouriteNumbers" status="stat">
+			                <s:property value="%{#stat.count}" />.<s:property />&nbsp;
+			            </s:iterator>
+			        </td>
+			    </tr>
+		    </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/staticTreeSelect.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/tags/ui/staticTreeSelect.jsp b/apps/showcase/src/main/webapp/WEB-INF/tags/ui/staticTreeSelect.jsp
new file mode 100644
index 0000000..b126aa9
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/tags/ui/staticTreeSelect.jsp
@@ -0,0 +1,11 @@
+<%@taglib prefix="s" uri="/struts-tags" %>
+<%@ taglib prefix="sx" uri="/struts-dojo-tags" %>
+
+<%
+    request.setAttribute("decorator", "none");
+    response.setHeader("Cache-Control","no-cache"); //HTTP 1.1
+    response.setHeader("Pragma","no-cache"); //HTTP 1.0
+    response.setDateHeader ("Expires", 0); //prevents caching at the proxy server
+%>
+
+${parameters.nodeId[0]}

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/tags/ui/timepicker/index.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/tags/ui/timepicker/index.jsp b/apps/showcase/src/main/webapp/WEB-INF/tags/ui/timepicker/index.jsp
new file mode 100644
index 0000000..4c98f12
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/tags/ui/timepicker/index.jsp
@@ -0,0 +1,31 @@
+<%@taglib prefix="s" uri="/struts-tags" %>
+<%@ taglib prefix="sx" uri="/struts-dojo-tags" %>
+<html>
+<head>
+	<title>Struts2 Showcase - UI Tags - Timepicker Tag</title>
+	<sx:head extraLocales="en-us,nl-nl,de-de" />
+</head>
+<body>
+<div class="page-header">
+	<h1>UI Tags - Timepicker Tag</h1>
+</div>
+
+<div class="container-fluid">
+	<div class="row-fluid">
+		<div class="span12">
+
+			<table>
+				<sx:datetimepicker label="toggleType='wipe'" type="time" value="%{'10:30'}" toggleType="wipe" toggleDuration="300"/>
+				<sx:datetimepicker label="toggleType='explode'" type="time" value="%{'13:00'}" toggleType="explode" toggleDuration="500"/>
+				<sx:datetimepicker label="toggleType='fade'" type="time" value="%{'13:00'}" toggleType="fade" toggleDuration="500"/>
+				<sx:datetimepicker label="With value='today'" name="dddp4" type="time" value="%{'today'}" />
+				<sx:datetimepicker label="US format, empty" name="dddp5" type="time" language="en-us" />
+				<sx:datetimepicker label="US format, 13:00 hours" name="dddp6" type="time" value="%{'13:00'}" language="en-us" />
+				<sx:datetimepicker label="In German" name="dddp7" type="time" value="%{'13:00'}" language="de" />
+				<sx:datetimepicker label="In Dutch" name="dddp8" type="time" value="%{'13:00'}" language="nl" />
+			</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/treeExampleAjaxDynamic.ftl
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/tags/ui/treeExampleAjaxDynamic.ftl b/apps/showcase/src/main/webapp/WEB-INF/tags/ui/treeExampleAjaxDynamic.ftl
new file mode 100644
index 0000000..8c78f6c
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/tags/ui/treeExampleAjaxDynamic.ftl
@@ -0,0 +1,9 @@
+[
+<#list category.children as node>
+  {
+    label: '${node.name}',
+    id: '${node.id}',
+    hasChildren: ${(node.children.size() > 0)?string}
+  },
+</#list>
+] 
\ 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/treeExampleAjaxDynamic.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/tags/ui/treeExampleAjaxDynamic.jsp b/apps/showcase/src/main/webapp/WEB-INF/tags/ui/treeExampleAjaxDynamic.jsp
new file mode 100644
index 0000000..e858fd5
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/tags/ui/treeExampleAjaxDynamic.jsp
@@ -0,0 +1,25 @@
+<%@taglib prefix="s" uri="/struts-tags" %>
+<%@ taglib prefix="sx" uri="/struts-dojo-tags" %>
+<html>
+<head>
+	<title>Struts2 Showcase - UI Tags - Tree Example AJAX (Dynamic)</title>
+	<sx:head />
+</head>
+<body>
+<div class="page-header">
+	<h1>UI Tags - Tree Example AJAX (Dynamic)</h1>
+</div>
+
+<div class="container-fluid">
+	<div class="row-fluid">
+		<div class="span12">
+
+			<s:url var="nodesUrl" namespace="/nodecorate" action="getNodes" />
+			<div style="float:left; margin-right: 50px;">
+			    <sx:tree id="tree" href="%{#nodesUrl}" />
+			</div>
+		</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/treeExampleDynamic.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/tags/ui/treeExampleDynamic.jsp b/apps/showcase/src/main/webapp/WEB-INF/tags/ui/treeExampleDynamic.jsp
new file mode 100644
index 0000000..07a5adb
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/tags/ui/treeExampleDynamic.jsp
@@ -0,0 +1,54 @@
+<%@taglib prefix="s" uri="/struts-tags" %>
+<%@ taglib prefix="sx" uri="/struts-dojo-tags" %>
+<html>
+<head>
+	<title>Struts2 Showcase - UI Tags - Tree Example (Dynamic)</title>
+	<sx:head/>
+</head>
+<body>
+<div class="page-header">
+	<h1>UI Tags - Tree Example (Dynamic)</h1>
+</div>
+
+<div class="container-fluid">
+	<div class="row-fluid">
+		<div class="span12">
+
+			<!-- START SNIPPET: treeExampleDynamicJsp -->
+
+			<script language="JavaScript" type="text/javascript">
+			    dojo.event.topic.subscribe("treeSelected", function treeNodeSelected(node) {
+			        dojo.io.bind({
+			            url: "<s:url value='/tags/ui/ajax/dynamicTreeSelectAction.action'/>?nodeId="+node.node.widgetId,
+			            load: function(type, data, evt) {
+			                var divDisplay = dojo.byId("displayId");
+			                divDisplay.innerHTML=data;
+			            },
+			            mimeType: "text/html"
+			        });
+			    });
+			</script>
+
+
+
+			<div style="float:left; margin-right: 50px;">
+			<sx:tree
+			    id="tree"
+			    rootNode="%{treeRootNode}"
+			    childCollectionProperty="children"
+			    nodeIdProperty="id"
+			    nodeTitleProperty="name"
+			    treeSelectedTopic="treeSelected">
+			</sx:tree>
+			</div>
+
+			<div id="displayId">
+			Please click on any of the tree nodes.
+			</div>
+
+			<!-- END SNIPPET: treeExampleDynamicJsp -->
+		</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/treeExampleStatic.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/tags/ui/treeExampleStatic.jsp b/apps/showcase/src/main/webapp/WEB-INF/tags/ui/treeExampleStatic.jsp
new file mode 100644
index 0000000..76ab074
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/tags/ui/treeExampleStatic.jsp
@@ -0,0 +1,61 @@
+<%@taglib prefix="s" uri="/struts-tags" %>
+<%@ taglib prefix="sx" uri="/struts-dojo-tags" %>
+<html>
+<head>
+	<title>Struts2 Showcase - UI Tags - Tree Example (Static)</title>
+<sx:head/>
+</head>
+<body>
+<div class="page-header">
+	<h1>UI Tags - Tree Example (Static)</h1>
+</div>
+
+<div class="container-fluid">
+	<div class="row-fluid">
+		<div class="span12">
+
+			<!-- START SNIPPET: treeExampleStaticJsp -->
+
+			<script language="JavaScript" type="text/javascript">
+			    dojo.event.topic.subscribe("treeSelected", function treeNodeSelected(node) {
+			        dojo.io.bind({
+			            url: "<s:url value='/tags/ui/ajax/staticTreeSelectAction.action'/>?nodeId="+node.node.title,
+			            load: function(type, data, evt) {
+			                var divDisplay = dojo.byId("displayIt");
+			                divDisplay.innerHTML=data;
+			            },
+			            mimeType: "text/html"
+			        });
+			    });
+			</script>
+
+
+			<div style="float:left; margin-right: 50px;">
+			<sx:tree label="parent"  templateCssPath="/struts/tree.css"
+			showRootGrid="true" showGrid="true" treeSelectedTopic="treeSelected">
+			    <sx:treenode label="child1" >
+			        <sx:treenode label="grandchild1" id="grandchild1Id"/>
+			        <sx:treenode label="grandchild2" id="grandchild2Id"/>
+			        <sx:treenode label="grandchild3" id="grandchild3Id"/>
+			    </sx:treenode>
+			    <sx:treenode label="child2" id="child2Id"/>
+			    <sx:treenode label="child3" id="child3Id"/>
+			    <sx:treenode label="child4" id="child4Id"/>
+			    <sx:treenode label="child5" id="child5Id">
+			        <sx:treenode label="gChild1" id="gChild1Id"/>
+			        <sx:treenode label="gChild2" id="gChild2Id"/>
+			    </sx:treenode>
+			</sx:tree>
+			</div>
+
+
+			<div id="displayIt">
+			Please click on any node on the tree.
+			</div>
+
+			<!-- END SNIPPET: treeExampleStaticJsp  -->
+		</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/template/xhtml/mytemplate.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/template/xhtml/mytemplate.jsp b/apps/showcase/src/main/webapp/WEB-INF/template/xhtml/mytemplate.jsp
new file mode 100644
index 0000000..7ebb967
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/template/xhtml/mytemplate.jsp
@@ -0,0 +1,9 @@
+
+<%@taglib prefix="s" uri="/struts-tags" %>
+
+<div style="background-color:yellow;">
+<p>
+JSP  Custom Template -
+parameter 'paramName' - <s:property value="%{parameters.paramName}" />
+</p>
+</div>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/tiles/body.ftl
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/tiles/body.ftl b/apps/showcase/src/main/webapp/WEB-INF/tiles/body.ftl
new file mode 100644
index 0000000..bdaac05
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/tiles/body.ftl
@@ -0,0 +1,16 @@
+<div class="container-fluid">
+	<div class="row-fluid">
+		<div class="span12">
+			<div>
+				<p>This example illustrates the freemarker support in the Struts/Tiles Plugin.</p>
+
+				<p>Tiles 2 is an effort to extract the Tiles library from Struts. It is currently housed
+					in the Sandbox area of the Apache Struts Subversion repository.</p>
+
+				<@s.form>
+					<@s.textfield name="Textfield" value="Textfield"/>
+				</...@s.form>
+			</div>
+		</div>
+	</div>
+</div>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/tiles/body.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/tiles/body.jsp b/apps/showcase/src/main/webapp/WEB-INF/tiles/body.jsp
new file mode 100644
index 0000000..095762f
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/tiles/body.jsp
@@ -0,0 +1,24 @@
+<%@taglib prefix="s" uri="/struts-tags" %>
+<div class="container-fluid">
+	<div class="row-fluid">
+		<div class="span12">
+			<div>
+				<p>This example illustrates the Struts/Tiles Plugin.</p>
+
+				<p>Tiles 2 is an effort to extract the Tiles library from Struts. It is currently housed
+					in the Sandbox area of the Apache Struts Subversion repository.</p>
+
+				<h4>Features</h4>
+				<ul>
+					<li>
+						<a href="freemarker.action">View FreeMarker Example</a>
+					</li>
+					<li>
+						<a href="freemarkerLayout.action">View Example with a FreeMarker Layout</a>
+					</li>
+				</ul>
+
+			</div>
+		</div>
+	</div>
+</div>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/tiles/header.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/tiles/header.jsp b/apps/showcase/src/main/webapp/WEB-INF/tiles/header.jsp
new file mode 100644
index 0000000..d98f001
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/tiles/header.jsp
@@ -0,0 +1,3 @@
+<div class="page-header">
+	<h1>${title}</h1>
+</div>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/tiles/layout.ftl
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/tiles/layout.ftl b/apps/showcase/src/main/webapp/WEB-INF/tiles/layout.ftl
new file mode 100644
index 0000000..9ce5915
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/tiles/layout.ftl
@@ -0,0 +1,10 @@
+<#assign tiles=JspTaglibs["http://tiles.apache.org/tags-tiles"]>
+<@tiles.importAttribute name="title" scope="request"/>
+<html>
+    <head><title>Struts2 Showcase - <@tiles.getAsString name="title"/></title></head>
+<body>
+    <@tiles.insertAttribute name="header"/>
+    <@tiles.insertAttribute name="body"/>
+	<p>Notice that this is a layout made in FreeMarker</p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/tiles/layout.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/tiles/layout.jsp b/apps/showcase/src/main/webapp/WEB-INF/tiles/layout.jsp
new file mode 100644
index 0000000..964d014
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/tiles/layout.jsp
@@ -0,0 +1,13 @@
+<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles" %>
+<%@ taglib prefix="s" uri="/struts-tags" %>
+
+<%-- Show usage; Used in Header --%>
+<tiles:importAttribute name="title" scope="request"/>
+<html>
+    <head><title>Struts2 Showcase - <tiles:getAsString name="title"/></title></head>
+<body>
+    <tiles:insertAttribute name="header"/>
+    <tiles:insertAttribute name="body"/>
+	<p>Notice that this is a layout made in JSP</p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/token/doublePost.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/token/doublePost.jsp b/apps/showcase/src/main/webapp/WEB-INF/token/doublePost.jsp
new file mode 100644
index 0000000..761d44b
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/token/doublePost.jsp
@@ -0,0 +1,28 @@
+<%@ taglib prefix="s" uri="/struts-tags" %>
+<html>
+<head>
+	<title>Struts2 Showcase - Token Examples - Double post</title>
+</head>
+
+<body>
+<div class="page-header">
+	<h1>Token Examples - Double post</h1>
+</div>
+
+
+<div class="container-fluid">
+	<div class="row-fluid">
+		<div class="span12">
+
+			<p class="alert alert-warning">
+				Double post. Struts intercepted this request and prevents the action from executing again.
+			</p>
+
+			<p/>
+			Click here to
+			<s:url var="back" value="/token/index.jsp"/><s:a href="%{back}">return</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/token/example1.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/token/example1.jsp b/apps/showcase/src/main/webapp/WEB-INF/token/example1.jsp
new file mode 100644
index 0000000..9495671
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/token/example1.jsp
@@ -0,0 +1,50 @@
+<%@ taglib prefix="s" uri="/struts-tags" %>
+<html>
+<head>
+	<title>Struts2 Showcase - Token Examples - Example 1</title>
+</head>
+
+<body>
+<div class="page-header">
+	<h1>Token Examples - Example 1</h1>
+</div>
+
+
+<div class="container-fluid">
+	<div class="row-fluid">
+		<div class="span12">
+
+			<p>
+			<b>Example 1:</b> This example illustrates a situation where you can transfer money from
+			one account to another. We use the token to prevent double posts so the transfer only
+			happens once.
+			<p/>
+
+			<p>
+			<br/>Balance of source account: <s:property value="#session.balanceSource"/>
+			<br/>Balance of destination account: <s:property value="#session.balanceDestination"/>
+			<p/>
+
+			<s:form action="transfer">
+				<s:token/>
+				<s:textfield label="Amount" name="amount" required="true" value="100"/>
+				<s:submit value="Transfer money" cssClass="btn btn-primary"/>
+			</s:form>
+
+		</div>
+	</div>
+</div>
+</body>
+</html>
+
+
+<%@ taglib prefix="s" uri="/struts-tags" %>
+<html>
+    <head><title>Token Examples</title></head>
+
+<body>
+    <h1>Token Example 1</h1>
+
+
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/token/example2.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/token/example2.jsp b/apps/showcase/src/main/webapp/WEB-INF/token/example2.jsp
new file mode 100644
index 0000000..7042ce8
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/token/example2.jsp
@@ -0,0 +1,38 @@
+<%@ taglib prefix="s" uri="/struts-tags" %>
+<html>
+<head>
+	<title>Struts2 Showcase - Token Examples - Example 2</title>
+</head>
+
+<body>
+<div class="page-header">
+	<h1>Token Examples - Example 2</h1>
+</div>
+
+
+<div class="container-fluid">
+	<div class="row-fluid">
+		<div class="span12">
+
+			<p>
+				<b>Example 2:</b> This example illustrates a situation where you can transfer money from
+				one account to another. We use the token to prevent double posts so the transfer only
+				happens once. This action will redirect after you have submitted the form.
+			<p/>
+
+			<p>
+				Balance of source account: <s:property value="#session.balanceSource"/>
+			<br/>Balance of destination account: <s:property value="#session.balanceDestination"/>
+			<p/>
+
+			<s:form action="transfer2">
+				<s:token/>
+				<s:textfield label="Amount" name="amount" required="true" value="200"/>
+				<s:submit value="Transfer money" 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/token/example3.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/token/example3.jsp b/apps/showcase/src/main/webapp/WEB-INF/token/example3.jsp
new file mode 100644
index 0000000..4cf2b5a
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/token/example3.jsp
@@ -0,0 +1,37 @@
+<%@ taglib prefix="s" uri="/struts-tags" %>
+<html>
+<head>
+	<title>Struts2 Showcase - Token Examples - Example 3</title>
+</head>
+
+<body>
+<div class="page-header">
+	<h1>Token Examples - Example 3</h1>
+</div>
+
+
+<div class="container-fluid">
+	<div class="row-fluid">
+		<div class="span12">
+
+			<p>
+				<b>Example 3:</b> This example illustrates a situation where you can transfer money from
+				one account to another. We use the token to prevent double posts so the transfer only
+				happens once. This example uses the token session based interceptor and redirect after post.
+			<p/>
+
+			<p>Balance of source account: <s:property value="#session.balanceSource"/>
+			<br/>Balance of destination account: <s:property value="#session.balanceDestination"/>
+			<p/>
+
+			<s:form action="transfer3">
+				<s:token/>
+				<s:textfield label="Amount" name="amount" required="true" value="300"/>
+				<s:submit value="Transfer money" 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/token/example4.ftl
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/token/example4.ftl b/apps/showcase/src/main/webapp/WEB-INF/token/example4.ftl
new file mode 100644
index 0000000..e66b045
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/token/example4.ftl
@@ -0,0 +1,40 @@
+<html>
+<head>
+	<title>Struts2 Showcase - Token Examples - Example 4</title>
+</head>
+
+<body>
+<div class="page-header">
+	<h1>Token Examples - Example 4</h1>
+</div>
+
+
+<div class="container-fluid">
+	<div class="row-fluid">
+		<div class="span12">
+
+			<p>
+				<b>Example 4:</b> This example illustrates a situation where you can transfer money from
+				one account to another. We use the token to prevent double posts so the transfer only
+				happens once. This page is rendered using freemarker. See the xwork-token.xml where
+				we must also use the createSession interceptor to be sure that a HttpSession exists
+				when freemarker renders this webpage, otherwise the @s.token tag causes an exception
+				while rendering the page.
+
+			<p/>
+
+			<p>Balance of source account: <@s.property value="#session.balanceSource"/>
+				<br/>Balance of destination account: <@s.property value="#session.balanceDestination"/>
+
+			<p/>
+
+		<@s.form action="transfer4">
+			<@s.token/>
+			<@s.textfield label="Amount" name="amount" required="true" value="400"/>
+			<@s.submit value="Transfer money" 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/token/index.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/token/index.jsp b/apps/showcase/src/main/webapp/WEB-INF/token/index.jsp
new file mode 100644
index 0000000..b65ff4e
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/token/index.jsp
@@ -0,0 +1,48 @@
+<%@ taglib prefix="s" uri="/struts-tags" %>
+<html>
+<head>
+	<title>Struts2 Showcase - Token Examples (double post)</title>
+</head>
+
+<body>
+<div class="page-header">
+	<h1>Token Examples</h1>
+</div>
+
+
+<div class="container-fluid">
+	<div class="row-fluid">
+		<div class="span12" style="text-align: center;">
+
+			<p>
+				These examples illustrate Struts build in support of using tokens to prevent double post.
+			<p/>
+			<p>
+			You have a web page where user can input data and press a button to submit.
+			There could be a problem that the user submit the data many times, by either clicking the
+			button many times, or use the browser back button and then submit the form again.
+			<br/> A good solution is to use a hidden token in the form. The token is autogenerated and unique
+			from time to time. This token is then validated with the HttpSession that it is the first time
+			it is submitted, if not we have a double post and therefore can prevent the second submit action.
+			<p/>
+			<p>
+			For more information check out javadoc for org.apache.struts2.interceptor.TokenInterceptor
+			and org.apache.struts2.interceptor.TokenSessionStoreInterceptor.
+			<p/>
+
+			<br/>
+			<br/><a href="tokenPrepare!input.action">Example 1 (token based .jsp example)</a>
+
+			<br/>
+			<br/><a href="tokenPrepare2!input.action">Example 2 (as example 1 with redirect after post)</a>
+
+			<br/>
+			<br/><a href="tokenPrepare3!input.action">Example 3 (token-session based .jsp example)</a>
+
+			<br/>
+			<br/><a href="tokenPrepare4!input.action">Example 4 (token based freemarker example)</a>
+		</div>
+	</div>
+</div>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/token/transferDone.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/token/transferDone.jsp b/apps/showcase/src/main/webapp/WEB-INF/token/transferDone.jsp
new file mode 100644
index 0000000..a67078c
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/token/transferDone.jsp
@@ -0,0 +1,48 @@
+<%@ taglib prefix="s" uri="/struts-tags" %>
+<html>
+<head>
+	<title>Struts2 Showcase - Token Examples - Transfer is Done</title>
+</head>
+
+<body>
+<div class="page-header">
+	<h1>Token Examples - Transfer is Done</h1>
+</div>
+
+
+<div class="container-fluid">
+	<div class="row-fluid">
+		<div class="span12">
+
+			<p>
+				The transfer is done at
+				<s:text name="token.transfer.time">
+					<s:param value="#session.time"/>
+				</s:text>
+
+				<br/>New balance of source account:
+				<s:property value="#session.balanceSource"/>
+				<br/>New balance of destination account:
+				<s:property value="#session.balanceDestination"/>
+
+			<p/>
+
+			<p>
+				Try using the browser back button and submit the form again. This should result in a double post
+				that Struts should intercept and handle accordingly.
+
+			<p/>
+
+			<p>
+				For example 3 (session token) you should notice that the date/time stays the same. This interceptor
+				catches that this is a double post but doens't display the double post page, but just renders the
+				web page result from the first post.
+
+			<p/>
+			Click here to
+			<s:url var="back" value="/token/index.jsp"/><s:a href="%{back}">return</s:a>.
+		</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/validation/clientSideValidationExample.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/validation/clientSideValidationExample.jsp b/apps/showcase/src/main/webapp/WEB-INF/validation/clientSideValidationExample.jsp
new file mode 100644
index 0000000..f199c31
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/validation/clientSideValidationExample.jsp
@@ -0,0 +1,64 @@
+<%--
+   fieldValidatorExample.jsp
+
+   @author tm_jee
+   @version $Date$ $Id$
+--%>
+
+<%@taglib prefix="s" uri="/struts-tags" %>
+
+<html>
+<head>
+	<title>Struts2 Showcase - Validation - Field Validators Example</title>
+	<s:head/>
+</head>
+<body>
+
+<div class="page-header">
+	<h1>Client Side Validation Examples</h1>
+</div>
+
+<div class="container-fluid">
+	<div class="row-fluid">
+		<div class="span12">
+
+			<!-- START SNIPPET: fieldValidatorsExample -->
+
+			<h3>All Field Errors Will Appear Here</h3>
+			<s:fielderror/>
+			<hr/>
+
+			<h3>Field Error due to 'Required String Validator Field' Will Appear Here</h3>
+			<s:fielderror>
+				<s:param value="%{'requiredStringValidatorField'}"/>
+			</s:fielderror>
+			<hr/>
+
+			<h3>Field Error due to 'String Length Validator Field' Will Appear Here</h3>
+			<s:fielderror>
+				<s:param>stringLengthValidatorField</s:param>
+			</s:fielderror>
+			<hr/>
+
+			<s:form action="submitClientSideValidationExample" namespace="/validation" method="POST" validate="true">
+				<s:textfield label="Required Validator Field" name="requiredValidatorField"/>
+				<s:textfield label="Required String Validator Field" name="requiredStringValidatorField"/>
+				<s:textfield label="Integer Validator Field" name="integerValidatorField"/>
+				<s:textfield label="Date Validator Field" name="dateValidatorField"/>
+				<s:textfield label="Email Validator Field" name="emailValidatorField"/>
+				<s:textfield label="URL Validator Field" name="urlValidatorField"/>
+				<s:textfield label="String Length Validator Field" name="stringLengthValidatorField"/>
+				<s:textfield label="Regex Validator Field" name="regexValidatorField"/>
+				<s:textfield label="Field Expression Validator Field" name="fieldExpressionValidatorField"/>
+				<s:submit label="Submit" cssClass="btn btn-primary"/>
+			</s:form>
+
+			<!-- END SNIPPET: fieldValidatorsExample -->
+
+
+			<s:include value="footer.jsp"/>
+		</div>
+	</div>
+</div>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/validation/fieldValidatorsExample.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/validation/fieldValidatorsExample.jsp b/apps/showcase/src/main/webapp/WEB-INF/validation/fieldValidatorsExample.jsp
new file mode 100644
index 0000000..13a29f0
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/validation/fieldValidatorsExample.jsp
@@ -0,0 +1,63 @@
+<%-- 
+   fieldValidatorExample.jsp
+   
+   @author tm_jee
+   @version $Date$ $Id$
+--%>
+
+<%@taglib prefix="s" uri="/struts-tags" %>
+
+<html>
+<head>
+    <title>Struts2 Showcase - Validation - Field Validators Example</title>
+    <s:head theme="xhtml"/>
+</head>
+<body>
+
+<div class="page-header">
+    <h1>Field Validation Examples</h1>
+</div>
+
+<div class="container-fluid">
+    <div class="row-fluid">
+        <div class="span12">
+
+            <!-- START SNIPPET: fieldValidatorsExample -->
+
+            <h3>All Field Errors Will Appear Here</h3>
+            <s:fielderror/>
+            <hr/>
+
+            <h3>Field Error due to 'Required String Validator Field' Will Appear Here</h3>
+            <s:fielderror>
+                <s:param value="%{'requiredStringValidatorField'}"/>
+            </s:fielderror>
+            <hr/>
+
+            <h3>Field Error due to 'String Length Validator Field' Will Appear Here</h3>
+            <s:fielderror>
+                <s:param>stringLengthValidatorField</s:param>
+            </s:fielderror>
+            <hr/>
+
+            <s:form action="submitFieldValidatorsExamples" namespace="/validation" method="POST" theme="xhtml">
+                <s:textfield label="Required Validator Field" name="requiredValidatorField"/>
+                <s:textfield label="Required String Validator Field" name="requiredStringValidatorField"/>
+                <s:textfield label="Integer Validator Field" name="integerValidatorField"/>
+                <s:textfield label="Date Validator Field" name="dateValidatorField"/>
+                <s:textfield label="Email Validator Field" name="emailValidatorField"/>
+                <s:textfield label="URL Validator Field" name="urlValidatorField"/>
+                <s:textfield label="String Length Validator Field" name="stringLengthValidatorField"/>
+                <s:textfield label="Regex Validator Field" name="regexValidatorField"/>
+                <s:textfield label="Field Expression Validator Field" name="fieldExpressionValidatorField"/>
+                <s:submit label="Submit" cssClass="btn btn-primary"/>
+            </s:form>
+
+            <!-- END SNIPPET: fieldValidatorsExample -->
+
+            <s:include value="footer.jsp"/>
+        </div>
+    </div>
+</div>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/validation/footer.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/validation/footer.jsp b/apps/showcase/src/main/webapp/WEB-INF/validation/footer.jsp
new file mode 100644
index 0000000..20fa2ad
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/validation/footer.jsp
@@ -0,0 +1,8 @@
+ <%@taglib prefix="s" uri="/struts-tags" %>
+
+<hr/>
+
+<s:url var="backToValidationExamples" action="list" namespace="/validation" />
+<s:url var="backToShowCase" action="showcase" namespace="/" />
+        
+<s:a href="%{backToValidationExamples}" cssClass="btn btn-info"><i class="icon icon-arrow-left"></i> Back To Validation Examples</s:a>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/validation/index.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/validation/index.jsp b/apps/showcase/src/main/webapp/WEB-INF/validation/index.jsp
new file mode 100644
index 0000000..661d032
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/validation/index.jsp
@@ -0,0 +1,51 @@
+<%--
+    index.jsp
+
+    @author tm_jee
+    @version $Date$ $Id$
+--%>
+
+<%@taglib prefix="s" uri="/struts-tags" %>
+
+<html>
+<head>
+	<title>Struts2 Showcase - Validation</title>
+</head>
+<body>
+
+<div class="page-header">
+	<h1>Validation Examples</h1>
+</div>
+
+<div class="container-fluid">
+	<div class="row-fluid">
+		<div class="span12">
+
+			<s:url var="quizBasic" namespace="/validation" action="quizBasic" method="input"/>
+			<s:url var="quizClient" namespace="/validation" action="quizClient" method="input"/>
+			<s:url var="quizClientCss" namespace="/validation" action="quizClientCss" method="input"/>
+			<s:url var="quizAjax" namespace="/validation" action="quizAjax" method="input"/>
+			<s:url var="fieldValidatorUrl" action="showFieldValidatorsExamples" namespace="/validation"/>
+			<s:url var="nonFieldValidatorUrl" action="showNonFieldValidatorsExamples" namespace="/validation"/>
+			<s:url var="visitorValidatorUrl" action="showVisitorValidatorsExamples" namespace="/validation"/>
+			<s:url var="clientSideValidationUrl" action="clientSideValidationExample" namespace="/validation"/>
+			<s:url var="backToShowcase" action="showcase" namespace="/"/>
+			<s:url var="storeMessageAcrossRequestExample" value="/validation/storeErrorsAcrossRequestExample.jsp"/>
+
+			<ul>
+				<li><s:a href="%{fieldValidatorUrl}">Field Validators</s:a></li>
+				<li><s:a href="%{clientSideValidationUrl}">Field Validators with client-side JavaScript</s:a></li>
+				<li><s:a href="%{nonFieldValidatorUrl}">Non Field Validator</s:a></li>
+				<li><s:a href="%{storeMessageAcrossRequestExample}">Store across request using MessageStoreInterceptor (Example)</s:a></li>
+				<li><s:a href="%{quizAjax}">Validation (ajax)</s:a></li>
+				<li><s:a href="%{quizBasic}">Validation (basic)</s:a></li>
+				<li><s:a href="%{quizClient}">Validation (client)</s:a></li>
+				<li><s:a href="%{quizClientCss}">Validation (client using css_xhtml theme)</s:a></li>
+				<li><s:a href="%{visitorValidatorUrl}">Visitor Validator</s:a></li>
+			</ul>
+		</div>
+	</div>
+</div>
+</body>
+</html>
+

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/validation/nonFieldValidatorsExample.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/validation/nonFieldValidatorsExample.jsp b/apps/showcase/src/main/webapp/WEB-INF/validation/nonFieldValidatorsExample.jsp
new file mode 100644
index 0000000..27c8f8b
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/validation/nonFieldValidatorsExample.jsp
@@ -0,0 +1,46 @@
+<%-- 
+    nonFieldValidatorsExample.jsp
+    
+    @author tm_jee
+    @version $Date$ $Id$
+--%>
+
+
+<%@taglib prefix="s" uri="/struts-tags" %>
+
+<html>
+<head>
+	<title>Struts2 Showcase - Validation - Non Field Validator Example</title>
+	<s:head/>
+</head>
+<body>
+
+<div class="page-header">
+	<h1>Non Field Validator Example</h1>
+</div>
+
+<div class="container-fluid">
+	<div class="row-fluid">
+		<div class="span12">
+
+			<!-- START SNIPPET: nonFieldValidatorsExample -->
+			<s:actionerror/>
+
+			<s:form method="POST" action="submitNonFieldValidatorsExamples" namespace="/validation">
+				<s:textfield name="someText" label="Some Text"/>
+				<s:textfield name="someTextRetype" label="Retype Some Text"/>
+				<s:textfield name="someTextRetypeAgain" label="Retype Some Text Again"/>
+				<s:submit label="Submit" cssClass="btn btn-primary"/>
+			</s:form>
+
+
+			<!--  END SNIPPET: nonFieldValidatorsExample -->
+
+
+			<s:include value="footer.jsp"/>
+		</div>
+	</div>
+</div>
+</body>
+</html>
+

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/validation/quiz-ajax.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/validation/quiz-ajax.jsp b/apps/showcase/src/main/webapp/WEB-INF/validation/quiz-ajax.jsp
new file mode 100644
index 0000000..9ce9bdb
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/validation/quiz-ajax.jsp
@@ -0,0 +1,104 @@
+<%@ taglib prefix="s" uri="/struts-tags" %>
+<%@ taglib prefix="sx" uri="/struts-dojo-tags" %>
+
+<!-- START SNIPPET: ajaxValidation -->
+
+<html>
+<head>
+	<title>Struts2 Showcase - Validation - Ajax</title>
+	<sx:head cache="true" compressed="true"/>
+</head>
+
+<s:url var="url" namespace="/validation" action="quizAjax"/>
+
+<body>
+
+<div class="page-header">
+	<h1>AJAX validation Example</h1>
+</div>
+
+<div class="container-fluid">
+	<div class="row-fluid">
+		<div class="span12">
+			<h5>1.Use AJAX validation, and AJAX request (ajaxAfterValidation="true"), if validation succeeds</h5>
+
+			<div id="response" class="well">
+				Response goes here
+			</div>
+
+			<br/>
+
+			<s:form method="post" theme="xhtml" namespace="/nodecorate" action="quizAjax" id="form">
+				<s:textfield label="Name" name="name"/>
+				<s:textfield label="Age" name="age"/>
+				<s:textfield label="Favorite color" name="answer"/>
+				<sx:submit
+						validate="true"
+						ajaxAfterValidation="true"
+						targets="response"
+						showLoadingText="false"
+						cssClass="btn btn-primary"/>
+			</s:form>
+
+			<sx:a
+					formId="form"
+					validate="true"
+					ajaxAfterValidation="true"
+					targets="response"
+					showLoadingText="false"
+					cssClass="btn btn-primary">Submit Form with a link</sx:a>
+			<br/><br/>
+
+			<input type="checkbox" id="checkbox">Submit Form listening to an event on an element (check to submit)
+			<sx:bind
+					id="bind"
+					formId="form"
+					sources="checkbox"
+					validate="true"
+					events="onchange"
+					ajaxAfterValidation="true"
+					targets="response"
+					showLoadingText="false"/>
+
+			<br/><br/><br/><br/>
+
+			<h5>2.Use AJAX validation, and regular request (ajaxAfterValidation="false", default), if validation
+				succeeds</h5>
+			<br/>
+
+			<s:form method="post" theme="xhtml" namespace="/nodecorate" action="quizAjax" id="form2">
+				<s:textfield label="Name" name="name"/>
+				<s:textfield label="Age" name="age"/>
+				<s:textfield label="Favorite color" name="answer"/>
+				<sx:submit
+						validate="true"
+						ajaxAfterValidation="false"
+						showLoadingText="false"
+						cssClass="btn btn-primary"/>
+			</s:form>
+
+			<sx:a
+					formId="form2"
+					validate="true"
+					ajaxAfterValidation="false"
+					showLoadingText="false"
+					cssClass="btn btn-primary">Submit Form with a link</sx:a>
+			<br/><br/>
+
+			<input type="checkbox" id="checkbox2">Submit Form listening to an event on an element (check to submit)
+			<sx:bind
+					formId="form2"
+					sources="checkbox2"
+					validate="true"
+					events="onchange"
+					ajaxAfterValidation="false"
+					showLoadingText="false"/>
+
+
+			<s:include value="footer.jsp"/>
+		</div>
+	</div>
+</div>
+</body>
+</html>
+<!-- END SNIPPET: ajaxValidation -->

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/validation/quiz-basic.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/validation/quiz-basic.jsp b/apps/showcase/src/main/webapp/WEB-INF/validation/quiz-basic.jsp
new file mode 100644
index 0000000..e7cb1f9
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/validation/quiz-basic.jsp
@@ -0,0 +1,41 @@
+<%@ taglib prefix="s" uri="/struts-tags" %>
+
+<!-- START SNIPPET: basicValidation -->
+
+<html>
+<head>
+	<title>Struts2 Showcase - Validation - Basic</title>
+	<s:head/>
+</head>
+
+<body>
+
+<div class="page-header">
+	<h1>Basic validation Example</h1>
+</div>
+
+<div class="container-fluid">
+	<div class="row-fluid">
+		<div class="span12">
+
+			<p>
+				<b>What is your favorite color?</b>
+
+			<p/>
+
+			<s:form method="post">
+				<s:textfield label="Name" name="name"/>
+				<s:textfield label="Age" name="age"/>
+				<s:textfield label="Favorite color" name="answer"/>
+				<s:submit cssClass="btn btn-primary"/>
+			</s:form>
+
+
+			<s:include value="footer.jsp"/>
+		</div>
+	</div>
+</div>
+</body>
+</html>
+<!-- END SNIPPET: basicValidation -->
+

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/validation/quiz-client-css.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/validation/quiz-client-css.jsp b/apps/showcase/src/main/webapp/WEB-INF/validation/quiz-client-css.jsp
new file mode 100644
index 0000000..c675893
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/validation/quiz-client-css.jsp
@@ -0,0 +1,37 @@
+<%@ taglib prefix="s" uri="/struts-tags" %>
+
+<!-- START SNIPPET: clientCssValidation -->
+
+<html>
+<head>
+	<title>Struts2 Showcase - Validation - Basic (CSS Theme)</title>
+	<s:head theme="css_xhtml"/>
+</head>
+
+<body>
+
+<div class="page-header">
+	<h1>Basic validation Example (CSS Theme)</h1>
+</div>
+
+<div class="container-fluid">
+	<div class="row-fluid">
+		<div class="span12">
+
+			<s:form method="post" theme="css_xhtml" validate="true">
+				<s:textfield label="Name" name="name"/>
+				<s:textfield label="Age" name="age"/>
+				<s:textfield label="Favorite color" name="answer"/>
+				<s:submit cssClass="btn btn-primary"/>
+			</s:form>
+
+
+			<s:include value="footer.jsp"/>
+		</div>
+	</div>
+</div>
+</body>
+</html>
+
+<!-- END SNIPPET: clientCssValidation -->
+

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/validation/quiz-client.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/validation/quiz-client.jsp b/apps/showcase/src/main/webapp/WEB-INF/validation/quiz-client.jsp
new file mode 100644
index 0000000..27268b8
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/validation/quiz-client.jsp
@@ -0,0 +1,37 @@
+<%@ taglib prefix="s" uri="/struts-tags" %>
+
+<!-- START SNIPPET: clientValidation -->
+
+<html>
+<head>
+	<title>Struts2 Showcase - Validation - Basic</title>
+	<s:head/>
+</head>
+
+<body>
+
+<div class="page-header">
+	<h1>Basic validation Example</h1>
+</div>
+
+<div class="container-fluid">
+	<div class="row-fluid">
+		<div class="span12">
+
+
+			<s:form method="post" validate="true">
+				<s:textfield label="Name" name="name"/>
+				<s:textfield label="Age" name="age"/>
+				<s:textfield label="Favorite color" name="answer"/>
+				<s:submit cssClass="btn btn-primary"/>
+			</s:form>
+
+			<s:include value="footer.jsp"/>
+		</div>
+	</div>
+</div>
+</body>
+</html>
+
+<!-- END SNIPPET: clientValidation -->
+

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/validation/quiz-success.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/validation/quiz-success.jsp b/apps/showcase/src/main/webapp/WEB-INF/validation/quiz-success.jsp
new file mode 100644
index 0000000..58180bb
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/validation/quiz-success.jsp
@@ -0,0 +1,27 @@
+<%@ taglib prefix="s" uri="/struts-tags" %>
+<html>
+<head>
+	<title>Struts2 Showcase - Validation - Quiz submitted!</title>
+	<s:head/>
+</head>
+
+<body>
+
+<div class="page-header">
+	<h1>Quiz submitted!</h1>
+</div>
+
+<div class="container-fluid">
+	<div class="row-fluid">
+		<div class="span12">
+
+			Thank you, <b><s:property value="name"/></b>. Your answer has been submitted as:
+
+			<b><s:property value="answer"/></b>
+
+			<s:include value="footer.jsp"/>
+		</div>
+	</div>
+</div>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/validation/storeErrorsAcrossRequestCancel.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/validation/storeErrorsAcrossRequestCancel.jsp b/apps/showcase/src/main/webapp/WEB-INF/validation/storeErrorsAcrossRequestCancel.jsp
new file mode 100644
index 0000000..fd9fb55
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/validation/storeErrorsAcrossRequestCancel.jsp
@@ -0,0 +1,30 @@
+<%@ taglib prefix="s" uri="/struts-tags" %>
+<html>
+<head>
+	<title>Struts2 Showcase - Validation - Store Errors Across Request Example</title>
+	<s:head/>
+</head>
+
+<body>
+
+<div class="page-header">
+	<h1>Application Canceled</h1>
+</div>
+
+<div class="container-fluid">
+	<div class="row-fluid">
+		<div class="span12">
+
+			<s:actionmessage cssClass="alert alert-info"/>
+			<s:actionerror cssClass="alert alert-error"/>
+			<s:fielderror cssClass="alert alert-error"/>
+
+			<s:url var="url" value="/validation/storeErrorsAcrossRequestExample.jsp" />
+			<s:a href="%{#url}">Try Again</s:a>
+
+			<s:include value="footer.jsp"/>
+		</div>
+	</div>
+</div>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/validation/storeErrorsAcrossRequestExample.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/validation/storeErrorsAcrossRequestExample.jsp b/apps/showcase/src/main/webapp/WEB-INF/validation/storeErrorsAcrossRequestExample.jsp
new file mode 100644
index 0000000..939e0ac
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/validation/storeErrorsAcrossRequestExample.jsp
@@ -0,0 +1,54 @@
+<%@ taglib prefix="s" uri="/struts-tags" %>
+<html>
+<head>
+	<title>Struts2 Showcase - Validation - Store Errors Across Request Example</title>
+	<s:head/>
+</head>
+
+<body>
+
+<div class="page-header">
+	<h1>Store Errors Across Request Example</h1>
+</div>
+
+<div class="container-fluid">
+	<div class="row-fluid">
+		<div class="span12">
+
+			<p>
+				This is an example demonstrating the use of MessageStoreInterceptor.
+				When this form is submited a redirect is issue both when there's a validation
+				error or not. Normally, when a redirect is issue the action messages / errors and
+				field errors stored in the action will be lost (due to an action lives
+				only as long as a request). With a MessageStoreInterceptor in place and
+				configured, the action errors / messages / field errors will be store and
+				remains retrieveable even after a redirect.
+			</p>
+
+			<table border="1">
+				<tr><td>ActionMessages: </td><td></td><s:actionmessage/></tr>
+				<tr><td>ActionErrors: </td><td><s:actionerror/></td></tr>
+			</table>
+
+			<p>
+				<s:form action="submitApplication" namespace="/validation">
+					<s:textfield name="name" label="Name" />
+					<s:textfield name="age" label="Age" />
+					<s:submit cssClass="btn btn-primary"/>
+					<s:submit action="cancelApplication" value="%{'Cancel'}" cssClass="btn btn-danger"/>
+				</s:form>
+			</p>
+			<p>
+				Try submitting with an invalid age value,
+				and note that the browser location changes,
+				but validation messages are retained.
+				Because of the redirect,
+				the input values are not retained.
+			</p>
+
+			<s:include value="footer.jsp"/>
+		</div>
+	</div>
+</div>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/validation/storeErrorsAcrossRequestOk.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/validation/storeErrorsAcrossRequestOk.jsp b/apps/showcase/src/main/webapp/WEB-INF/validation/storeErrorsAcrossRequestOk.jsp
new file mode 100644
index 0000000..6c5ddb1
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/validation/storeErrorsAcrossRequestOk.jsp
@@ -0,0 +1,31 @@
+<%@ taglib prefix="s" uri="/struts-tags" %>
+<html>
+<head>
+	<title>Struts2 Showcase - Validation - Store Errors Across Request Example</title>
+	<s:head/>
+</head>
+
+<body>
+
+<div class="page-header">
+	<h1>Ok !</h1>
+</div>
+
+<div class="container-fluid">
+	<div class="row-fluid">
+		<div class="span12">
+
+			<s:actionmessage cssClass="alert alert-info"/>
+			<s:actionerror cssClass="alert alert-error"/>
+			<s:fielderror cssClass="alert alert-error"/>
+
+			<s:url var="url" value="/validation/storeErrorsAcrossRequestExample.jsp" />
+			<s:a href="%{#id}">Try Again</s:a>
+
+			<s:include value="footer.jsp"/>
+		</div>
+	</div>
+</div>
+</body>
+</html>
+

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/validation/successClientSideValidationExample.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/validation/successClientSideValidationExample.jsp b/apps/showcase/src/main/webapp/WEB-INF/validation/successClientSideValidationExample.jsp
new file mode 100644
index 0000000..cb56e9c
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/validation/successClientSideValidationExample.jsp
@@ -0,0 +1,64 @@
+<%--
+    successFieldValidatorsExample.jsp
+
+    @author tm_jee
+    @version $Date$ $Id$
+--%>
+
+<%@taglib prefix="s" uri="/struts-tags" %>
+<html>
+<head>
+	<title>Struts2 Showcase - Validation - Success Client Side Validators Example</title>
+	<s:head/>
+</head>
+<body>
+
+<div class="page-header">
+	<h1>Success !</h1>
+</div>
+
+<div class="container-fluid">
+	<div class="row-fluid">
+		<div class="span12">
+
+        <table class="table table-striped table-bordered table-hover table-condensed">
+            <tr>
+                <td>Required Validator Field:</td>
+                <td><s:property value="requiredValidatorField" /></td>
+            </tr>
+            <tr>
+                <td>Required String Validator Field:</td>
+                <td><s:property value="requiredStringValidatorField" /></td>
+            </tr>
+            <tr>
+                <td>Integer Validator Field: </td>
+                <td><s:property value="integerValidatorField" /></td>
+            </tr>
+            <tr>
+                <td>Date Validator Field: </td>
+                <td><s:property value="dateValidatorField" /></td>
+            </tr>
+            <tr>
+                <td>Email Validator Field: </td>
+                <td><s:property value="emailValidatorField" /></td>
+            </tr>
+            <tr>
+                <td>URL Validator Field: </td>
+                <td><s:property value="urlValidatorField" /></td>
+            </tr>
+            <tr>
+                <td>String Length Validator Field: </td>
+                <td><s:property value="stringLengthValidatorField" /></td>
+            </tr>
+            <tr>
+                <td>Regex Validator Field: <s:property value="regexValidatorField" /></td>
+                <td>Field Expression Validator Field: <s:property value="fieldExpressionValidatorField" /></td>
+            </tr>
+        </table>
+
+        <s:include value="footer.jsp" />
+		</div>
+	</div>
+</div>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/validation/successFieldValidatorsExample.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/validation/successFieldValidatorsExample.jsp b/apps/showcase/src/main/webapp/WEB-INF/validation/successFieldValidatorsExample.jsp
new file mode 100644
index 0000000..f795bcc
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/validation/successFieldValidatorsExample.jsp
@@ -0,0 +1,61 @@
+<%--
+    successFieldValidatorsExample.jsp
+    
+    @author tm_jee
+    @version $Date$ $Id$
+--%>
+
+
+<%@taglib prefix="s" uri="/struts-tags" %>
+<html>
+<head>
+	<title>Struts2 Showcase - Validation - Success Field Validators Example</title>
+	<s:head/>
+</head>
+<body>
+
+<div class="page-header">
+	<h1>Success !</h1>
+</div>
+
+<div class="container-fluid">
+	<div class="row-fluid">
+		<div class="span12">
+
+			<table class="table table-striped table-bordered table-hover table-condensed">
+			<tr>
+                <td>Required Validator Field:</td>
+                <td><s:property value="requiredValidatorField" /></td>
+            </tr>
+            <tr>
+                <td>Required String Validator Field:</td>
+                <td><s:property value="requiredStringValidatorField" /></td>
+            </tr>
+            <tr>
+                <td>Integer Validator Field: </td>
+                <td><s:property value="integerValidatorField" /></td>
+            </tr>
+            <tr>
+                <td>Date Validator Field: </td>
+                <td><s:property value="dateValidatorField" /></td>
+            </tr>
+            <tr>
+                <td>Email Validator Field: </td>
+                <td><s:property value="emailValidatorField" /></td>
+            </tr>
+            <tr>
+                <td>String Length Validator Field: </td>
+                <td><s:property value="stringLengthValidatorField" /></td>
+            </tr>
+            <tr>
+                <td>Regex Validator Field: <s:property value="regexValidatorField" /></td>
+                <td>Field Expression Validator Field: <s:property value="fieldExpressionValidatorField" /></td>
+            </tr>
+        </table>
+        
+        <s:include value="footer.jsp" />
+		</div>
+	</div>
+</div>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/validation/successNonFieldValidatorsExample.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/validation/successNonFieldValidatorsExample.jsp b/apps/showcase/src/main/webapp/WEB-INF/validation/successNonFieldValidatorsExample.jsp
new file mode 100644
index 0000000..4033300
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/validation/successNonFieldValidatorsExample.jsp
@@ -0,0 +1,45 @@
+<%--
+    successNonFieldValidatorsExample.jsp
+    
+    @author tm_jee
+    @version $Date$ $Id$
+--%>
+
+
+<%@taglib prefix="s" uri="/struts-tags" %>
+<html>
+<head>
+	<title>Struts2 Showcase - Validation - Success Non Field Validators Example</title>
+	<s:head/>
+</head>
+<body>
+
+<div class="page-header">
+	<h1>Success !</h1>
+</div>
+
+<div class="container-fluid">
+	<div class="row-fluid">
+		<div class="span12">
+
+			<table class="table table-striped table-bordered table-hover table-condensed">
+            <tr>
+                <td>Some Text: </td>
+                <td><s:property value="someText" /></td>
+            </tr>
+            <tr>
+                <td>Some Text Retyped: </td>
+                <td><s:property value="someTextRetype" /></td>
+            </tr>
+            <tr>
+                <td>Some Text Retyped Again: </td>
+                <td><s:property value="someTextRetypeAgain" /></td>
+            </tr>
+        </table>
+        
+        <s:include value="footer.jsp" />
+		</div>
+	</div>
+</div>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/validation/successVisitorValidatorsExample.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/validation/successVisitorValidatorsExample.jsp b/apps/showcase/src/main/webapp/WEB-INF/validation/successVisitorValidatorsExample.jsp
new file mode 100644
index 0000000..6eecc62
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/validation/successVisitorValidatorsExample.jsp
@@ -0,0 +1,46 @@
+<%-- 
+    successVisitorValidatorsExample.jsp
+    
+    @author tm_jee
+    @version $Date$ $Id$
+--%>
+
+
+<%@taglib prefix="s" uri="/struts-tags" %>
+<html>
+<head>
+	<title>Struts2 Showcase - Validation - Success Visitor Validators Exameple</title>
+	<s:head/>
+</head>
+<body>
+
+<div class="page-header">
+	<h1>Success !</h1>
+</div>
+
+<div class="container-fluid">
+	<div class="row-fluid">
+		<div class="span12">
+
+			<table class="table table-striped table-bordered table-hover table-condensed">
+            <tr>
+                <td>User Name:</td>
+                <td><s:property value="user.name" /></td>
+            </tr>
+            <tr>
+                <td>User Age:</td>          
+                <td><s:property value="user.age" /></td>
+            </tr>
+            <tr>
+                <td>User Birthday:</td>
+                <td><s:property value="user.birthday" /></td>
+            </tr>
+        </table>
+        
+        <s:include value="footer.jsp" />
+
+		</div>
+	</div>
+</div>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/validation/visitorValidatorsExample.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/validation/visitorValidatorsExample.jsp b/apps/showcase/src/main/webapp/WEB-INF/validation/visitorValidatorsExample.jsp
new file mode 100644
index 0000000..06ee70e
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/validation/visitorValidatorsExample.jsp
@@ -0,0 +1,43 @@
+<%-- 
+    visitorValidatorsExample.jsp
+    
+    @author tm_jee
+    @version $Date$ $Id$
+--%>
+
+
+<%@taglib prefix="s" uri="/struts-tags" %>
+<html>
+<head>
+	<title>Struts2 Showcase - Validation - Visitor Validators Example</title>
+	<s:head/>
+</head>
+<body>
+
+<div class="page-header">
+	<h1>Visitor Validators Example</h1>
+</div>
+
+<div class="container-fluid">
+	<div class="row-fluid">
+		<div class="span12">
+
+			<!-- START SNIPPET: visitorValidatorsExample -->
+
+			<s:fielderror cssClass="alert alert-error"/>
+
+			<s:form method="POST" action="submitVisitorValidatorsExamples" namespace="/validation">
+				<s:textfield name="user.name" label="User Name"/>
+				<s:textfield name="user.age" label="User Age"/>
+				<s:textfield name="user.birthday" label="Birthday"/>
+				<s:submit label="Submit" cssClass="btn btn-primary"/>
+			</s:form>
+
+			<!--  END SNIPPET: visitorValidatorsExample -->
+
+			<s:include value="footer.jsp"/>
+		</div>
+	</div>
+</div>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/viewSource.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/viewSource.jsp b/apps/showcase/src/main/webapp/WEB-INF/viewSource.jsp
new file mode 100644
index 0000000..84448de
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/viewSource.jsp
@@ -0,0 +1,54 @@
+<%@ taglib prefix="s" uri="/struts-tags" %>
+<html>
+<head>
+    <title>View Sources</title>
+</head>
+<body>
+
+<div class="container-fluid">
+	<div class="row-fluid">
+		<div class="span12">
+			<h1>View Sources</h1>
+
+			<ul class="nav nav-tabs" id="codeTab">
+				<li class="active"><a href="#page">Page</a></li>
+				<li><a href="#config">Configuration</a></li>
+				<li><a href="#java">Java Action</a></li>
+			</ul>
+
+			<div class="tab-content">
+				<div class="tab-pane active" id="page">
+					<h3><s:property default="Unknown page" value="page"/></h3>
+					<pre class="prettyprint lang-html linenums">
+						<s:iterator value="pageLines" status="row">
+<s:property/></s:iterator>
+					</pre>
+				</div>
+				<div class="tab-pane" id="config">
+					<h3><s:property default="Unknown configuration" value="config"/></h3>
+					<pre class="prettyprint lang-xml linenums">
+						<s:iterator value="configLines" status="row">
+<s:property/></s:iterator>
+					</pre>
+				</div>
+				<div class="tab-pane" id="java">
+					<h3><s:property default="Unknown or unavailable Action class" value="className"/></h3>
+					<pre class="prettyprint lang-java linenums">
+						<s:iterator value="classLines" status="row">
+<s:property/></s:iterator>
+					</pre>
+				</div>
+			</div>
+		</div>
+	</div>
+</div>
+
+
+<script>
+	$('#codeTab a').click(function (e) {
+		e.preventDefault();
+		$(this).tab('show');
+	})
+</script>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/wait/complete.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/wait/complete.jsp b/apps/showcase/src/main/webapp/WEB-INF/wait/complete.jsp
new file mode 100644
index 0000000..9ab7b78
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/wait/complete.jsp
@@ -0,0 +1,25 @@
+<%@ taglib prefix="s" uri="/struts-tags" %>
+<html>
+<head>
+	<title>Struts2 Showcase - Execute and Wait Examples - Complete</title>
+</head>
+
+<body>
+<div class="page-header">
+	<h1>The process is complete</h1>
+</div>
+
+
+<div class="container-fluid">
+	<div class="row-fluid">
+		<div class="span12" style="text-align: center;">
+
+			<b>We have processed your request.</b>
+			<p/>
+			Click here to <s:url var="back" value="/wait/index.jsp"/><s:a href="%{back}" cssClass="btn btn-link">return</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/wait/example1.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/wait/example1.jsp b/apps/showcase/src/main/webapp/WEB-INF/wait/example1.jsp
new file mode 100644
index 0000000..de83f93
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/wait/example1.jsp
@@ -0,0 +1,28 @@
+<%@ taglib prefix="s" uri="/struts-tags" %>
+<html>
+<head>
+	<title>Struts2 Showcase - Execute and Wait Examples - Example 1</title>
+</head>
+
+<body>
+<div class="page-header">
+	<h1>Execute and Wait Examples - Example 1</h1>
+</div>
+
+
+<div class="container-fluid">
+	<div class="row-fluid">
+		<div class="span12" style="text-align: center;">
+
+			<p><b>Example 1:</b> In the form below enter how long time to simulate the process should take.</p>
+
+			<s:form action="longProcess1">
+				<s:textfield label="Time (millis)" name="time" required="true" value="7000"/>
+				<s:submit value="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/wait/example2.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/wait/example2.jsp b/apps/showcase/src/main/webapp/WEB-INF/wait/example2.jsp
new file mode 100644
index 0000000..df68dfc
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/wait/example2.jsp
@@ -0,0 +1,29 @@
+<%@ taglib prefix="s" uri="/struts-tags" %>
+<html>
+<head>
+	<title>Struts2 Showcase - Execute and Wait Examples - Example 2</title>
+</head>
+
+<body>
+<div class="page-header">
+	<h1>Execute and Wait Examples - Example 2</h1>
+</div>
+
+
+<div class="container-fluid">
+	<div class="row-fluid">
+		<div class="span12">
+
+			<p><b>Example 2:</b> As example 1 but uses a delay of 2000 millis before the wait page is shown. Try simulating with
+				a value of 500 millis to see that no wait page is shown at all.</p>
+
+			<s:form action="longProcess2">
+				<s:textfield label="Time (millis)" name="time" required="true" value="8000"/>
+				<s:submit value="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/wait/example3.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/wait/example3.jsp b/apps/showcase/src/main/webapp/WEB-INF/wait/example3.jsp
new file mode 100644
index 0000000..b77baae
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/wait/example3.jsp
@@ -0,0 +1,29 @@
+<%@ taglib prefix="s" uri="/struts-tags" %>
+<html>
+<head>
+	<title>Struts2 Showcase - Execute and Wait Examples - Example 3</title>
+</head>
+
+<body>
+<div class="page-header">
+	<h1>Execute and Wait Examples - Example 3</h1>
+</div>
+
+
+<div class="container-fluid">
+	<div class="row-fluid">
+		<div class="span12">
+
+			<p><b>Example 3:</b> As example 1 but uses a delay of 3000 millis before the wait page is shown.
+				While waiting for the wait page it will check every 1000 millis if the background process is already
+				done. Try simulating with a value of 700 millis to see that the wait page is shown soon thereafter.</p>
+
+			<s:form action="longProcess3">
+				<s:textfield label="Time (millis)" name="time" required="true" value="9000"/>
+				<s:submit value="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/wait/index.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/wait/index.jsp b/apps/showcase/src/main/webapp/WEB-INF/wait/index.jsp
new file mode 100644
index 0000000..14f4e19
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/wait/index.jsp
@@ -0,0 +1,34 @@
+<%@ taglib prefix="s" uri="/struts-tags" %>
+<html>
+<head>
+	<title>Struts2 Showcase - Execute and Wait Examples</title>
+</head>
+
+<body>
+<div class="page-header">
+	<h1>Execute and Wait Examples</h1>
+</div>
+
+
+
+<div class="container-fluid">
+	<div class="row-fluid">
+		<div class="span12" style="text-align: center;">
+
+			<p>
+				These examples illustrate Struts build in support for execute and wait.
+			<p/>
+			<p>
+				When you have a process that takes a long time your users can be impatient and starts to submit/click again.
+				<br/> A good solution is to show the user a progress page (wait page) while the process takes it time.
+			<p/>
+
+			<br/>
+			<br/><a href="example1.jsp">Example 1 (no delay)</a>
+			<br/><a href="example2.jsp">Example 2 (with delay)</a>
+			<br/><a href="example3.jsp">Example 3 (with longer check delay)</a>
+		</div>
+	</div>
+</div>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/wait/wait.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/wait/wait.jsp b/apps/showcase/src/main/webapp/WEB-INF/wait/wait.jsp
new file mode 100644
index 0000000..deb8151
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/wait/wait.jsp
@@ -0,0 +1,53 @@
+<%@ taglib prefix="s" uri="/struts-tags" %>
+<html>
+<head>
+	<title>Struts2 Showcase - Execute and Wait Examples - Wait</title>
+</head>
+
+<body>
+<div class="page-header">
+	<h1>Execute and Wait Examples - Wait</h1>
+</div>
+
+
+<div class="container-fluid">
+	<div class="row-fluid">
+		<div class="span12" style="text-align: center;">
+
+			<p class="well">
+				We are processing your request. Please wait.
+			</p>
+
+			<div class="progress progress-striped active">
+				<div class="bar" style="width: 50%;"></div>
+			</div>
+
+			<p/>
+			You can click this link to <a href="<s:url includeParams="all"/>">refresh</a>.
+
+			<b>We have processed your request.</b>
+			<p/>
+			Click here to <s:url var="back" value="/wait/index.jsp"/><s:a href="%{back}" cssClass="btn btn-link">return</s:a>.
+
+		</div>
+	</div>
+</div>
+</body>
+</html>
+
+<%@ taglib prefix="s" uri="/struts-tags" %>
+<html>
+<head>
+    <meta http-equiv="refresh" content="5;url=<s:url includeParams="all"/>"/>
+</head>
+
+<body>
+    <p style="border: 1px solid silver; padding: 5px; background: #ffd; text-align: center;">
+        We are processing your request. Please wait.
+    </p>
+
+    <p/>
+    You can click this link to <a href="<s:url includeParams="all"/>">refresh</a>.
+
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/xslt/index.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/xslt/index.jsp b/apps/showcase/src/main/webapp/WEB-INF/xslt/index.jsp
new file mode 100644
index 0000000..2a2f0a2
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/xslt/index.jsp
@@ -0,0 +1,26 @@
+<%@taglib prefix="s" uri="/struts-tags" %>
+
+<html>
+<head>
+<title>Showcase - XSLT </title>
+</head>
+<body>
+<h1> XSLT Result Showcase</h1>
+
+<p>
+    The XSLT result can be used to generate xml from the action. By default, each of the action's
+    properties will be converted into a DOM and rendered.  These results can be transformed via
+    xslt.  Additionally, the result's exposedValue parameter can be used to define an ognl expression
+    which can be used to manipulate the object which will be converted to xml.
+
+    <ul>
+        <li><s:url var="url" namespace="/xslt" action="jvmInfo"/><s:a href="%{url}">Render the exposed portion of the action as html</s:a></li>
+        <li><s:url var="url" namespace="/xslt" action="jvmInfoRaw"/><s:a href="%{url}">Render the exposed portion of the action as xml</s:a></li>
+        <li><s:url var="url" namespace="/xslt" action="jvmInfoAll"/><s:a href="%{url}">Render the action as xml</s:a></li>
+        <li><s:url var="url" namespace="/xslt" action="classpath"/><s:a href="%{url}">Render an ognl property</s:a></li>
+    </ul>
+</p>
+
+
+</body>
+</html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/actionchaining/actionChainingResult.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/actionchaining/actionChainingResult.jsp b/apps/showcase/src/main/webapp/actionchaining/actionChainingResult.jsp
deleted file mode 100644
index 87566e8..0000000
--- a/apps/showcase/src/main/webapp/actionchaining/actionChainingResult.jsp
+++ /dev/null
@@ -1,23 +0,0 @@
-<%@taglib prefix="s" uri="/struts-tags" %>
-
-<html>
-<head>
-    <title>Struts2 Showcase - Action Chaining Result</title>
-</head>
-<body>
-    <div class="page-header">
-	    <h1>Action Chaining Result:</h1>
-    </div>
-
-    <div class="container-fluid">
-	    <div class="row-fluid">
-		    <div class="span12">
-		        <s:label label="Action Chain 1 Property 1" name="actionChain1Property1" /><br/>
-                <s:label label="Action Chain 2 Property 1" name="actionChain2Property1" /><br/>
-                <s:label label="Action Chain 3 Property 1" name="actionChain3Property1" /><br/>
-		    </div>
-	    </div>
-    </div>
-</body>
-</html>
-

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/ajax/AjaxResult.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/ajax/AjaxResult.jsp b/apps/showcase/src/main/webapp/ajax/AjaxResult.jsp
deleted file mode 100644
index 3dc8521..0000000
--- a/apps/showcase/src/main/webapp/ajax/AjaxResult.jsp
+++ /dev/null
@@ -1,12 +0,0 @@
-<%@ taglib prefix="s" uri="/struts-tags" %>
-
-<%
-    request.setAttribute("decorator", "none");
-    response.setHeader("Cache-Control","no-cache"); //HTTP 1.1
-    response.setHeader("Pragma","no-cache"); //HTTP 1.0
-    response.setDateHeader ("Expires", 0); //prevents caching at the proxy server
-%>
-
-Result: <s:property value="count"/> @ <s:property value="serverTime"/> 
-<br/>
-<s:property value="data"/>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/ajax/AjaxResult2.js
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/ajax/AjaxResult2.js b/apps/showcase/src/main/webapp/ajax/AjaxResult2.js
deleted file mode 100644
index 537c390..0000000
--- a/apps/showcase/src/main/webapp/ajax/AjaxResult2.js
+++ /dev/null
@@ -1,2 +0,0 @@
-alert('This JavaScript currently being evaluated is the result...');
-alert('... of an action executed on the server!');

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/ajax/AjaxResult3.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/ajax/AjaxResult3.jsp b/apps/showcase/src/main/webapp/ajax/AjaxResult3.jsp
deleted file mode 100644
index 45cb2b0..0000000
--- a/apps/showcase/src/main/webapp/ajax/AjaxResult3.jsp
+++ /dev/null
@@ -1,12 +0,0 @@
-<%@ taglib prefix="s" uri="/struts-tags" %>
-
-<%
-    request.setAttribute("decorator", "none");
-    response.setHeader("Cache-Control","no-cache"); //HTTP 1.1
-    response.setHeader("Pragma","no-cache"); //HTTP 1.0
-    response.setDateHeader ("Expires", 0); //prevents caching at the proxy server
-%>
-
-Result: <s:property value="count"/> @ <s:property value="serverTime"/>
-
-The value you entered was: <s:property value="data"/><br/>


[03/10] Moves showcase related JSPs under WEB-INF

Posted by lu...@apache.org.
http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/conversion/enterOperations.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/conversion/enterOperations.jsp b/apps/showcase/src/main/webapp/conversion/enterOperations.jsp
deleted file mode 100644
index 817e81f..0000000
--- a/apps/showcase/src/main/webapp/conversion/enterOperations.jsp
+++ /dev/null
@@ -1,38 +0,0 @@
-<%@taglib prefix="s" uri="/struts-tags" %>
-<html>
-<head>
-	<title>Struts2 Showcase - Conversion - Tiger 5 Enum</title>
-</head>
-<body>
-<div class="page-header">
-	<h1>Conversion - Tiger 5 Enum</h1>
-</div>
-
-<div class="container-fluid">
-	<div class="row-fluid">
-		<div class="span12">
-
-
-			See the jsp code <s:url var="url" action="showEnumJspCode" namespace="/conversion" /><s:a href="%{#url}">here.</s:a><br/>
-			See the code for OperationsEnum.java <s:url var="url" action="showOperationsEnumJavaCode" namespace="/conversion" /><s:a href="%{#url}">here.</s:a><br/>
-			See the code for OperationsEnumAction.java <s:url var="url" action="showOperationEnumActionJavaCode" namespace="/conversion" /><s:a href="%{#url}">here.</s:a><br/>
-			See the code for EnumTypeConverter.java  <s:url var="url" action="showEnumTypeConverterJavaCode" namespace="/conversion" /><s:a href="%{#url}">here.</s:a><br/>
-			See the properties for OperationsEnumAction-conversion.properties <s:url var="url" action="showOperationsEnumActionConversionProperties" namespace="/conversion" /><s:a href="%{#url}">here.</s:a>
-			<br/>
-			<br/>
-
-				<s:form action="submitOperationEnumInfo" namespace="/conversion">
-					<s:checkboxlist label="Operations"
-									name="selectedOperations"
-									list="%{availableOperations}"
-									listKey="name()"
-									listValue="name()"
-									/>
-					<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/conversion/enterPersonInfo.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/conversion/enterPersonInfo.jsp b/apps/showcase/src/main/webapp/conversion/enterPersonInfo.jsp
deleted file mode 100644
index ba30a79..0000000
--- a/apps/showcase/src/main/webapp/conversion/enterPersonInfo.jsp
+++ /dev/null
@@ -1,67 +0,0 @@
-<%@taglib prefix="s" uri="/struts-tags" %>
-<html>
-<head>
-	<title>Struts2 Showcase - Conversion - Populate Object into Struts' action List</title>
-</head>
-<body>
-<div class="page-header">
-	<h1>Conversion - Populate Object into Struts' action List</h1>
-</div>
-
-<div class="container-fluid">
-	<div class="row-fluid">
-		<div class="span12">
-
-
-			<p/>
-				An example populating a list of object (Person.java) into Struts' action (PersonAction.java)
-			<p/>
-
-			See the jsp code <s:url var="url" action="showPersonJspCode" namespace="/conversion" /><s:a href="%{#url}">here.</s:a><br/>
-			See the code for PersonAction.java <s:url var="url" action="showPersonActionJavaCode" namespace="/conversion" /><s:a href="%{#url}">here.</s:a><br/>
-			See the code for Person.java <s:url var="url" action="showPersonJavaCode" namespace="/conversion" /><s:a href="%{#url}">here.</s:a><br/>
-
-			<p/>
-
-			<s:actionerror cssClass="alert alert-error"/>
-			<s:fielderror cssClass="alert alert-error"/>
-
-			<s:form action="submitPersonInfo" namespace="/conversion" method="post">
-			    <%--
-			        The following is done Dynamically
-			    --%>
-			    <s:iterator value="new int[3]" status="stat">
-			        <s:textfield    label="%{'Person '+#stat.index+' Name'}"
-			                        name="%{'persons['+#stat.index+'].name'}" />
-			        <s:textfield    label="%{'Person '+#stat.index+' Age'}"
-			                        name="%{'persons['+#stat.index+'].age'}" />
-			    </s:iterator>
-
-
-
-			    <%--
-			    The following is done statically:-
-			    --%>
-			    <%--
-			    <s:textfield    label="Person 1 Name"
-			                    name="persons[0].name" />
-			    <s:textfield    label="Person 1 Age"
-			                    name="persons[0].age" />
-			    <s:textfield    label="Person 2 Name"
-			                    name="persons[1].name" />
-			    <s:textfield    label="Person 2 Age"
-			                    name="persons[1].age" />
-			    <s:textfield    label="Person 3 Name"
-			                    name="persons[2].name" />
-			    <s:textfield    label="Person 3 Age"
-			                    name="persons[2].age" />
-			    --%>
-
-			    <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/conversion/index.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/conversion/index.jsp b/apps/showcase/src/main/webapp/conversion/index.jsp
deleted file mode 100644
index 805d490..0000000
--- a/apps/showcase/src/main/webapp/conversion/index.jsp
+++ /dev/null
@@ -1,35 +0,0 @@
-<%@taglib prefix="s" uri="/struts-tags" %>
-
-<html>
-<head>
-	<title>Struts2 Showcase - Conversion</title>
-</head>
-<body>
-<div class="page-header">
-	<h1>Conversion</h1>
-</div>
-
-<div class="container-fluid">
-	<div class="row-fluid">
-		<div class="span12">
-
-			<ul>
-			    <li>
-			        <s:url var="url" action="enterPersonsInfo" namespace="/conversion" />
-			        <s:a href="%{#url}">Populate into the Struts action class a List of Person.java Object</s:a>
-			    </li>
-			    <li>
-			        <s:url var="url" action="enterAddressesInfo" namespace="/conversion" />
-			        <s:a href="%{#url}">Populate into Struts action class a Set of Address.java Object</s:a>
-			    </li>
-			    <li>
-			        <s:url var="url" action="enterOperationEnumInfo" namespace="/conversion" />
-			        <s:a href="%{#url}">Populate into Struts action class a List of OperationEnum.java (Java5 Enum)</s:a>
-			    </li>
-			</ul>
-
-		</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/conversion/showAddressInfo.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/conversion/showAddressInfo.jsp b/apps/showcase/src/main/webapp/conversion/showAddressInfo.jsp
deleted file mode 100644
index 8f2c0c4..0000000
--- a/apps/showcase/src/main/webapp/conversion/showAddressInfo.jsp
+++ /dev/null
@@ -1,21 +0,0 @@
-<%@taglib prefix="s" uri="/struts-tags" %>
-<html>
-<head>
-	<title>Struts2 Showcase - Conversion - Populate into Struts action class a Set of Address.java Object</title>
-</head>
-<body>
-<div class="page-header">
-	<h1>Conversion - Populate into Struts action class a Set of Address.java Object</h1>
-</div>
-
-<div class="container-fluid">
-	<div class="row-fluid">
-		<div class="span12">
-			<s:iterator value="%{addresses}">
-				<s:property value="%{top.id}" /> -> <s:property value="%{top.address}" /><br/>
-			</s:iterator>
-		</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/conversion/showOperations.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/conversion/showOperations.jsp b/apps/showcase/src/main/webapp/conversion/showOperations.jsp
deleted file mode 100644
index 4cb6679..0000000
--- a/apps/showcase/src/main/webapp/conversion/showOperations.jsp
+++ /dev/null
@@ -1,21 +0,0 @@
-<%@taglib prefix="s" uri="/struts-tags" %>
-<html>
-<head>
-	<title>Struts2 Showcase - Conversion - Tiger 5 Enum</title>
-</head>
-<body>
-<div class="page-header">
-	<h1>Conversion - Tiger 5 Enum</h1>
-</div>
-
-<div class="container-fluid">
-	<div class="row-fluid">
-		<div class="span12">
-			<s:iterator value="%{selectedOperations}" status="stat">
-				<s:property value="%{top.name()}" /><br/>
-			</s:iterator>
-		</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/conversion/showPersonInfo.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/conversion/showPersonInfo.jsp b/apps/showcase/src/main/webapp/conversion/showPersonInfo.jsp
deleted file mode 100644
index 24f9760..0000000
--- a/apps/showcase/src/main/webapp/conversion/showPersonInfo.jsp
+++ /dev/null
@@ -1,24 +0,0 @@
-<%@taglib prefix="s" uri="/struts-tags" %>
-<html>
-<head>
-	<title>Struts2 Showcase - Conversion - Populate Object into Struts' action List</title>
-</head>
-<body>
-<div class="page-header">
-	<h1>Conversion - Populate Object into Struts' action List</h1>
-</div>
-
-<div class="container-fluid">
-	<div class="row-fluid">
-		<div class="span12">
-
-			<s:iterator value="persons" status="status">
-                 <s:label label="%{'SET '+#status.index+' Name'}" value="%{name}" /><br/>
-                 <s:label label="%{'SET '+#status.index+' Age'}" value="%{age}" /><br/>
-			</s:iterator>
-		</div>
-	</div>
-</div>
-</body>
-</html>
-

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/customTemplateDir/customTheme/ftlCustomTemplate.ftl
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/customTemplateDir/customTheme/ftlCustomTemplate.ftl b/apps/showcase/src/main/webapp/customTemplateDir/customTheme/ftlCustomTemplate.ftl
deleted file mode 100644
index 4152334..0000000
--- a/apps/showcase/src/main/webapp/customTemplateDir/customTheme/ftlCustomTemplate.ftl
+++ /dev/null
@@ -1,7 +0,0 @@
-<div style="background-color:yellow;">
-<p>
-Freemarker Custom Template -
-parameter 'paramName' - ${parameters.paramName}
-</p>
-</div>
-

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/customTemplateDir/customTheme/jspCustomTemplate.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/customTemplateDir/customTheme/jspCustomTemplate.jsp b/apps/showcase/src/main/webapp/customTemplateDir/customTheme/jspCustomTemplate.jsp
deleted file mode 100644
index 311c329..0000000
--- a/apps/showcase/src/main/webapp/customTemplateDir/customTheme/jspCustomTemplate.jsp
+++ /dev/null
@@ -1,8 +0,0 @@
-<%@taglib prefix="s" uri="/struts-tags" %>
-
-<div style="background-color:yellow;">
-<p>
-JSP Custom Template - 
-parameter 'paramName' - <s:property value="%{top.parameters.paramName}" />
-</p>
-</div>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/date.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/date.jsp b/apps/showcase/src/main/webapp/date.jsp
deleted file mode 100644
index 400cd6d..0000000
--- a/apps/showcase/src/main/webapp/date.jsp
+++ /dev/null
@@ -1,2 +0,0 @@
-<%@ taglib prefix="s" uri="/struts-tags" %>
-<s:date name="now"/>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/empmanager/editEmployee.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/empmanager/editEmployee.jsp b/apps/showcase/src/main/webapp/empmanager/editEmployee.jsp
deleted file mode 100644
index aff2c3e..0000000
--- a/apps/showcase/src/main/webapp/empmanager/editEmployee.jsp
+++ /dev/null
@@ -1,56 +0,0 @@
-<%@ taglib prefix="s" uri="/struts-tags" %>
-<%@ taglib prefix="sx" uri="/struts-dojo-tags" %>
-<html>
-<head>
-	<s:if test="currentEmployee!=null">
-		<s:text var="title" name="item.edit"><s:param><s:text name="employee"/></s:param></s:text>
-	</s:if>
-	<s:else>
-		<s:text var="title" name="item.create"><s:param><s:text name="employee"/></s:param></s:text>
-	</s:else>
-	<title>Struts2 Showcase - CRUD Example - <s:property value="#title"/></title>
-	<s:head/>
-	<sx:head/>
-</head>
-<body>
-<div class="page-header">
-	<h1><s:property value="#title"/></h1>
-</div>
-
-<div class="container-fluid">
-	<div class="row-fluid">
-		<div class="span3">
-			<ul class="nav nav-tabs nav-stacked">
-				<li><s:url var="url" namespace="/employee" action="list"/><s:a href="%{url}">List available Employees</s:a></li>
-				<li class="active"><s:url var="url" namespace="/employee" action="edit"/><s:a href="%{url}">Create/Edit Employee</s:a></li>
-				<li><s:url var="url" namespace="/skill" action="list"/><s:a href="%{url}">List available Skills</s:a></li>
-				<li><s:url var="url" namespace="/skill" action="edit"/><s:a href="%{url}">Create/Edit Skill</s:a></li>
-			</ul>
-		</div>
-		<div class="span9">
-
-			<s:action var="skillAction" namespace="/skill" name="list"/>
-
-			<s:form name="editForm" action="save">
-				<s:textfield label="Employee Id" name="currentEmployee.empId"/>
-				<s:textfield label="%{getText('employee.firstName')}" name="currentEmployee.firstName"/>
-				<s:textfield label="%{getText('employee.lastName')}" name="currentEmployee.lastName"/>
-				<sx:datetimepicker label="Birthdate" name="currentEmployee.birthDate"/>
-				<s:textfield label="Salary" name="currentEmployee.salary" value="%{getText('format.number',{currentEmployee.salary})}" />
-				<s:checkbox fieldValue="true" label="Married" name="currentEmployee.married"/>
-				<s:combobox list="availablePositions" label="Position" name="currentEmployee.position"/>
-				<s:select list="#skillAction.availableItems" listKey="name" label="Main Skill"
-				          name="currentEmployee.mainSkill.name"/>
-				<s:select list="#skillAction.availableItems" listKey="name" listValue="description" label="Other Skills"
-				          name="selectedSkills" multiple="true"/>
-				<s:password label="Password" name="currentEmployee.password"/>
-				<s:radio list="availableLevels" name="currentEmployee.level"/>
-				<s:textarea label="Comment" name="currentEmployee.comment" cols="50" rows="3"/>
-				<s:submit value="%{getText('save')}"  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/empmanager/editSkill.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/empmanager/editSkill.jsp b/apps/showcase/src/main/webapp/empmanager/editSkill.jsp
deleted file mode 100644
index f47390e..0000000
--- a/apps/showcase/src/main/webapp/empmanager/editSkill.jsp
+++ /dev/null
@@ -1,42 +0,0 @@
-<%@taglib prefix="s" uri="/struts-tags" %>
-<html>
-<head>
-	<s:if test="currentSkill!=null">
-		<s:set name="submitType" value="'update'"/>
-		<s:text id="title" name="item.edit"><s:param><s:text name="skill"/></s:param></s:text>
-	</s:if>
-	<s:else>
-		<s:set name="submitType" value="'create'"/>
-		<s:text var="title" name="item.create"><s:param><s:text name="skill"/></s:param></s:text>
-	</s:else>
-	<title>Struts2 Showcase - CRUD Example - <s:property value="#title"/></title>
-</head>
-<body>
-<div class="page-header">
-	<h1><s:property value="#title"/></h1>
-</div>
-
-<div class="container-fluid">
-	<div class="row-fluid">
-		<div class="span3">
-			<ul class="nav nav-tabs nav-stacked">
-				<li><s:url var="url" namespace="/employee" action="list"/><s:a href="%{url}">List available Employees</s:a></li>
-				<li><s:url var="url" namespace="/employee" action="edit"/><s:a href="%{url}">Create/Edit Employee</s:a></li>
-				<li><s:url var="url" namespace="/skill" action="list"/><s:a href="%{url}">List available Skills</s:a></li>
-				<li class="active"><s:url var="url" namespace="/skill" action="edit"/><s:a href="%{url}">Create/Edit Skill</s:a></li>
-			</ul>
-		</div>
-		<div class="span9">
-
-			<s:form action="save">
-				<s:textfield label="%{getText('skill.name')}" name="currentSkill.name"/>
-				<s:textfield label="%{getText('skill.description')}" name="currentSkill.description"/>
-				<%--s:submit name="%{#submitType}" value="%{getText('save')}" /--%>
-				<s:submit value="%{getText('save')}" 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/empmanager/index.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/empmanager/index.jsp b/apps/showcase/src/main/webapp/empmanager/index.jsp
deleted file mode 100644
index 0da9091..0000000
--- a/apps/showcase/src/main/webapp/empmanager/index.jsp
+++ /dev/null
@@ -1 +0,0 @@
-<% response.sendRedirect("../employee/list.action"); %>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/empmanager/listEmployees.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/empmanager/listEmployees.jsp b/apps/showcase/src/main/webapp/empmanager/listEmployees.jsp
deleted file mode 100644
index 1991924..0000000
--- a/apps/showcase/src/main/webapp/empmanager/listEmployees.jsp
+++ /dev/null
@@ -1,43 +0,0 @@
-<%@taglib prefix="s" uri="/struts-tags" %>
-<html>
-<head>
-	<title>Struts2 Showcase - CRUD Example</title>
-</head>
-<body>
-<div class="page-header">
-	<h1>Available Employees</h1>
-</div>
-
-<div class="container-fluid">
-	<div class="row-fluid">
-		<div class="span3">
-			<ul class="nav nav-tabs nav-stacked">
-				<li class="active"><s:url var="url" namespace="/employee" action="list"/><s:a href="%{url}">List available Employees</s:a></li>
-				<li><s:url var="url" namespace="/employee" action="edit"/><s:a href="%{url}">Create/Edit Employee</s:a></li>
-				<li><s:url var="url" namespace="/skill" action="list"/><s:a href="%{url}">List available Skills</s:a></li>
-				<li><s:url var="url" namespace="/skill" action="edit"/><s:a href="%{url}">Create/Edit Skill</s:a></li>
-			</ul>
-		</div>
-		<div class="span9">
-
-				<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 value="availableItems">
-						<tr>
-							<td><a href="<s:url action="edit-%{empId}" />"><s:property value="empId"/></a></td>
-							<td><s:property value="firstName"/></td>
-							<td><s:property value="lastName"/></td>
-						</tr>
-					</s:iterator>
-
-				</table>
-				<a href="<s:url action="edit-" includeParams="none"/>" class="btn btn-primary">Create new Employee</a>
-		</div>
-	</div>
-</div>
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/empmanager/listSkills.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/empmanager/listSkills.jsp b/apps/showcase/src/main/webapp/empmanager/listSkills.jsp
deleted file mode 100644
index 1c20253..0000000
--- a/apps/showcase/src/main/webapp/empmanager/listSkills.jsp
+++ /dev/null
@@ -1,41 +0,0 @@
-<%@taglib prefix="s" uri="/struts-tags" %>
-<html>
-<head>
-	<title>Struts2 Showcase - CRUD Example</title>
-</head>
-<body>
-<div class="page-header">
-	<h1>Available Skills</h1>
-</div>
-
-<div class="container-fluid">
-	<div class="row-fluid">
-		<div class="span3">
-			<ul class="nav nav-tabs nav-stacked">
-				<li><s:url var="url" namespace="/employee" action="list"/><s:a href="%{url}">List available Employees</s:a></li>
-				<li><s:url var="url" namespace="/employee" action="edit"/><s:a href="%{url}">Create/Edit Employee</s:a></li>
-				<li class="active"><s:url var="url" namespace="/skill" action="list"/><s:a href="%{url}">List available Skills</s:a></li>
-				<li><s:url var="url" namespace="/skill" action="edit"/><s:a href="%{url}">Create/Edit Skill</s:a></li>
-			</ul>
-		</div>
-		<div class="span9">
-
-			<table class="table table-striped table-bordered table-hover table-condensed">
-				<tr>
-					<th>Name</th><th>Description</th>
-				</tr>
-				<s:iterator value="availableItems">
-					<tr>
-						<td><a href="<s:url action="edit"><s:param name="skillName" value="name"/></s:url>"><s:property value="name"/></a></td>
-						<td><s:property value="description"/></td>
-					</tr>
-				</s:iterator>
-			</table>
-
-			<a href="<s:url action="edit" includeParams="none"/>" class="btn btn-primary">Create new Skill</a>
-		</div>
-	</div>
-</div>
-</body>
-</html>
-

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/filedownload/index.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/filedownload/index.jsp b/apps/showcase/src/main/webapp/filedownload/index.jsp
deleted file mode 100644
index a8b7ef8..0000000
--- a/apps/showcase/src/main/webapp/filedownload/index.jsp
+++ /dev/null
@@ -1,36 +0,0 @@
-<%@ taglib prefix="s" uri="/struts-tags" %>
-<html>
-<head>
-    <title>Struts2 Showcase - File Download</title>
-</head>
-
-<body>
-	<div class="page-header">
-		<h1>File Download Example</h1>
-	</div>
-
-
-
-    <div class="container-fluid">
-	    <div class="row-fluid">
-		    <div class="span6" style="text-align: center;">
-			    <div class="alert alert-info">
-				    The browser should display the Struts logo.
-			    </div>
-
-			    <s:url var="url" action="download"/>
-			    <s:a href="%{url}" cssClass="btn btn-large btn-info"><i class="icon-picture"></i> Download image file.</s:a>
-		    </div>
-		    <div class="span6" style="text-align: center;">
-			    <div class="alert alert-info">
-				    The browser should prompt for a location to save the ZIP file.
-			    </div>
-
-			    <s:url var="url" action="download2"/>
-			    <s:a href="%{url}" cssClass="btn btn-large btn-info"><i class="icon-download-alt"></i> Download ZIP file.</s:a>
-		    </div>
-	    </div>
-    </div>
-</body>
-</html>
-

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/fileupload/multipleUploadUsingArray.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/fileupload/multipleUploadUsingArray.jsp b/apps/showcase/src/main/webapp/fileupload/multipleUploadUsingArray.jsp
deleted file mode 100644
index 4c8167c..0000000
--- a/apps/showcase/src/main/webapp/fileupload/multipleUploadUsingArray.jsp
+++ /dev/null
@@ -1,32 +0,0 @@
-<%@ page
-		language="java"
-		contentType="text/html; charset=UTF-8"
-		pageEncoding="UTF-8"%>
-<%@ taglib prefix="s" uri="/struts-tags" %>
-<html>
-<head>
-	<title>Struts2 Showcase - Fileupload sample - Multiple fileupload using Array</title>
-</head>
-
-<body>
-<div class="page-header">
-	<h1>Fileupload sample - Multiple fileupload using Array</h1>
-</div>
-
-<div class="container-fluid">
-	<div class="row-fluid">
-		<div class="span12">
-
-			<s:form action="doMultipleUploadUsingArray" method="POST" enctype="multipart/form-data">
-				<s:file label="File (1)" name="upload" />
-				<s:file label="File (2)" name="upload" />
-				<s:file label="FIle (3)" name="upload" />
-				<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/fileupload/multipleUploadUsingList.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/fileupload/multipleUploadUsingList.jsp b/apps/showcase/src/main/webapp/fileupload/multipleUploadUsingList.jsp
deleted file mode 100644
index a84ef6c..0000000
--- a/apps/showcase/src/main/webapp/fileupload/multipleUploadUsingList.jsp
+++ /dev/null
@@ -1,32 +0,0 @@
-<%@ page 
-	language="java" 
-	contentType="text/html; charset=UTF-8"
-    pageEncoding="UTF-8"%>
-<%@ taglib prefix="s" uri="/struts-tags" %>
-<html>
-<head>
-	<title>Struts2 Showcase - Fileupload sample - Multiple fileupload using List</title>
-</head>
-
-<body>
-<div class="page-header">
-	<h1>Fileupload sample - Multiple fileupload using List</h1>
-</div>
-
-<div class="container-fluid">
-	<div class="row-fluid">
-		<div class="span12">
-
-			<s:form action="doMultipleUploadUsingList" method="POST" enctype="multipart/form-data">
-				<s:file label="File (1)" name="upload" />
-				<s:file label="File (2)" name="upload" />
-				<s:file label="FIle (3)" name="upload" />
-				<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/fileupload/upload-success.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/fileupload/upload-success.jsp b/apps/showcase/src/main/webapp/fileupload/upload-success.jsp
deleted file mode 100644
index 6073d2a..0000000
--- a/apps/showcase/src/main/webapp/fileupload/upload-success.jsp
+++ /dev/null
@@ -1,31 +0,0 @@
-<%@ page 
-	language="java" 
-	contentType="text/html; charset=UTF-8"
-    pageEncoding="UTF-8"%>
-<%@ taglib prefix="s" uri="/struts-tags" %>
-<html>
-<head>
-	<title>Struts2 Showcase - Fileupload sample</title>
-</head>
-
-<body>
-<div class="page-header">
-	<h1>Fileupload sample</h1>
-</div>
-
-<div class="container-fluid">
-	<div class="row-fluid">
-		<div class="span12">
-			<ul>
-		        <li>ContentType: <s:property value="uploadContentType" /></li>
-		        <li>FileName: <s:property value="uploadFileName" /></li>
-		        <li>File: <s:property value="upload" /></li>
-		        <li>Caption:<s:property value="caption" /></li>
-	        </ul>
-		</div>
-	</div>
-</div>
-
-</body>
-</html>
-

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/fileupload/upload.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/fileupload/upload.jsp b/apps/showcase/src/main/webapp/fileupload/upload.jsp
deleted file mode 100644
index cc770c4..0000000
--- a/apps/showcase/src/main/webapp/fileupload/upload.jsp
+++ /dev/null
@@ -1,27 +0,0 @@
-<%@ taglib prefix="s" uri="/struts-tags" %>
-<html>
-<head>
-    <title>Struts2 Showcase - Fileupload sample</title>
-</head>
-
-<body>
-    <div class="page-header">
-	    <h1>Fileupload sample</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="doUpload" method="POST" enctype="multipart/form-data">
-			        <s:file name="upload" label="File"/>
-			        <s:textfield name="caption" label="Caption"/>
-			        <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/freemarker/customFreemarkerManagerUsage.ftl
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/freemarker/customFreemarkerManagerUsage.ftl b/apps/showcase/src/main/webapp/freemarker/customFreemarkerManagerUsage.ftl
deleted file mode 100644
index a1e14cf..0000000
--- a/apps/showcase/src/main/webapp/freemarker/customFreemarkerManagerUsage.ftl
+++ /dev/null
@@ -1,34 +0,0 @@
-<html>
-<head>
-	<title>Struts2 Showcase - Freemarker - CustomFreemarkerManager Usage</title>
-</head>
-<body>
-
-<div class="page-header">
-	<h1>Custom Freemarker Manager Usage</h1>
-</div>
-
-<div class="container-fluid">
-	<div class="row-fluid">
-		<div class="span12">
-
-		<p>
-	This page shows a simple example of using a custom freemarker manager.
-	The custom freemarker manager put into freemarker model an util classed 
-	under the name 'customFreemarkerManagerUtil'. so one could use
-	<p/>
-	<ul>
-		<li>$ { customFreemarkerManagerUtil.getTodayDate() } - to get today's date</li>
-		<li>$ { customFreemarkerManagerUtil.todayDate } - to get today's date</li>
-		<li>$ { customFreemarkerManagerUtil.getTimeNow() } - to get the time now</li>
-		<li>$ { customFreemarkerManagerUtil.timeNow } - to get the time now</li>
-	</ul>
-	 
-	 Today's Date = <span id="todaysDate">${customFreemarkerManagerUtil.todayDate}</span><br/>
-	 Time now =  <span id="timeNow">${customFreemarkerManagerUtil.getTimeNow()}</span><br/>
-		</div>
-	</div>
-</div>
-</body>
-</html>
-

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/freemarker/index.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/freemarker/index.jsp b/apps/showcase/src/main/webapp/freemarker/index.jsp
deleted file mode 100644
index 360c6cb..0000000
--- a/apps/showcase/src/main/webapp/freemarker/index.jsp
+++ /dev/null
@@ -1,3 +0,0 @@
-<% response.sendRedirect("/freemarker/customFreemarkerManagerDemo.action"); %>
-
-

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/freemarker/standardTags.ftl
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/freemarker/standardTags.ftl b/apps/showcase/src/main/webapp/freemarker/standardTags.ftl
deleted file mode 100644
index 016e189..0000000
--- a/apps/showcase/src/main/webapp/freemarker/standardTags.ftl
+++ /dev/null
@@ -1,24 +0,0 @@
-<html>
-<head>
-	<title>Struts2 Showcase - Freemarker - Standard Struts Freemarker Tags</title>
-</head>
-<body>
-
-<div class="page-header">
-	<h1>Standard Struts Freemarker Tags</h1>
-</div>
-
-<div class="container-fluid">
-	<div class="row-fluid">
-		<div class="span12">
-
-			<@s.form action="test">
-	            <@s.textfield label="Name" name="name"/>
-	            <@s.select label="Birth Month" headerValue="Select Month" list="months" />
-			</...@s.form>
-
-		</div>
-	</div>
-</div>
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/hangman/blank.ftl
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/hangman/blank.ftl b/apps/showcase/src/main/webapp/hangman/blank.ftl
deleted file mode 100644
index e69de29..0000000

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/hangman/hangmanAjax.ftl
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/hangman/hangmanAjax.ftl b/apps/showcase/src/main/webapp/hangman/hangmanAjax.ftl
deleted file mode 100644
index e433290..0000000
--- a/apps/showcase/src/main/webapp/hangman/hangmanAjax.ftl
+++ /dev/null
@@ -1,247 +0,0 @@
-<html>
-<head>
-	<title>Struts2 Showcase - Hangman (AJAX)</title>
-<@sx.head />
-</head>
-<body>
-<div class="page-header">
-	<h1>Hangman</h1>
-</div>
-
-<div class="container-fluid">
-	<div class="row-fluid">
-		<div class="span12">
-
-			<script>
-				function destroyWidgets() {
-					var div = dojo.byId("updateCharacterAvailableDiv");
-					var anchors = div.getElementsByTagName("a");
-					dojo.lang.forEach(anchors, function (anchor) {
-						var widget = dojo.widget.byId(anchor);
-						widget.destroy();
-					});
-				}
-
-				var _listeners = {
-					guessMade:function (request, widget) {
-						var sourceId = widget.widgetId;
-						this.guessMadeFunc(sourceId);
-						this.updateCharacterAvailable(sourceId);
-						this.updateVocab(sourceId);
-						this.updateScaffold(sourceId);
-						this.updateGuessLeft(sourceId);
-					},
-					guessMadeFunc:function (sourceId) {
-						var requestAttr = { character:sourceId };
-						dojo.io.bind({
-							url:"<@s.url action="guessCharacter" namespace="/hangman" />",
-							load:function (type, data, event) {
-
-							},
-							mimetype:"text/html",
-							content:requestAttr
-						});
-					},
-					updateCharacterAvailable:function (sourceId) {
-						dojo.io.bind({
-							url:"<@s.url action="updateCharacterAvailable" namespace="/hangman/ajax" />",
-							load:function (type, data, event) {
-								var div = dojo.byId("updateCharacterAvailableDiv");
-								destroyWidgets();
-								div.innerHTML = data;
-
-								try {
-									var xmlParser = new dojo.xml.Parse();
-									var frag = xmlParser.parseElement(div, null, true);
-									dojo.widget.getParser().createComponents(frag);
-									// eval any scripts being returned
-									var scripts = div.getElementsByTagName('script');
-									for (var i = 0; i < scripts.length; i++) {
-										eval(scripts[i].innerHTML);
-									}
-								}
-								catch (e) {
-									alert('dojo error ' + e);
-									dojo.debug("auto-build-widgets error: " + e);
-								}
-							},
-							mimetype:"text/html"
-						});
-					},
-					updateVocab:function (sourceId) {
-						dojo.io.bind({
-							url:"<@s.url action="updateVocabCharacters" namespace="/hangman/ajax" />",
-							load:function (type, data, event) {
-								var div = dojo.byId("updateVocabDiv");
-								div.innerHTML = data;
-
-								try {
-									var xmlParser = new dojo.xml.Parse();
-									var frag = xmlParser.parseElement(div, null, true);
-
-									var scripts = div.getElementsByTagName("script");
-									for (var i = 0; i < scripts.length; i++) {
-										eval(scripts[i].innerHTML);
-									}
-								}
-								catch (e) {
-									alert("dojo error" + e);
-									dojo.debug("auto-build-widgets error: " + e);
-								}
-							},
-							mimetype:"text/html"
-						});
-					},
-					updateScaffold:function (sourceId) {
-						dojo.io.bind({
-							url:"<@s.url action="updateScaffold" namespace="/hangman/ajax" />",
-							load:function (type, data, event) {
-								var div = dojo.byId("updateScaffoldDiv");
-								div.innerHTML = data;
-
-								try {
-									var xmlParser = new dojo.xml.Parse();
-									var frag = xmlParser.parseElement(div, null, true);
-
-									var scripts = div.getElementsByTagName("script");
-									for (var i = 0; i < scripts.length; i++) {
-										eval(scripts[i].innerHTML);
-									}
-								}
-								catch (e) {
-									alert("dojo error" + e);
-									dojo.debug("auto-build-widgets error: " + e);
-								}
-							},
-							mimetype:"text/html"
-						});
-					},
-					updateGuessLeft:function (sourceId) {
-						dojo.io.bind({
-							url:"<@s.url action="updateGuessLeft" namespace="/hangman/ajax" />",
-							load:function (type, data, event) {
-								var div = dojo.byId("updateGuessLeftDiv");
-								div.innerHTML = data;
-
-								try {
-									var xmlParser = new dojo.xml.Parse();
-									var frag = xmlParser.parseElement(div, null, true);
-
-									var scripts = div.getElementsByTagName("script");
-									for (var i = 0; i < scripts.length; i++) {
-										eval(scripts[i].innerHTML);
-									}
-								}
-								catch (e) {
-									alert("dojo error" + e);
-									dojo.debug("auto-build-widgets error: " + e);
-								}
-							},
-							mimetype:"text/html"
-						});
-					}
-				};
-				dojo.event.topic.subscribe("topicGuessMade", _listeners, "guessMade");
-			</script>
-
-			<table bgcolor="green">
-				<tr>
-					<td>
-					<@s.url id="url" value="/hangman/images/hangman.png" />
-						<img alt="Hangman" src="<@s.property value="%{#url}" />"
-						     width="197" height="50" border="0"/>
-					</td>
-					<td width="70" align="right">
-					<#-- Guesses Left -->
-						<div id="updateGuessLeftDiv">
-						<@s.set name="guessLeftImageName" value="%{'Chalkboard_'+hangman.guessLeft()+'.png'}" />
-						<@s.url id="url" value="%{'/hangman/images/'+#guessLeftImageName}" />
-							<img alt="No. Guesses Left"
-							     src="<@s.property value="%{#url}"/>" width="20" height="20" border="0"/>
-						</div>
-					</td>
-					<td>
-					<@s.url id="url" value="/hangman/images/guesses-left.png" />
-						<img alt="Guesses Left"
-						     src="<@s.property value="%{#url}" />" width="164" height="11" border="0"/>
-					</td>
-				</tr>
-				<tr>
-					<td></td>
-					<td align="left">
-					<#-- Display Scaffold -->
-						<div id="updateScaffoldDiv">
-						<@s.set name="scaffoldImageName" value="%{'scaffold_'+hangman.guessLeft()+'.png'}" />
-						<@s.url id="url" value="%{'/hangman/images/'+#scaffoldImageName}" />
-							<img src="<@s.property value="%{#url}" />" border="0"/>
-						</div>
-					</td>
-					<td></td>
-				</tr>
-				<tr>
-					<td width="160">
-						<p align="right">
-						<@s.url id="url" value="/hangman/images/guess.png" />
-							<img alt="Current Guess" src="<@s.property value="%{#url}" />"
-							     align="MIDDLE" width="127" height="20" border="0"/></p>
-					</td>
-					<td>
-					<#-- Display Vacab  -->
-						<div id="updateVocabDiv">
-						<@s.iterator id="currentCharacter" value="%{hangman.vocab.inCharacters()}" stat="stat">
-							<#if hangman.characterGuessedBefore(currentCharacter)>
-								<@s.set name="chalkboardImageName" value="%{'Chalkboard_'+#currentCharacter.toString()+'.png'}" />
-								<@s.url id="url" value="%{'/hangman/images/'+#chalkboardImageName}" />
-								<img height="36" alt="<@s.property value="%{#currentCharacter}" />"
-								     src="<@s.property value="%{#url}" />" width="36" border="0"/>
-							<#else>
-								<@s.url id="url" value="/hangman/images/Chalkboard_underscroll.png" />
-								<img height="36" alt="_"
-								     src="<@s.property value="%{#url}" />" width="36" border="0"/>
-							</#if>
-						</...@s.iterator>
-						</div>
-					</td>
-				</tr>
-				<tr>
-					<td valign="top">
-						<p align="right">
-						<@s.url id="url" value="/hangman/images/choose.png" />
-							<img alt="Choose" src="<@s.property value="%{#url}" />"
-							     height="20" width="151" border="0"/>
-						</p>
-					</td>
-					<td width="330">
-
-					<#-- Show Characters Available -->
-						<div id="updateCharacterAvailableDiv">
-						<@s.iterator id="currentCharacter" value="%{hangman.charactersAvailable}" status="stat">
-							<@s.set name="chalkboardImageName" value="%{'Chalkboard_'+#currentCharacter+'.png'}" />
-							<@s.url id="chalkboardImageUrl" value="%{'/hangman/images/'+#chalkboardImageName}" />
-							<@s.url id="spacerUrl" value="/hangman/images/letter-spacer.png" />
-
-							<@s.url id="blankUrl" value="ajax/blank.action" includeContext="false" />
-							<@sx.a  id="%{#currentCharacter}"
-							beforeNotifyTopics="topicGuessMade"
-							showErrorTransportText="true">
-								<img height="36" alt="" src="<@s.property value="%{#chalkboardImageUrl}" />" width="36" border="0"/>
-							</...@sx.a>
-						</...@s.iterator>
-						</div>
-
-
-					</td>
-				</tr>
-				<tr>
-					<td>
-
-					</td>
-				</tr>
-			</table>
-		</div>
-	</div>
-</div>
-</body>
-</html>
-
-

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/hangman/hangmanNonAjax.ftl
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/hangman/hangmanNonAjax.ftl b/apps/showcase/src/main/webapp/hangman/hangmanNonAjax.ftl
deleted file mode 100644
index 6bfd8ea..0000000
--- a/apps/showcase/src/main/webapp/hangman/hangmanNonAjax.ftl
+++ /dev/null
@@ -1,144 +0,0 @@
-<html>
-<head>
-	<title>Struts2 Showcase - Hangman</title>
-</head>
-<body>
-<div class="page-header">
-	<h1>Hangman</h1>
-</div>
-
-<div class="container-fluid">
-	<div class="row-fluid">
-		<div class="span12">
-		<table>
-		  <tr>
-		    <td>
-		    <@s.url id="url" value="/hangman/images/hangman.png" />
-		    <img alt="Hangman" src="<@s.property value="%{#url}" />"
-		           width="197" height="50" border="0"/>
-		    </td>
-		    <td width="70" align="right">
-		      <#-- Guesses Left -->
-		      <div id="updateGuessLeftDiv">
-		      <#if (hangman.guessLeft() >= 0)>
-		      <@s.set name="guessLeftImageName" value="%{'Chalkboard_'+hangman.guessLeft()+'.png'}" />
-		      <@s.url id="url" value="%{'/hangman/images/'+#guessLeftImageName}" />
-		      <img alt="No. Guesses Left"
-		           src="<@s.property value="%{#url}"/>" width="20" height="20" border="0" />
-		      </#if>
-		      </div>
-		    </td>
-		    <td>
-		        <@s.url id="url" value="/hangman/images/guesses-left.png" />
-		        <img alt="Guesses Left"
-		            src="<@s.property value="%{#url}" />" width="164" height="11" border="0"/>
-		    </td>
-		  </tr>
-		  <tr>
-		    <td></td>
-		    <td align="left">
-		    <#-- Display Scaffold -->
-		    <div id="updateScaffoldDiv">
-		        <@s.set name="scaffoldImageName" value="%{'scaffold_'+hangman.guessLeft()+'.png'}" />
-		        <@s.url id="url" value="%{'/hangman/images/'+#scaffoldImageName}" />
-		        <img src="<@s.property value="%{#url}" />" border="0"/>
-		    </div>
-		    </td>
-		    <td></td>
-		    </tr>
-		  <tr>
-		    <td width="160">
-		      <p align="right">
-		        <@s.url id="url" value="/hangman/images/guess.png" />
-		        <img alt="Current Guess" src="<@s.property value="%{#url}" />"
-		           align="MIDDLE" width="127" height="20" border="0"/></p>
-		    </td>
-		    <td>
-		    <#-- Display Vacab  -->
-		    <div id="updateVocabDiv">
-		    <#if hangman.gameEnded()>
-				<@s.iterator id="currentCharacter" value="%{hangman.vocab.inCharacters()}" stat="stat">
-					<@s.url id="url" value="%{'/hangman/images/Chalkboard_'+#currentCharacter.toString()+'.png'}" />
-					<img height="36" alt="<@s.property value="%{#currentCharacter}" />"
-				            src="<@s.property value="%{#url}" />" width="36" border="0" />
-				</...@s.iterator>
-			<#else>
-		    <@s.iterator id="currentCharacter" value="%{hangman.vocab.inCharacters()}" stat="stat">
-		        <#if hangman.characterGuessedBefore(currentCharacter)>
-		            <@s.set name="chalkboardImageName" value="%{'Chalkboard_'+#currentCharacter.toString()+'.png'}" />
-		            <@s.url id="url" value="%{'/hangman/images/'+#chalkboardImageName}" />
-		            <img height="36" alt="<@s.property value="%{#currentCharacter}" />"
-		                src="<@s.property value="%{#url}" />" width="36" border="0"/>
-		        <#else>
-		            <@s.url id="url" value="/hangman/images/Chalkboard_underscroll.png" />
-		            <img height="36" alt="_"
-		                src="<@s.property value="%{#url}" />" width="36" border="0"/>
-		        </#if>
-			</...@s.iterator>
-			</#if>
-			</div>
-		    </td>
-		  </tr>
-		  <tr>
-		    <td valign="top">
-		      <p align="right">
-		        <@s.url id="url" value="/hangman/images/choose.png" />
-		        <img alt="Choose" src="<@s.property value="%{#url}" />"
-		             height="20" width="151" border="0"/>
-		      </p>
-		    </td>
-		    <td width="330">
-
-		    <#-- Show Characters Available -->
-		    <div id="updateCharacterAvailableDiv">
-		    <#if hangman.gameEnded()>
-			<@s.set name="winImageName" value="%{'you-win.png'}" />
-			<@s.set name="looseImageName" value="%{'you-lose.png'}" />
-			<@s.set name="startImageName" value="%{'start.png'}" />
-			<@s.url id="winImageUrl" value="%{'/hangman/images/'+#winImageName}"  />
-			<@s.url id="looseImageUrl" value="%{'/hangman/images/'+#looseImageName}" />
-			<@s.url id="startImageUrl" value="%{'/hangman/images/'+#startImageName}" />
-			<@s.url id="startHref" action="hangmanNonAjax" namespace="/hangman" />
-
-			<#if hangman.isWin()>
-			<img src="<@s.property value="%{#winImageUrl}" />" width="341" height="44" />
-			<#else>
-			<img src="<@s.property value="%{#looseImageUrl}" />" width="381" height="44" />
-			</#if>
-			<@s.a href="%{#startHref}">
-				<img src="<@s.property value="%{#startImageUrl}" />" width="250" height="43" />
-			</...@s.a>
-			<#else>
-			<@s.iterator id="currentCharacter" value="%{hangman.charactersAvailable}" status="stat">
-		      <@s.set name="chalkboardImageName" value="%{'Chalkboard_'+#currentCharacter+'.png'}" />
-		      <@s.url id="chalkboardImageUrl" value="%{'/hangman/images/'+#chalkboardImageName}" />
-		      <@s.url id="spacerUrl" value="/hangman/images/letter-spacer.png" />
-		      <@s.url id="url" action="guessCharacterNonAjax" namespace="/hangman">
-		        <@s.param name="character" value="%{#currentCharacter}" />
-		      </...@s.url>
-
-		      <@s.a href="%{#url}"
-		              id="%{#currentCharacter}"
-		              >
-		        <img height="36" alt="" src="<@s.property value="%{#chalkboardImageUrl}" />" width="36" border="0" />
-		      </...@s.a>
-			</...@s.iterator>
-			</#if>
-			</div>
-
-
-		   </td>
-		  </tr>
-		  <tr>
-		    <td>
-
-		    </td>
-		  </tr>
-		</table>
-		</div>
-	</div>
-</div>
-</body>
-</html>
-
-

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/hangman/updateCharacterAvailable.ftl
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/hangman/updateCharacterAvailable.ftl b/apps/showcase/src/main/webapp/hangman/updateCharacterAvailable.ftl
deleted file mode 100644
index 84281d0..0000000
--- a/apps/showcase/src/main/webapp/hangman/updateCharacterAvailable.ftl
+++ /dev/null
@@ -1,45 +0,0 @@
-<#if hangman.gameEnded()>
-	<@s.set name="winImageName" value="%{'you-win.png'}" />
-	<@s.set name="looseImageName" value="%{'you-lose.png'}" />
-	<@s.set name="startImageName" value="%{'start.png'}" />
-	<@s.url id="winImageUrl" value="%{'/hangman/images/'+#winImageName}"  />
-	<@s.url id="looseImageUrl" value="%{'/hangman/images/'+#looseImageName}" />
-	<@s.url id="startImageUrl" value="%{'/hangman/images/'+#startImageName}" />
-	<@s.url id="startHref" action="hangmanAjax" namespace="/hangman" />
-	
-	<#if hangman.isWin()>
-	<img src="<@s.property value="%{#winImageUrl}" />" width="341" height="44" />
-	<#else>
-	<img src="<@s.property value="%{#looseImageUrl}" />" width="381" height="44" />
-	</#if>
-	<@s.a href="%{#startHref}">
-		<img src="<@s.property value="%{#startImageUrl}" />" width="250" height="43" />
-	</...@s.a>
-<#else>
-<@s.iterator id="currentCharacter" value="%{hangman.charactersAvailable}" status="stat">
-      <@s.set name="chalkboardImageName" value="%{'Chalkboard_'+#currentCharacter+'.png'}" />
-      <@s.url id="chalkboardImageUrl" value="%{'/hangman/images/'+#chalkboardImageName}" />
-      <@s.url id="spacerUrl" value="/hangman/images/letter-spacer.png" />
-      <@s.url id="blankUrl" value="ajax/blank.action" includeContext="false" />
-      
-      <@sx.a  id="%{#currentCharacter}" 
-      		  afterNotifyTopics="topicGuessMade"
-      		  showErrorTransportText="true">
-      	<img height="36" alt="" src="<@s.property value="%{#chalkboardImageUrl}" />" width="36" border="0" />
-      </...@sx.a>
-      
-      <#--
-      <a href="#" id="<@s.property value="%{#currentCharacter}"/>" >
-      	<img height="36" alt="" src="<@s.property value="%{#chalkboardImageUrl}" />" width="36" border="0" />
-      </a>
-      
-      <script>
-      	// var anchor = dojo.byId("<@s.property value="%{#currentCharacter}" />");
-      	var anchor = document.getElementById("<@s.property value="%{#currentCharacter}" />");
-      	dojo.event.connect(anchor, "onclick", function(event) {
-      		dojo.event.topic.publish("topicGuessMade", "<@s.property value="%{#currentCharacter}" />");
-      	});
-      </script>
-      -->
-</...@s.iterator>
-</#if>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/hangman/updateGuessLeft.ftl
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/hangman/updateGuessLeft.ftl b/apps/showcase/src/main/webapp/hangman/updateGuessLeft.ftl
deleted file mode 100644
index 8b5ef4e..0000000
--- a/apps/showcase/src/main/webapp/hangman/updateGuessLeft.ftl
+++ /dev/null
@@ -1,7 +0,0 @@
-<#if (hangman.guessLeft() >= 0)>
-	<@s.set name="guessLeftImageName" value="%{'Chalkboard_'+hangman.guessLeft()+'.png'}" />
-    <@s.url id="url" value="%{'/hangman/images/'+#guessLeftImageName}" />
-    <img alt="No. Guesses Left"
-      	   src="<@s.property value="%{#url}"/>" width="20" height="20" border="0" />
-</#if>
-      	   
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/hangman/updateScaffold.ftl
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/hangman/updateScaffold.ftl b/apps/showcase/src/main/webapp/hangman/updateScaffold.ftl
deleted file mode 100644
index afd11b6..0000000
--- a/apps/showcase/src/main/webapp/hangman/updateScaffold.ftl
+++ /dev/null
@@ -1,3 +0,0 @@
-	<@s.set name="scaffoldImageName" value="%{'scaffold_'+hangman.guessLeft()+'.png'}" />
-    <@s.url id="url" value="%{'/hangman/images/'+#scaffoldImageName}" />
-    <img src="<@s.property value="%{#url}" />" border="0"/>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/hangman/updateVocabCharacters.ftl
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/hangman/updateVocabCharacters.ftl b/apps/showcase/src/main/webapp/hangman/updateVocabCharacters.ftl
deleted file mode 100644
index d4b370b..0000000
--- a/apps/showcase/src/main/webapp/hangman/updateVocabCharacters.ftl
+++ /dev/null
@@ -1,20 +0,0 @@
-<#if hangman.gameEnded()>
-<@s.iterator id="currentCharacter" value="%{hangman.vocab.inCharacters()}" stat="stat">
-	<@s.url id="url" value="%{'/hangman/images/Chalkboard_'+#currentCharacter.toString()+'.png'}" />
-	<img height="36" alt="<@s.property value="%{#currentCharacter}" />"
-		 src="<@s.property value="%{#url}" />" width="36" border="0" />
-</...@s.iterator>
-<#else>
-<@s.iterator id="currentCharacter" value="%{hangman.vocab.inCharacters()}" stat="stat">
-    	<#if hangman.characterGuessedBefore(currentCharacter)>
-    		<@s.set name="chalkboardImageName" value="%{'Chalkboard_'+#currentCharacter.toString()+'.png'}" />
-    		<@s.url id="url" value="%{'/hangman/images/'+#chalkboardImageName}" />
-    		<img height="36" alt="<@s.property value="%{#currentCharacter}" />"
-        		src="<@s.property value="%{#url}" />" width="36" border="0"/>
-    	<#else>
-    		<@s.url id="url" value="/hangman/images/Chalkboard_underscroll.png" />
-    		<img height="36" alt="_"
-        		src="<@s.property value="%{#url}" />" width="36" border="0"/>
-    	</#if>
-</...@s.iterator>
-</#if>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/help.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/help.jsp b/apps/showcase/src/main/webapp/help.jsp
deleted file mode 100644
index 08d84ac..0000000
--- a/apps/showcase/src/main/webapp/help.jsp
+++ /dev/null
@@ -1,32 +0,0 @@
-<%@taglib prefix="s" uri="/struts-tags" %>
-<html>
-<head>
-    <title>Struts2 Showcase . Getting Support</title>
-</head>
-
-<body>
-	<div class="page-header">
-		<h1>Getting support</h1>
-	</div>
-
-
-	<div class="container-fluid">
-		<div class="row-fluid">
-			<div class="span4" style="text-align: center;">
-				<img src='<s:url value="/images/struts.gif"/>' alt="Struts Logo" width="290" height="80"/>
-			</div>
-			<div class="span4" style="text-align: center;">
-				<div class="alert alert-info">
-					Use this mailing list if you encounter problems while developing and using with Struts.
-				</div>
-				<a href="http://struts.apache.org/mail.html" class="btn btn-large btn-info"><i class="icon-share"></i> User List</a>
-			</div>
-			<div class="span4" style="text-align: center;">
-				<div class="alert alert-info">
-					The Struts 2 website.
-				</div>
-				<a href="http://struts.apache.org/2.x/" class="btn btn-large btn-info"><i class="icon-share"></i> Struts 2</a>
-		</div>
-	</div>
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/integration/modelDriven.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/integration/modelDriven.jsp b/apps/showcase/src/main/webapp/integration/modelDriven.jsp
deleted file mode 100644
index dc0b1f4..0000000
--- a/apps/showcase/src/main/webapp/integration/modelDriven.jsp
+++ /dev/null
@@ -1,44 +0,0 @@
-<%@ taglib prefix="s" uri="/struts-tags" %>
-<html>
-<head>
-	<title>Struts2 Showcase - Struts1 Integration</title>
-	<s:head/>
-</head>
-
-<body>
-
-<div class="page-header">
-	<h1>Struts1 Integration</h1>
-</div>
-
-<div class="container-fluid">
-	<div class="row-fluid">
-		<div class="span12">
-
-
-			<s:form action="saveGangster" namespace="/integration">
-
-				<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/integration/modelDrivenResult.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/integration/modelDrivenResult.jsp b/apps/showcase/src/main/webapp/integration/modelDrivenResult.jsp
deleted file mode 100644
index 7d11f4c..0000000
--- a/apps/showcase/src/main/webapp/integration/modelDrivenResult.jsp
+++ /dev/null
@@ -1,43 +0,0 @@
-<%@ taglib prefix="s" uri="/struts-tags" %>
-<html>
-<head>
-	<title>Struts2 Showcase - Struts1 Integration - 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>Struts1 Integration - Result</h1>
-</div>
-
-<div class="container-fluid">
-	<div class="row-fluid">
-		<div class="span12">
-
-			<s:actionmessage cssClass="alert alert-info"/>
-			<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>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/interactive/demo.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/interactive/demo.jsp b/apps/showcase/src/main/webapp/interactive/demo.jsp
deleted file mode 100644
index e69de29..0000000

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/interactive/example-action.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/interactive/example-action.jsp b/apps/showcase/src/main/webapp/interactive/example-action.jsp
deleted file mode 100644
index aaf5ce9..0000000
--- a/apps/showcase/src/main/webapp/interactive/example-action.jsp
+++ /dev/null
@@ -1,76 +0,0 @@
-<%
-    request.setAttribute("decorator", "none");
-    response.setHeader("Cache-Control","no-cache"); //HTTP 1.1
-    response.setHeader("Pragma","no-cache"); //HTTP 1.0
-    response.setDateHeader ("Expires", 0); //prevents caching at the proxy server
-%>
-<pre style="font-style: normal;">
-<span class="kw">package</span> org.apache.struts2.showcase.action;
-
-<span class="kw">import</span> java.util.Arrays;
-<span class="kw">import</span> java.util.Date;
-<span class="kw">import</span> java.util.HashMap;
-<span class="kw">import</span> java.util.List;
-<span class="kw">import</span> java.util.Map;
-
-<span class="kw">import</span> com.opensymphony.xwork2.ActionSupport;
-
-<span class="kw">public class</span> ExampleAction <span class="kw">extends</span> ActionSupport {
-    <span class="kw">public static final</span> String CONSTANT = "Struts Rocks!";
-        
-    <span class="kw">public static</span> Date getCurrentDate() {
-        return new Date();
-    }
-    
-    <span class="kw">public</span> String getName() {
-        return "John Galt";
-    }
-
-    <span class="kw">public</span> String[] getBands() {
-        return new String[] { "Pink Floyd", "Metallica", "Guns & Roses" };
-    }
-
-    <span class="kw">public</span> List&lt;String&gt; getMovies() {
-        return Arrays.asList("Lord of the Rings", "Matrix");
-    }
-
-    <span class="kw">public</span> Book getBook() {
-        <span class="kw">return</span> new Book("Iliad", "Homer");
-    }
-
-    <span class="kw">public</span> Map&lt;String, Book&gt; getBooks() {
-        Map&lt;String, Book&gt; books = new HashMap&lt;String, Book&gt;();
-        books.put("Iliad", new Book("Iliad", "Homer"));
-        books.put("The Republic", new Book("The Replublic", "Plato"));
-        books.put("Thus Spake Zarathustra", new Book("Thus Spake Zarathustra",
-            "Friedrich Nietzsche"));
-        return books;
-    }
-}
-
-<span class="kw">class</span> Book {
-    <span class="kw">private</span> String title;
-    <span class="kw">private</span> String author;
-
-    <span class="kw">public</span> Book(String title, String author) {
-        this.title = title;
-        this.author = author;
-    }
-
-    <span class="kw">public</span> String getTitle() {
-        <span class="kw">return</span> title;
-    }
-
-    <span class="kw">public void</span> setTitle(String title) {
-        this.title = title;
-    }
-
-    <span class="kw">public</span> String getAuthor() {
-        return author;
-    }
-
-    <span class="kw">public void</span> setAuthor(String author) {
-        this.author = author;
-    }
-}
-</pre>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/interactive/index.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/interactive/index.jsp b/apps/showcase/src/main/webapp/interactive/index.jsp
deleted file mode 100644
index 987a39a..0000000
--- a/apps/showcase/src/main/webapp/interactive/index.jsp
+++ /dev/null
@@ -1,241 +0,0 @@
-<%@ page contentType="text/html;charset=UTF-8" language="java" %>
-<%@ taglib prefix="s" uri="/struts-tags" %>
-<%@ taglib prefix="sx" uri="/struts-dojo-tags" %>
-
-<html>
-<head>
-    <title>OGNL and tags demo</title>
-    <s:url var="struts" value="/struts" includeParams="none"/>
-    <s:url var="jspEval" action="jspEval" namespace="/nodecorate" includeParams="none"/>
-    <s:url var="viewClass" value="/interactive/example-action.jsp" includeParams="none"/>
-    <s:url var="ognlBase" value="/interactive/ognl_" includeParams="none"/>
-    <s:url var="jspBase" value="/interactive/jsp_" includeParams="none"/>
-    
-    <script src="${struts}/webconsole.js"></script>
-    <sx:head/>
-    <script>
-        var index = -1;
-        var runningOgnl = true;
-        var ognlBase = "${ognlBase}";
-        var jspBase = "${jspBase}";
-        var ognlCount = 9;
-        var jspCount = 5;
-        
-        dojo.addOnLoad(function() {
-            var classSrc = dojo.byId("classSrc");
-            dojo.io.updateNode(classSrc, "${viewClass}");
-            dojo.html.hide("previous");
-            dojo.html.hide("next");
-        });
-        
-        dojo.event.topic.subscribe("/reloadGuide", function() {
-            next();
-        });
-        
-        function startOgnl() {
-            selectOGNLTab();
-            index = -1;
-            runningOgnl = true;
-            change(1);
-            updateNavigation();
-        }
-        
-        function startJSP() {
-            selectJSPTab();
-            index = -1;
-            runningOgnl = false;
-            change(1);
-            updateNavigation();
-        }
-        
-        function execOgnl(id) {
-            var exp = dojo.string.trim(dojo.byId(id ? id : "example").innerHTML);
-            dojo.byId("wc-command").value = exp;
-            
-            keyEvent({keyCode : 13}, '${jspEval}');
-        }
-        
-        function execJSP(id) {
-            var exp = dojo.string.trim(dojo.byId(id ? id : "example").innerHTML);
-            dojo.byId("jsp").value = unscape(exp);
-            
-            dojo.event.topic.publish("/evalJSP")
-        }
-        
-        function unscape(str) {
-            return str.replace(/&amp;/gm, "&").replace(/&lt;/gm, "<").replace(/&gt;/gm, ">").replace(/&quot;/gm, '"');
-        }
-        
-        function selectClassSrcTab() {
-            dojo.widget.byId("mainTabContainer").selectTab("classTab");
-        }
-        
-        function selectJSPTab() {
-            dojo.widget.byId("mainTabContainer").selectTab("jspTab");
-        }
-        
-        function selectOGNLTab() {
-            dojo.widget.byId("mainTabContainer").selectTab("ognlTab");
-        }
-       
-        function change(delta) {
-            index+=delta;
-            
-            var url = (runningOgnl ? ognlBase : jspBase) + index + ".jsp";
-            var bind = dojo.widget.byId("guideBind");
-            bind.href = url;
-            dojo.event.topic.publish("/loadContent");
-            updateNavigation();
-        }
-        
-        function updateNavigation() {
-            if(index <= 0) {
-                dojo.html.hide("previous");
-            } else {
-                dojo.html.show("previous");
-            }
-            
-            var top = runningOgnl ? ognlCount : jspCount;
-            
-            if(index == top - 1) {
-                dojo.html.hide("next");
-            } else {
-                dojo.html.show("next");
-            }
-        }
-    </script>
-    
-    <style type="">
-        .wc-results {
-            overflow: auto; 
-            margin: 0px; 
-            padding: 5px; 
-            font-family: courier; 
-            color: white; 
-            background-color: black; 
-            height: 200px;
-        }
-        .wc-results pre {
-            display: inline;
-        }
-        .wc-command {
-            margin: 1px 0 0 0; 
-        }
-        .shell {
-            width: 100%;
-        }
-       
-        .jsp {
-            border-style: solid;
-            width: 100%;
-            height: 200px;
-        }
-        .jspResult {
-            border-style: none;
-            width: 100%;
-            height: 200px;
-            padding: 5px;
-        }
-        .jspResultHeader {
-            background-color: #818EBD;
-            color: white;
-            width: 100%;
-            height: 15px;
-        }
-        .jspResultHeader span {
-            padding: 5px;
-        }
-        .classSrc {
-            font-family:Courier;
-            font-size:11px;
-            line-height:13px;
-            overflow: auto; 
-            height: 400px;
-            width: 100%;
-        }
-        .tabContainer {
-            width: 1000px;
-            margin: 0 auto;
-        }
-        .guideContainer {
-            width: 600px;
-            border-width: 1px;
-            border-style: solid;
-            margin: 0 auto;
-        }
-        .guide {
-            padding: 5px;
-        }
-        pre {
-            font-family:Verdana,Geneva,Arial,Helvetica,sans-serif;
-            font-style: italic;
-        }
-        span.kw {
-            color: rgb(127, 0, 85);
-            font-weight: bold;;
-        }
-    </style>
-</head>
-
-<sx:bind id="guideBind" targets="guide" listenTopics="/loadContent"/>
-
-<body>
-    <sx:tabbedpanel id="mainTabContainer" cssClass="tabContainer">
-        <sx:div label="OGNL Console" id="ognlTab">
-            <div id="shell" class="shell">
-               <form onsubmit="return false" id="wc-form">
-                    <div class="wc-results" id="wc-result">
-                         Welcome to the OGNL console!
-                         <br />
-                         :-&gt;
-                    </div>
-                    <input type="hidden" name="debug" value="command" />
-                    OGNL Expression <input name="expression" onkeyup="keyEvent(event, '${jspEval}')" class="input-xxlarge wc-command" id="wc-command" type="text" />
-                </form>
-            </div>
-        </sx:div>
-        <sx:div label="JSP Console" id="jspTab">
-            <table style="width: 100%" cellpadding="1">
-                <tr valign="top">
-                    <td width="50%">
-                       <form theme="simple" namespace="/nodecorate" action="jspEval" method="post">
-                           <s:textarea cssClass="jsp" theme="simple" name="jsp" />
-                           <sx:submit
-                                value="Eval JSP Fragment" 
-                                href="%{#jspEval}" 
-                                targets="jspResult" 
-                                listenTopics="/evalJSP"/>
-                       </form>
-                    </td>
-                    <td width="50%">
-                        <div class="jspResultHeader">
-                            <span>JSP Eval Result</span>
-                        </div>
-                        <div id="jspResult" class="jspResult">
-                        </div>
-                    </td>
-                </tr>
-            </table>    
-        </sx:div>
-        <sx:div label="Class on top of the Value Stack" id="classTab">
-            <div id="classSrc" class="classSrc">
-            </div>
-        </sx:div>
-    </sx:tabbedpanel>
-    <br/><br/>
-    <div class="guideContainer">
-        <div class="jspResultHeader">
-            <span>Interactive Guide</span>
-        </div>
-        <sx:div id="guide" listenTopics="/reloadGuide" cssClass="guide">
-            <p><a href="#" onclick="startOgnl()">Start OGNL Interactive Demo</a></p>
-            <p><a href="#" onclick="startJSP()">Start JSP Interactive Demo</a></p>
-        </sx:div>   
-        <div>
-            <a href="#" id="previous" onclick="change(-1)" style="float: left"><< Previous</a>
-            <a href="#" id="next" onclick="change(1)" style="float: right">Next >></a>
-        </div>
-    </div>
-</body>
-
-</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/interactive/jsp_0.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/interactive/jsp_0.jsp b/apps/showcase/src/main/webapp/interactive/jsp_0.jsp
deleted file mode 100644
index b6787d4..0000000
--- a/apps/showcase/src/main/webapp/interactive/jsp_0.jsp
+++ /dev/null
@@ -1,62 +0,0 @@
-<%
-    request.setAttribute("decorator", "none");
-    response.setHeader("Cache-Control","no-cache"); //HTTP 1.1
-    response.setHeader("Pragma","no-cache"); //HTTP 1.0
-    response.setDateHeader ("Expires", 0); //prevents caching at the proxy server
-%>
-<p>
-    <b>String Attributes</b>
-</p>
-<p>
-    Some tag attributes are expected to be Strings in which case String literals
-    can be passed as the value, like the <i>href</i> attribute in the <i>a</i> tag.
-</p>
-<p>
-    <i>
-        &lt;s:a href=&quot;http://struts.apache.org/&quot; /&gt; 
-    </i>
-</p>
-<p>
-   If the value that you want to use in one of these string literal attributes is stored on the Value Stack,
-   then the <i>%{#name}</i> syntax (alternative syntax) needs to be used. Assuming there is a value
-   with the name "url" stored on the stack:
-</p>
-<p>
-    <i>
-        &lt;s:a href=&quot;%{#url}&quot; /&gt;
-    </i>
-</p>
-<p>
-  will create an anchor and use the value of "url" for the <i>href</i> attribute.
-</p>
-<p>
-    <b>Value Attributes</b>
-</p>
-<p>
-    Other attributes expect an object as their value(not an string literal). In these attributes you can specify
-    the name of a variable stored on the Value Stack, and the tag will look it up and use it. Like the
-    <i>value</i> attribute in the <i>property</i> tag. Assuming there is an object stored on the Value Stack with
-    the name "movie", then:
-</p>
-<p>
-    <i>
-        &lt;s:property value=&quot;movie&quot; /&gt;
-    </i>
-</p>
-<p>
-  will print the value to the page. To pass an String literal to an attribute that expects a value use the <i>%{'string'}</i>
-  notation.
-</p>
-<p>
-  If you don't remember if an attribute expects an string literal or a value, you can always use the <i>%{value}</i> notation:
-</p>
-<p>
-    <i>
-        &lt;s:a href=&quot;%{'http://struts.apache.org/'}&quot; /&gt;
-        <br />
-        &lt;s:property value=&quot;%{#movie}&quot; /&gt;
-    </i>
-</p>
-<p>
-    <a href="#" onclick="window.open('http://struts.apache.org/2.x/docs/tag-syntax.html')">[More details]</a>
-</p>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/interactive/jsp_1.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/interactive/jsp_1.jsp b/apps/showcase/src/main/webapp/interactive/jsp_1.jsp
deleted file mode 100644
index a96ab7a..0000000
--- a/apps/showcase/src/main/webapp/interactive/jsp_1.jsp
+++ /dev/null
@@ -1,52 +0,0 @@
-<%
-    request.setAttribute("decorator", "none");
-    response.setHeader("Cache-Control","no-cache"); //HTTP 1.1
-    response.setHeader("Pragma","no-cache"); //HTTP 1.0
-    response.setDateHeader ("Expires", 0); //prevents caching at the proxy server
-%>
-<p>
-    <b>Print property value, using the <i>property tag</i></b>
-</p>
-<p>
-    On the OGNL demo you learned how to access values from the Value Stack using OGNL expressions.
-    The <i>property</i> tag is used to print to the page the result of an OGNL expression. The expression
-    is specified in the <i>value</i> attribute.
-</p>
-<p>To print the value of the expression <i>name</i> to the page type:
-<p>
-    <i id="example0">
-        &lt;s:property value=&quot;name&quot; /&gt;
-    </i>
-</p>
-<p>
-    on the JSP console and hit enter. <a href="#" onclick="execJSP('example0')">Do it for me</a>
-</p>
-<p>
-    As you saw in the OGNL demo, to print a property of an object that is not on top of the stack,
-    use the <i>#object.property</i> notation.
-</p>
-<p>To print the value for the key "struts.view_uri" in <i>request</i> to the page type:
-<p>
-    <i id="example1">
-        &lt;s:property value=&quot;#request['struts.view_uri']&quot; /&gt;
-    </i>
-</p>
-<p>
-    on the JSP console and hit enter. <a href="#" onclick="execJSP('example1')">Do it for me</a>
-</p>
-<p>
-    <b>Print property value, using the <i>$</i> operator</b>
-</p>
-<p>Use the <i>${name}</i> notation to print values from the Value Stack to the page.
-<p>To print the value of the expression <i>name</i> to the page type:
-<p>
-    <i id="example2">
-        &#36;{name}
-    </i>
-</p>
-<p>
-    on the JSP console and hit enter. <a href="#" onclick="execJSP('example2')">Do it for me</a>
-</p>
-<p>
-    <a href="#" onclick="window.open('http://struts.apache.org/2.x/docs/property.html')">[More details]</a>
-</p>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/interactive/jsp_2.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/interactive/jsp_2.jsp b/apps/showcase/src/main/webapp/interactive/jsp_2.jsp
deleted file mode 100644
index 565a7ec..0000000
--- a/apps/showcase/src/main/webapp/interactive/jsp_2.jsp
+++ /dev/null
@@ -1,54 +0,0 @@
-<%
-    request.setAttribute("decorator", "none");
-    response.setHeader("Cache-Control","no-cache"); //HTTP 1.1
-    response.setHeader("Pragma","no-cache"); //HTTP 1.0
-    response.setDateHeader ("Expires", 0); //prevents caching at the proxy server
-%>
-<p>
-    <b><i>if</i> tag</b>
-</p>
-<p>
-    The <i>if</i> tag allows you to optionally execute a JSP section. Multiple <i>elseif</i> tags
-    and one <i>else</i> tag can be associated to an <i>if tag</i>.
-</p>
-<p>    
-    To say hello to John Galt type:
-</p>
-<p>
-    <pre id="example0">
-        &lt;s:if test="name == 'John Galt'"&gt;
-            Hi John
-        &lt;/s:if&gt;
-        &lt;s:else&gt;
-            I don't know you!
-        &lt;/s:else&gt;
-    </pre>
-</p>
-<p>
-    on the JSP console and hit enter. <a href="#" onclick="execJSP('example0')">Do it for me</a>
-</p>
-<p>
-    <b><i>iterator</i> tag</b>
-</p>
-<p>
-    The <i>iterator</i> tag loops over an <i>Iterable</i> object one object at a time into
-    the Value Stack (the value will be on top of the stack).
-</p>
-<p>    
-    To print the all the elements in the "bands" property type:
-</p>
-<p>
-    <pre id="example1">
-        &lt;s:iterator value="bands"&gt;
-            &lt;s:property /&gt;
-            &lt;br /&gt;
-        &lt;/s:iterator&gt;
-    </pre>
-</p>
-<p>
-    on the JSP console and hit enter. <a href="#" onclick="execJSP('example1')">Do it for me</a>
-</p>
-<p>
-    <a href="#" onclick="window.open('http://struts.apache.org/2.x/docs/property.html')">[More on the <i>if</i> tag]</a>
-    <a href="#" onclick="window.open('http://struts.apache.org/2.x/docs/iterator.html')">[More on the <i>iterator</i> tag]</a>
-</p>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/interactive/jsp_3.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/interactive/jsp_3.jsp b/apps/showcase/src/main/webapp/interactive/jsp_3.jsp
deleted file mode 100644
index 483db12..0000000
--- a/apps/showcase/src/main/webapp/interactive/jsp_3.jsp
+++ /dev/null
@@ -1,65 +0,0 @@
-<%
-    request.setAttribute("decorator", "none");
-    response.setHeader("Cache-Control","no-cache"); //HTTP 1.1
-    response.setHeader("Pragma","no-cache"); //HTTP 1.0
-    response.setDateHeader ("Expires", 0); //prevents caching at the proxy server
-%>
-<p>
-    <b><i>set</i> tag</b>
-</p>
-<p>
-    The <i>set</i> tag sets the variable with the name specified in the <i>name</i> attribute to 
-    the value specified in the <i>value</i> attribute in the scope
-    entered in the <i>scope</i> attribute. The available scopes are:
-    <ul>
-        <li>application - application scope according to servlet spec</li>
-        <li>session - session scope according to servlet spec</li>
-        <li>request - request scope according to servlet spec</li>
-        <li>page - page scope according to servlet sepc</li>
-        <li>action - the value will be set in the request scope and Struts' action context</li>
-        
-    </ul>
-</p>
-<p>    
-    This example sets <i>favouriteBand</i> in the request scope to the first element of the <i>bands</i> property:
-</p>
-<p>
-    <pre id="example0">
-        &lt;s:set name="favouriteBand" value="bands[0]" /&gt;
-        &lt;s:property value="#favouriteBand" /&gt;
-    </pre>
-</p>
-<p>
-    <a href="#" onclick="execJSP('example0')">Do it for me</a>
-</p>
-<p>
-    <b><i>url</i> tag</b>
-</p>
-<p>
-    The <i>url</i> tag is used to build urls (who would have guessed!). To build an url mapping to
-    an action, set the <i>namespace</i> and <i>action</i> attributes. The url will be stored under
-    the name specified in the <i>id</i> attribute. <b>url tag uses the <i>id</i> attribute while 
-    the <i>set</i> tag uses name</b>. To specify a value (no action lookup), just use the <i>value</i>
-    attribute. <i>param</i> tags can be nested inside the <i>url</i> tag to add parameters to the url.
-</p>
-<p>    
-    First link creates a url that maps to an action, second one creates a url to google, passing one parameter:
-</p>
-<p>
-    <pre id="example1">
-        &lt;s:url id="evalAction" namespace="/nodecorate" action="jspEval" /&gt;
-        &lt;s:a href="%{#evalAction}" &gt;Eval&lt;/s:a&gt;
-        
-        &lt;s:url id="google" value="http://www.google.com" &gt;
-            &lt;s:param name="q" value="%{'Struts 2'}" /&gt; 
-        &lt;/s:url&gt;
-        &lt;s:a href="%{#google}" &gt;Eval&lt;/s:a&gt;
-    </pre>
-</p>
-<p>
-   <a href="#" onclick="execJSP('example1')">Do it for me</a>
-</p>
-<p>
-    <a href="#" onclick="window.open('http://struts.apache.org/2.x/docs/set.html')">[More on the <i>set</i> tag]</a>
-    <a href="#" onclick="window.open('http://struts.apache.org/2.x/docs/url.html')">[More on the <i>url</i> tag]</a>
-</p>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/interactive/jsp_4.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/interactive/jsp_4.jsp b/apps/showcase/src/main/webapp/interactive/jsp_4.jsp
deleted file mode 100644
index 8d63ee5..0000000
--- a/apps/showcase/src/main/webapp/interactive/jsp_4.jsp
+++ /dev/null
@@ -1,16 +0,0 @@
-<%
-    request.setAttribute("decorator", "none");
-    response.setHeader("Cache-Control","no-cache"); //HTTP 1.1
-    response.setHeader("Pragma","no-cache"); //HTTP 1.0
-    response.setDateHeader ("Expires", 0); //prevents caching at the proxy server
-%>
-<p>
-    <b>More on JSP tags</b>
-</p>
-<p>
-  Struts 2 provides many more tags which you can learn about 
-  <a href="#" onclick="window.open('http://cwiki.apache.org/confluence/display/WW/Tag+Reference')">here</a>
-</p>
-<br/>
-You can keep playing with the JSP console or 
-<a href="#" onclick="startOgnl()">Start OGNL Interactive Demo</a>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/interactive/ognl_0.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/interactive/ognl_0.jsp b/apps/showcase/src/main/webapp/interactive/ognl_0.jsp
deleted file mode 100644
index 7f441e4..0000000
--- a/apps/showcase/src/main/webapp/interactive/ognl_0.jsp
+++ /dev/null
@@ -1,30 +0,0 @@
-<%
-    request.setAttribute("decorator", "none");
-    response.setHeader("Cache-Control","no-cache"); //HTTP 1.1
-    response.setHeader("Pragma","no-cache"); //HTTP 1.0
-    response.setDateHeader ("Expires", 0); //prevents caching at the proxy server
-%>
-<p>
-    <b>Accessing properties</b>
-</p>
-<p>
-    The framework uses a standard naming context to evaluate OGNL expressions. 
-    The top level object dealing with OGNL is a Map (usually referred as a context map or context).
-    OGNL has a notion of there being a root (or default) object within the context. 
-    In OGNL expressions, the properties of the root object can be referenced without any special "marker" notion.
-    References to other objects are marked with a pound sign (#).
-    
-    In this example (and in your JSP pages) the last action executed will be on the top of the stack. 
-</p>
-<p>    
-    <a href="#" onclick="selectClassSrcTab()">This action</a> is available on the third tab above. 
-    To access the <i>name</i> field type:
-</p>
-<p>
-    <i id="example">
-        name
-    </i>
-</p>
-<p>
-    on the OGNL console and hit enter. <a href="#" onclick="execOgnl()">Do it for me</a>
-</p>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/interactive/ognl_1.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/interactive/ognl_1.jsp b/apps/showcase/src/main/webapp/interactive/ognl_1.jsp
deleted file mode 100644
index 17505bd..0000000
--- a/apps/showcase/src/main/webapp/interactive/ognl_1.jsp
+++ /dev/null
@@ -1,28 +0,0 @@
-<%
-    request.setAttribute("decorator", "none");
-    response.setHeader("Cache-Control","no-cache"); //HTTP 1.1
-    response.setHeader("Pragma","no-cache"); //HTTP 1.0
-    response.setDateHeader ("Expires", 0); //prevents caching at the proxy server
-%>
-<p>
-    <b>Accessing nested properties</b>
-</p>
-<p>
-    To access nested properties, use the dot "." operator to concatenate the property names. The action
-    class has a <i>book</i> field, with <i>title</i> and <i>author</i> fields.
-</p>
-<p>
-    To access the name of the book type:
-</p>
-<p>
-    <i id="example">
-        book.title
-    </i>
-</p>
-<p>
-    on the OGNL console and hit enter. <a href="#" onclick="execOgnl()">Do it for me</a>
-</p>
-<br/>
-<p>
-    <a href="#" onclick="window.open('http://www.ognl.org/2.6.9/Documentation/html/LanguageGuide/properties.html')">[More details]</a>
-</p>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/interactive/ognl_2.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/interactive/ognl_2.jsp b/apps/showcase/src/main/webapp/interactive/ognl_2.jsp
deleted file mode 100644
index c1716db..0000000
--- a/apps/showcase/src/main/webapp/interactive/ognl_2.jsp
+++ /dev/null
@@ -1,43 +0,0 @@
-<%
-    request.setAttribute("decorator", "none");
-    response.setHeader("Cache-Control","no-cache"); //HTTP 1.1
-    response.setHeader("Pragma","no-cache"); //HTTP 1.0
-    response.setDateHeader ("Expires", 0); //prevents caching at the proxy server
-%>
-<p>
-    <b>Accessing properties inside Arrays</b>
-</p>
-<p>
-    To access properties inside arrays, use the brackets "[]" operators with the desired index(starting from 0). The action
-    class has an array of String in the field <i>bands</i>.
-</p>
-<p>
-    To access the second element in the <i>bands</i> array type:
-</p>
-<p>
-    <i id="example0">
-        bands[1]
-    </i>
-</p>
-<p>
-    on the OGNL console and hit enter. <a href="#" onclick="execOgnl('example0')">Do it for me</a>
-</p>
-<p>
-    <b>Accessing properties inside Lists</b>
-</p>
-<p>Lists can be accessed on the same way. The action class has a List of String on the field <i>movies</i>.</p>
-<p>
-    To access the first element in the <i>movies</i> list type:
-</p>
-<p>
-    <i id="example1">
-        movies[0]
-    </i>
-</p>
-<p>
-    on the OGNL console and hit enter.  <a href="#" onclick="execOgnl('example1')">Do it for me</a>
-</p>
-<br/>
-<p>
-    <a href="#" onclick="window.open('http://www.ognl.org/2.6.9/Documentation/html/LanguageGuide/indexing.html#N10184')">[More details]</a>
-</p>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/interactive/ognl_3.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/interactive/ognl_3.jsp b/apps/showcase/src/main/webapp/interactive/ognl_3.jsp
deleted file mode 100644
index 03c3095..0000000
--- a/apps/showcase/src/main/webapp/interactive/ognl_3.jsp
+++ /dev/null
@@ -1,54 +0,0 @@
-<%
-    request.setAttribute("decorator", "none");
-    response.setHeader("Cache-Control","no-cache"); //HTTP 1.1
-    response.setHeader("Pragma","no-cache"); //HTTP 1.0
-    response.setDateHeader ("Expires", 0); //prevents caching at the proxy server
-%>
-<p>
-    <b>Accessing properties inside Maps</b>
-</p>
-<p>
-    To access properties inside maps, use the brackets "[]" operators with the desired key. The action
-    class has a map of Book objects in the field <i>books</i>.
-</p>
-<p>
-    To access the book with key "Iliad" in the <i>books</i> map type:
-</p>
-<p>
-    <i id="example0">
-        books['Iliad']
-    </i>
-</p>
-<p>
-    on the OGNL console and hit enter. <a href="#" onclick="execOgnl('example0')">Do it for me</a>
-</p>
-<p>If the key does not have spaces in it, you can access an element in the map, using the dot "." operator.</p>
-<p>
-    To access the book with key "Iliad" in the <i>books</i> map type:
-</p>
-<p>
-    <i id="example1">
-        books.Iliad
-    </i>
-</p>
-<p>
-    on the OGNL console and hit enter. <a href="#" onclick="execOgnl('example1')">Do it for me</a>
-</p>
-<p>
-    Note that the object returned is of type Book. If you want to access one of its properties, you can do so using the dot
-    "." operator as you did before.</p>
-<p>
-    To access the <i>author</i> property of the book with key "Iliad" in the <i>books</i> map type:
-</p>
-<p>
-    <i id="example2">
-        books['Iliad'].author
-    </i>
-</p>
-<p>
-    on the OGNL console and hit enter. <a href="#" onclick="execOgnl('example2')">Do it for me</a>
-</p>
-<br/>
-<p>
-    <a href="#" onclick="window.open('http://www.ognl.org/2.6.9/Documentation/html/LanguageGuide/indexing.html#N10184')">[More details]</a>
-</p>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/interactive/ognl_4.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/interactive/ognl_4.jsp b/apps/showcase/src/main/webapp/interactive/ognl_4.jsp
deleted file mode 100644
index 7e158d5..0000000
--- a/apps/showcase/src/main/webapp/interactive/ognl_4.jsp
+++ /dev/null
@@ -1,32 +0,0 @@
-<%
-    request.setAttribute("decorator", "none");
-    response.setHeader("Cache-Control","no-cache"); //HTTP 1.1
-    response.setHeader("Pragma","no-cache"); //HTTP 1.0
-    response.setDateHeader ("Expires", 0); //prevents caching at the proxy server
-%>
-<p>
-    <b>Accessing properties on the stack</b>
-</p>
-<p>
-   Object that are not on the top of the Value Stack are accessed using the "#name" notation. 
-   Some objects are always pushed into the stack by Struts, like:
-</p>
-<ul>
-    <li>#application</li>
-    <li>#session</li>
-    <li>#request</li>
-    <li>#parameters</li>
-</ul>
-<p>To see the value of the first parameter type:</p>
-<p>
-    <i id="example">
-        #parameters['debug'][0]
-    </i>
-</p>
-<p>
-    on the OGNL console and hit enter.  <a href="#" onclick="execOgnl()">Do it for me</a>
-</p>
-<br/>
-<p>
-    <a href="#" onclick="window.open('http://struts.apache.org/2.x/docs/ognl.html')">[More details]</a>
-</p>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/interactive/ognl_5.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/interactive/ognl_5.jsp b/apps/showcase/src/main/webapp/interactive/ognl_5.jsp
deleted file mode 100644
index 5624567..0000000
--- a/apps/showcase/src/main/webapp/interactive/ognl_5.jsp
+++ /dev/null
@@ -1,25 +0,0 @@
-<%
-    request.setAttribute("decorator", "none");
-    response.setHeader("Cache-Control","no-cache"); //HTTP 1.1
-    response.setHeader("Pragma","no-cache"); //HTTP 1.0
-    response.setDateHeader ("Expires", 0); //prevents caching at the proxy server
-%>
-<p>
-    <b>Calling methods</b>
-</p>
-<p>
-  OGNL follows Java's syntax to execute a method.
-</p>
-<p>To execute the <i>getTitle()</i> method on the <i>book</i> object type:</p>
-<p>
-    <i id="example">
-        book.getTitle() 
-    </i>
-</p>
-<p>
-    on the OGNL console and hit enter.  <a href="#" onclick="execOgnl()">Do it for me</a>
-</p>
-<br/>
-<p>
-    <a href="#" onclick="window.open('http://www.ognl.org/2.6.9/Documentation/html/LanguageGuide/methods.html')">[More details]</a>
-</p>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/interactive/ognl_6.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/interactive/ognl_6.jsp b/apps/showcase/src/main/webapp/interactive/ognl_6.jsp
deleted file mode 100644
index 91466e1..0000000
--- a/apps/showcase/src/main/webapp/interactive/ognl_6.jsp
+++ /dev/null
@@ -1,43 +0,0 @@
-<%
-    request.setAttribute("decorator", "none");
-    response.setHeader("Cache-Control","no-cache"); //HTTP 1.1
-    response.setHeader("Pragma","no-cache"); //HTTP 1.0
-    response.setDateHeader ("Expires", 0); //prevents caching at the proxy server
-%>
-<p>
-    <b>Expressions</b>
-</p>
-<p>
-  OGNL supports expressions using primitive values.
-</p>
-<p>Arithmetic:</p>
-<p>
-    <i id="example0">
-        (6 - 2)/2
-    </i>
-</p>
-<p>
-    on the OGNL console and hit enter.  <a href="#" onclick="execOgnl('example0')">Do it for me</a>
-</p>
-<p>Logical:</p>
-<p>
-    <i id="example1">
-        (true || false) and true
-    </i>
-</p>
-<p>
-    on the OGNL console and hit enter.  <a href="#" onclick="execOgnl('example1')">Do it for me</a>
-</p>
-<p>Equality:</p>
-<p>
-    <i id="example2">
-        'a' == 'a'
-    </i>
-</p>
-<p>
-    on the OGNL console and hit enter.  <a href="#" onclick="execOgnl('example2')">Do it for me</a>
-</p>
-<p>
-    OGNL supports many more operators and expressions, see <a href="#" onclick="window.open('http://www.ognl.org/2.6.9/Documentation/html/LanguageGuide/apa.html#operators')">[Operators Reference]</a>
-    for more details.
-</p>
\ No newline at end of file


[09/10] git commit: Moves showcase related JSPs under WEB-INF

Posted by lu...@apache.org.
Moves showcase related JSPs under WEB-INF


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

Branch: refs/heads/feature/move-jsps-under-webinf
Commit: 65eb97514c635da87c60f2a7b0d6bbbdd79358ee
Parents: d07e804
Author: Lukasz Lenart <lu...@apache.org>
Authored: Sun Mar 2 22:02:49 2014 +0100
Committer: Lukasz Lenart <lu...@apache.org>
Committed: Sun Mar 2 22:02:49 2014 +0100

----------------------------------------------------------------------
 .../main/resources/struts-actionchaining.xml    |   2 +-
 .../showcase/src/main/resources/struts-ajax.xml |  42 +-
 .../showcase/src/main/resources/struts-chat.xml |  28 +-
 .../src/main/resources/struts-conversion.xml    |  40 +-
 .../src/main/resources/struts-fileupload.xml    |  14 +-
 .../src/main/resources/struts-freemarker.xml    |   4 +-
 .../src/main/resources/struts-hangman.xml       |  18 +-
 .../src/main/resources/struts-integration.xml   |   4 +-
 .../src/main/resources/struts-interactive.xml   |   2 +-
 .../src/main/resources/struts-model-driven.xml  |   4 +-
 .../src/main/resources/struts-tags-non-ui.xml   |  54 +-
 .../src/main/resources/struts-tags-ui.xml       |  42 +-
 .../src/main/resources/struts-tiles.xml         |   2 +-
 .../src/main/resources/struts-token.xml         |  24 +-
 .../src/main/resources/struts-validation.xml    |  30 +-
 .../showcase/src/main/resources/struts-wait.xml |  12 +-
 apps/showcase/src/main/resources/struts.xml     |   6 +-
 .../actionchaining/actionChainingResult.jsp     |  23 +
 .../src/main/webapp/WEB-INF/ajax/AjaxResult.jsp |  12 +
 .../src/main/webapp/WEB-INF/ajax/AjaxResult2.js |   2 +
 .../main/webapp/WEB-INF/ajax/AjaxResult3.jsp    |  12 +
 .../webapp/WEB-INF/ajax/autocompleter/index.jsp | 178 ++++++
 .../src/main/webapp/WEB-INF/ajax/bind/index.jsp |  61 ++
 .../main/webapp/WEB-INF/ajax/commonInclude.jsp  |   5 +
 .../src/main/webapp/WEB-INF/ajax/footer.jsp     |   8 +
 .../src/main/webapp/WEB-INF/ajax/index.jsp      |  24 +
 .../src/main/webapp/WEB-INF/ajax/options.ftl    |   5 +
 .../webapp/WEB-INF/ajax/remotebutton/index.jsp  |  70 +++
 .../webapp/WEB-INF/ajax/remotediv/example1.jsp  |  23 +
 .../webapp/WEB-INF/ajax/remotediv/example10.jsp |  31 +
 .../webapp/WEB-INF/ajax/remotediv/example2.jsp  |  28 +
 .../webapp/WEB-INF/ajax/remotediv/example3.jsp  |  27 +
 .../webapp/WEB-INF/ajax/remotediv/example4.jsp  |  28 +
 .../webapp/WEB-INF/ajax/remotediv/example5.jsp  |  27 +
 .../webapp/WEB-INF/ajax/remotediv/example6.jsp  |  24 +
 .../webapp/WEB-INF/ajax/remotediv/example7.jsp  |  27 +
 .../webapp/WEB-INF/ajax/remotediv/example8.jsp  |  57 ++
 .../webapp/WEB-INF/ajax/remotediv/example9.jsp  |  63 ++
 .../webapp/WEB-INF/ajax/remotediv/index.jsp     |  55 ++
 .../webapp/WEB-INF/ajax/remoteforms/index.jsp   | 119 ++++
 .../webapp/WEB-INF/ajax/remotelink/index.jsp    | 127 ++++
 .../WEB-INF/ajax/tabbedpanel/example1.jsp       |  95 +++
 .../WEB-INF/ajax/tabbedpanel/example2.jsp       |  26 +
 .../WEB-INF/ajax/tabbedpanel/example3.jsp       |  46 ++
 .../WEB-INF/ajax/tabbedpanel/example4.jsp       |  57 ++
 .../WEB-INF/ajax/tabbedpanel/example5.jsp       |  29 +
 .../WEB-INF/ajax/tabbedpanel/example5Ok.jsp     |   9 +
 .../WEB-INF/ajax/tabbedpanel/example6.jsp       |  40 ++
 .../webapp/WEB-INF/ajax/tabbedpanel/index.jsp   |  28 +
 .../ajax/tabbedpanel/nodecorate/panel1.ftl      |   3 +
 .../ajax/tabbedpanel/nodecorate/panel2.ftl      |   7 +
 .../tabbedpanel/nodecorate/panel2Submit.ftl     |   2 +
 .../ajax/tabbedpanel/nodecorate/panel3.ftl      |   9 +
 .../tabbedpanel/nodecorate/panel3Submit.ftl     |   2 +
 .../src/main/webapp/WEB-INF/ajax/testjs.jsp     |  14 +
 .../webapp/WEB-INF/ajax/tree/getCategory.jsp    |  23 +
 .../WEB-INF/ajax/tree/partialChunkHeader.jsp    |   6 +
 .../main/webapp/WEB-INF/ajax/tree/toggle.jsp    |  12 +
 .../src/main/webapp/WEB-INF/ajax/tree/tree.jsp  |  13 +
 .../main/webapp/WEB-INF/ajax/widgets/index.jsp  |  40 ++
 .../src/main/webapp/WEB-INF/chat/chatLogin.ftl  |  27 +
 .../src/main/webapp/WEB-INF/chat/createRoom.ftl |   2 +
 .../src/main/webapp/WEB-INF/chat/index.jsp      |   3 +
 .../WEB-INF/chat/messagesAvailableInRoom.ftl    |  33 +
 .../main/webapp/WEB-INF/chat/roomSelection.ftl  | 172 ++++++
 .../main/webapp/WEB-INF/chat/roomsAvailable.ftl |  44 ++
 .../WEB-INF/chat/sendMessageToRoomResult.ftl    |   2 +
 .../src/main/webapp/WEB-INF/chat/showRoom.ftl   | 167 +++++
 .../main/webapp/WEB-INF/chat/usersAvailable.ftl |   6 +
 .../WEB-INF/chat/usersAvailableInRoom.ftl       |   8 +
 .../webapp/WEB-INF/conversion/Address.java.txt  |  35 ++
 .../WEB-INF/conversion/AddressAction.java.txt   |  44 ++
 .../conversion/EnumTypeConverter.java.txt       |  55 ++
 .../WEB-INF/conversion/OperationsEnum.java.txt  |  30 +
 .../conversion/OperationsEnumAction.java.txt    |  53 ++
 .../OperationsEnumActionConversion.txt          |   4 +
 .../webapp/WEB-INF/conversion/Person.java.txt   |  34 +
 .../WEB-INF/conversion/PersonAction.java.txt    |  43 ++
 .../WEB-INF/conversion/enterAddressInfo.jsp     |  53 ++
 .../WEB-INF/conversion/enterOperations.jsp      |  38 ++
 .../WEB-INF/conversion/enterPersonInfo.jsp      |  67 ++
 .../main/webapp/WEB-INF/conversion/index.jsp    |  35 ++
 .../WEB-INF/conversion/showAddressInfo.jsp      |  21 +
 .../WEB-INF/conversion/showOperations.jsp       |  21 +
 .../WEB-INF/conversion/showPersonInfo.jsp       |  24 +
 .../customTheme/ftlCustomTemplate.ftl           |   7 +
 .../customTheme/jspCustomTemplate.jsp           |   8 +
 apps/showcase/src/main/webapp/WEB-INF/date.jsp  |   2 +
 .../webapp/WEB-INF/empmanager/editEmployee.jsp  |  56 ++
 .../webapp/WEB-INF/empmanager/editSkill.jsp     |  42 ++
 .../main/webapp/WEB-INF/empmanager/index.jsp    |   1 +
 .../webapp/WEB-INF/empmanager/listEmployees.jsp |  43 ++
 .../webapp/WEB-INF/empmanager/listSkills.jsp    |  41 ++
 .../main/webapp/WEB-INF/filedownload/index.jsp  |  36 ++
 .../fileupload/multipleUploadUsingArray.jsp     |  32 +
 .../fileupload/multipleUploadUsingList.jsp      |  32 +
 .../WEB-INF/fileupload/upload-success.jsp       |  31 +
 .../main/webapp/WEB-INF/fileupload/upload.jsp   |  27 +
 .../freemarker/customFreemarkerManagerUsage.ftl |  34 +
 .../main/webapp/WEB-INF/freemarker/index.jsp    |   3 +
 .../webapp/WEB-INF/freemarker/standardTags.ftl  |  24 +
 .../src/main/webapp/WEB-INF/hangman/blank.ftl   |   0
 .../main/webapp/WEB-INF/hangman/hangmanAjax.ftl | 247 ++++++++
 .../webapp/WEB-INF/hangman/hangmanNonAjax.ftl   | 144 +++++
 .../hangman/updateCharacterAvailable.ftl        |  45 ++
 .../webapp/WEB-INF/hangman/updateGuessLeft.ftl  |   7 +
 .../webapp/WEB-INF/hangman/updateScaffold.ftl   |   3 +
 .../WEB-INF/hangman/updateVocabCharacters.ftl   |  20 +
 apps/showcase/src/main/webapp/WEB-INF/help.jsp  |  32 +
 .../webapp/WEB-INF/integration/modelDriven.jsp  |  44 ++
 .../WEB-INF/integration/modelDrivenResult.jsp   |  43 ++
 .../main/webapp/WEB-INF/interactive/demo.jsp    |   0
 .../WEB-INF/interactive/example-action.jsp      |  76 +++
 .../main/webapp/WEB-INF/interactive/index.jsp   | 241 ++++++++
 .../main/webapp/WEB-INF/interactive/jsp_0.jsp   |  62 ++
 .../main/webapp/WEB-INF/interactive/jsp_1.jsp   |  52 ++
 .../main/webapp/WEB-INF/interactive/jsp_2.jsp   |  54 ++
 .../main/webapp/WEB-INF/interactive/jsp_3.jsp   |  65 ++
 .../main/webapp/WEB-INF/interactive/jsp_4.jsp   |  16 +
 .../main/webapp/WEB-INF/interactive/ognl_0.jsp  |  30 +
 .../main/webapp/WEB-INF/interactive/ognl_1.jsp  |  28 +
 .../main/webapp/WEB-INF/interactive/ognl_2.jsp  |  43 ++
 .../main/webapp/WEB-INF/interactive/ognl_3.jsp  |  54 ++
 .../main/webapp/WEB-INF/interactive/ognl_4.jsp  |  32 +
 .../main/webapp/WEB-INF/interactive/ognl_5.jsp  |  25 +
 .../main/webapp/WEB-INF/interactive/ognl_6.jsp  |  43 ++
 .../main/webapp/WEB-INF/interactive/ognl_7.jsp  |  55 ++
 .../main/webapp/WEB-INF/interactive/ognl_8.jsp  |  18 +
 .../main/webapp/WEB-INF/jsf/employee/edit.jsp   | 113 ++++
 .../main/webapp/WEB-INF/jsf/employee/list.jsp   |  75 +++
 .../src/main/webapp/WEB-INF/jsf/index.jsp       |  35 ++
 .../webapp/WEB-INF/modelDriven/modelDriven.jsp  |  42 ++
 .../WEB-INF/modelDriven/modelDrivenResult.jsp   |  42 ++
 .../main/webapp/WEB-INF/person/edit-person.jsp  |  53 ++
 .../src/main/webapp/WEB-INF/person/index.jsp    |   1 +
 .../main/webapp/WEB-INF/person/list-people.ftl  |  44 ++
 .../main/webapp/WEB-INF/person/new-person.ftl   |  49 ++
 .../src/main/webapp/WEB-INF/showcase.jsp        |  30 +
 .../tags/non-ui/actionPrefix/actionPrefix.ftl   |  25 +
 .../non-ui/actionPrefix/actionPrefixExample.ftl |  54 ++
 .../tags/non-ui/actionPrefix/methodPrefix.ftl   |  25 +
 .../tags/non-ui/actionPrefix/normalSubmit.ftl   |  24 +
 .../actionPrefix/redirectActionPrefix.ftl       |  28 +
 .../tags/non-ui/actionTag/includedPage.jsp      |   1 +
 .../tags/non-ui/actionTag/includedPage2.jsp     |   2 +
 .../tags/non-ui/actionTag/includedPage3.jsp     |   2 +
 .../tags/non-ui/actionTag/showActionTagDemo.jsp |  52 ++
 .../main/webapp/WEB-INF/tags/non-ui/date.jsp    | 114 ++++
 .../main/webapp/WEB-INF/tags/non-ui/debug.jsp   |  30 +
 .../webapp/WEB-INF/tags/non-ui/ifTag/testIf.ftl | 618 ++++++++++++++++++
 .../webapp/WEB-INF/tags/non-ui/ifTag/testIf.jsp | 619 +++++++++++++++++++
 .../iteratorTag/appendIteratorTagDemoResult.jsp |  34 +
 .../iteratorGeneratorTagDemoResult.jsp          |  29 +
 .../iteratorTag/mergeIteratorTagDemoResult.jsp  |  33 +
 .../iteratorTag/showAppendIteratorTagDemo.jsp   |  28 +
 .../showIteratorGeneratorTagDemo.jsp            |  29 +
 .../iteratorTag/showMergeIteratorTagDemo.jsp    |  29 +
 .../iteratorTag/subsetIteratorTagDemo.jsp       |  29 +
 .../iteratorTag/subsetIteratorTagDemoResult.jsp |  30 +
 .../WEB-INF/tags/ui/actionTagExampleCalled.jsp  |   2 +
 .../WEB-INF/tags/ui/actionTagExampleCalling.jsp |  24 +
 .../WEB-INF/tags/ui/componentTagExample.jsp     |  69 +++
 .../webapp/WEB-INF/tags/ui/datepicker/index.jsp |  33 +
 .../WEB-INF/tags/ui/dynamicTreeSelect.jsp       |   6 +
 .../src/main/webapp/WEB-INF/tags/ui/example.jsp | 149 +++++
 .../src/main/webapp/WEB-INF/tags/ui/example.vm  |  39 ++
 .../webapp/WEB-INF/tags/ui/exampleSubmited.jsp  |  58 ++
 .../webapp/WEB-INF/tags/ui/exampleSubmited.vm   |  61 ++
 .../WEB-INF/tags/ui/images/backgroundImage.jpg  | Bin 0 -> 13192 bytes
 .../webapp/WEB-INF/tags/ui/images/leopard.jpg   | Bin 0 -> 3850 bytes
 .../tags/ui/lotsOfOptiontransferselect.jsp      | 101 +++
 .../ui/lotsOfOptiontransferselectSubmit.jsp     | 103 +++
 .../main/webapp/WEB-INF/tags/ui/moreSelects.jsp |  69 +++
 .../WEB-INF/tags/ui/moreSelectsSubmit.jsp       |  63 ++
 .../webapp/WEB-INF/tags/ui/staticTreeSelect.jsp |  11 +
 .../webapp/WEB-INF/tags/ui/timepicker/index.jsp |  31 +
 .../WEB-INF/tags/ui/treeExampleAjaxDynamic.ftl  |   9 +
 .../WEB-INF/tags/ui/treeExampleAjaxDynamic.jsp  |  25 +
 .../WEB-INF/tags/ui/treeExampleDynamic.jsp      |  54 ++
 .../WEB-INF/tags/ui/treeExampleStatic.jsp       |  61 ++
 .../WEB-INF/template/xhtml/mytemplate.jsp       |   9 +
 .../src/main/webapp/WEB-INF/tiles/body.ftl      |  16 +
 .../src/main/webapp/WEB-INF/tiles/body.jsp      |  24 +
 .../src/main/webapp/WEB-INF/tiles/header.jsp    |   3 +
 .../src/main/webapp/WEB-INF/tiles/layout.ftl    |  10 +
 .../src/main/webapp/WEB-INF/tiles/layout.jsp    |  13 +
 .../main/webapp/WEB-INF/token/doublePost.jsp    |  28 +
 .../src/main/webapp/WEB-INF/token/example1.jsp  |  50 ++
 .../src/main/webapp/WEB-INF/token/example2.jsp  |  38 ++
 .../src/main/webapp/WEB-INF/token/example3.jsp  |  37 ++
 .../src/main/webapp/WEB-INF/token/example4.ftl  |  40 ++
 .../src/main/webapp/WEB-INF/token/index.jsp     |  48 ++
 .../main/webapp/WEB-INF/token/transferDone.jsp  |  48 ++
 .../validation/clientSideValidationExample.jsp  |  64 ++
 .../validation/fieldValidatorsExample.jsp       |  63 ++
 .../main/webapp/WEB-INF/validation/footer.jsp   |   8 +
 .../main/webapp/WEB-INF/validation/index.jsp    |  51 ++
 .../validation/nonFieldValidatorsExample.jsp    |  46 ++
 .../webapp/WEB-INF/validation/quiz-ajax.jsp     | 104 ++++
 .../webapp/WEB-INF/validation/quiz-basic.jsp    |  41 ++
 .../WEB-INF/validation/quiz-client-css.jsp      |  37 ++
 .../webapp/WEB-INF/validation/quiz-client.jsp   |  37 ++
 .../webapp/WEB-INF/validation/quiz-success.jsp  |  27 +
 .../storeErrorsAcrossRequestCancel.jsp          |  30 +
 .../storeErrorsAcrossRequestExample.jsp         |  54 ++
 .../validation/storeErrorsAcrossRequestOk.jsp   |  31 +
 .../successClientSideValidationExample.jsp      |  64 ++
 .../successFieldValidatorsExample.jsp           |  61 ++
 .../successNonFieldValidatorsExample.jsp        |  45 ++
 .../successVisitorValidatorsExample.jsp         |  46 ++
 .../validation/visitorValidatorsExample.jsp     |  43 ++
 .../src/main/webapp/WEB-INF/viewSource.jsp      |  54 ++
 .../src/main/webapp/WEB-INF/wait/complete.jsp   |  25 +
 .../src/main/webapp/WEB-INF/wait/example1.jsp   |  28 +
 .../src/main/webapp/WEB-INF/wait/example2.jsp   |  29 +
 .../src/main/webapp/WEB-INF/wait/example3.jsp   |  29 +
 .../src/main/webapp/WEB-INF/wait/index.jsp      |  34 +
 .../src/main/webapp/WEB-INF/wait/wait.jsp       |  53 ++
 .../src/main/webapp/WEB-INF/xslt/index.jsp      |  26 +
 .../actionchaining/actionChainingResult.jsp     |  23 -
 .../src/main/webapp/ajax/AjaxResult.jsp         |  12 -
 .../src/main/webapp/ajax/AjaxResult2.js         |   2 -
 .../src/main/webapp/ajax/AjaxResult3.jsp        |  12 -
 .../main/webapp/ajax/autocompleter/index.jsp    | 178 ------
 .../src/main/webapp/ajax/bind/index.jsp         |  61 --
 .../src/main/webapp/ajax/commonInclude.jsp      |   5 -
 apps/showcase/src/main/webapp/ajax/footer.jsp   |   8 -
 apps/showcase/src/main/webapp/ajax/index.jsp    |  24 -
 apps/showcase/src/main/webapp/ajax/options.ftl  |   5 -
 .../src/main/webapp/ajax/remotebutton/index.jsp |  70 ---
 .../src/main/webapp/ajax/remotediv/example1.jsp |  23 -
 .../main/webapp/ajax/remotediv/example10.jsp    |  31 -
 .../src/main/webapp/ajax/remotediv/example2.jsp |  28 -
 .../src/main/webapp/ajax/remotediv/example3.jsp |  27 -
 .../src/main/webapp/ajax/remotediv/example4.jsp |  28 -
 .../src/main/webapp/ajax/remotediv/example5.jsp |  27 -
 .../src/main/webapp/ajax/remotediv/example6.jsp |  24 -
 .../src/main/webapp/ajax/remotediv/example7.jsp |  27 -
 .../src/main/webapp/ajax/remotediv/example8.jsp |  57 --
 .../src/main/webapp/ajax/remotediv/example9.jsp |  63 --
 .../src/main/webapp/ajax/remotediv/index.jsp    |  55 --
 .../src/main/webapp/ajax/remoteforms/index.jsp  | 119 ----
 .../src/main/webapp/ajax/remotelink/index.jsp   | 127 ----
 .../main/webapp/ajax/tabbedpanel/example1.jsp   |  95 ---
 .../main/webapp/ajax/tabbedpanel/example2.jsp   |  26 -
 .../main/webapp/ajax/tabbedpanel/example3.jsp   |  46 --
 .../main/webapp/ajax/tabbedpanel/example4.jsp   |  57 --
 .../main/webapp/ajax/tabbedpanel/example5.jsp   |  29 -
 .../main/webapp/ajax/tabbedpanel/example5Ok.jsp |   9 -
 .../main/webapp/ajax/tabbedpanel/example6.jsp   |  40 --
 .../src/main/webapp/ajax/tabbedpanel/index.jsp  |  28 -
 .../ajax/tabbedpanel/nodecorate/panel1.ftl      |   3 -
 .../ajax/tabbedpanel/nodecorate/panel2.ftl      |   7 -
 .../tabbedpanel/nodecorate/panel2Submit.ftl     |   2 -
 .../ajax/tabbedpanel/nodecorate/panel3.ftl      |   9 -
 .../tabbedpanel/nodecorate/panel3Submit.ftl     |   2 -
 apps/showcase/src/main/webapp/ajax/testjs.jsp   |  14 -
 .../src/main/webapp/ajax/tree/getCategory.jsp   |  23 -
 .../webapp/ajax/tree/partialChunkHeader.jsp     |   6 -
 .../src/main/webapp/ajax/tree/toggle.jsp        |  12 -
 .../showcase/src/main/webapp/ajax/tree/tree.jsp |  13 -
 .../src/main/webapp/ajax/widgets/index.jsp      |  40 --
 .../showcase/src/main/webapp/chat/chatLogin.ftl |  27 -
 .../src/main/webapp/chat/createRoom.ftl         |   2 -
 apps/showcase/src/main/webapp/chat/index.jsp    |   3 -
 .../webapp/chat/messagesAvailableInRoom.ftl     |  33 -
 .../src/main/webapp/chat/roomSelection.ftl      | 172 ------
 .../src/main/webapp/chat/roomsAvailable.ftl     |  44 --
 .../webapp/chat/sendMessageToRoomResult.ftl     |   2 -
 apps/showcase/src/main/webapp/chat/showRoom.ftl | 167 -----
 .../src/main/webapp/chat/usersAvailable.ftl     |   6 -
 .../main/webapp/chat/usersAvailableInRoom.ftl   |   8 -
 .../src/main/webapp/conversion/Address.java.txt |  35 --
 .../webapp/conversion/AddressAction.java.txt    |  44 --
 .../conversion/EnumTypeConverter.java.txt       |  55 --
 .../webapp/conversion/OperationsEnum.java.txt   |  30 -
 .../conversion/OperationsEnumAction.java.txt    |  53 --
 .../OperationsEnumActionConversion.txt          |   4 -
 .../src/main/webapp/conversion/Person.java.txt  |  34 -
 .../webapp/conversion/PersonAction.java.txt     |  43 --
 .../main/webapp/conversion/enterAddressInfo.jsp |  53 --
 .../main/webapp/conversion/enterOperations.jsp  |  38 --
 .../main/webapp/conversion/enterPersonInfo.jsp  |  67 --
 .../src/main/webapp/conversion/index.jsp        |  35 --
 .../main/webapp/conversion/showAddressInfo.jsp  |  21 -
 .../main/webapp/conversion/showOperations.jsp   |  21 -
 .../main/webapp/conversion/showPersonInfo.jsp   |  24 -
 .../customTheme/ftlCustomTemplate.ftl           |   7 -
 .../customTheme/jspCustomTemplate.jsp           |   8 -
 apps/showcase/src/main/webapp/date.jsp          |   2 -
 .../src/main/webapp/empmanager/editEmployee.jsp |  56 --
 .../src/main/webapp/empmanager/editSkill.jsp    |  42 --
 .../src/main/webapp/empmanager/index.jsp        |   1 -
 .../main/webapp/empmanager/listEmployees.jsp    |  43 --
 .../src/main/webapp/empmanager/listSkills.jsp   |  41 --
 .../src/main/webapp/filedownload/index.jsp      |  36 --
 .../fileupload/multipleUploadUsingArray.jsp     |  32 -
 .../fileupload/multipleUploadUsingList.jsp      |  32 -
 .../main/webapp/fileupload/upload-success.jsp   |  31 -
 .../src/main/webapp/fileupload/upload.jsp       |  27 -
 .../freemarker/customFreemarkerManagerUsage.ftl |  34 -
 .../src/main/webapp/freemarker/index.jsp        |   3 -
 .../src/main/webapp/freemarker/standardTags.ftl |  24 -
 apps/showcase/src/main/webapp/hangman/blank.ftl |   0
 .../src/main/webapp/hangman/hangmanAjax.ftl     | 247 --------
 .../src/main/webapp/hangman/hangmanNonAjax.ftl  | 144 -----
 .../webapp/hangman/updateCharacterAvailable.ftl |  45 --
 .../src/main/webapp/hangman/updateGuessLeft.ftl |   7 -
 .../src/main/webapp/hangman/updateScaffold.ftl  |   3 -
 .../webapp/hangman/updateVocabCharacters.ftl    |  20 -
 apps/showcase/src/main/webapp/help.jsp          |  32 -
 .../src/main/webapp/integration/modelDriven.jsp |  44 --
 .../webapp/integration/modelDrivenResult.jsp    |  43 --
 .../src/main/webapp/interactive/demo.jsp        |   0
 .../main/webapp/interactive/example-action.jsp  |  76 ---
 .../src/main/webapp/interactive/index.jsp       | 241 --------
 .../src/main/webapp/interactive/jsp_0.jsp       |  62 --
 .../src/main/webapp/interactive/jsp_1.jsp       |  52 --
 .../src/main/webapp/interactive/jsp_2.jsp       |  54 --
 .../src/main/webapp/interactive/jsp_3.jsp       |  65 --
 .../src/main/webapp/interactive/jsp_4.jsp       |  16 -
 .../src/main/webapp/interactive/ognl_0.jsp      |  30 -
 .../src/main/webapp/interactive/ognl_1.jsp      |  28 -
 .../src/main/webapp/interactive/ognl_2.jsp      |  43 --
 .../src/main/webapp/interactive/ognl_3.jsp      |  54 --
 .../src/main/webapp/interactive/ognl_4.jsp      |  32 -
 .../src/main/webapp/interactive/ognl_5.jsp      |  25 -
 .../src/main/webapp/interactive/ognl_6.jsp      |  43 --
 .../src/main/webapp/interactive/ognl_7.jsp      |  55 --
 .../src/main/webapp/interactive/ognl_8.jsp      |  18 -
 .../src/main/webapp/jsf/employee/edit.jsp       | 113 ----
 .../src/main/webapp/jsf/employee/list.jsp       |  75 ---
 apps/showcase/src/main/webapp/jsf/index.jsp     |  35 --
 .../src/main/webapp/modelDriven/modelDriven.jsp |  42 --
 .../webapp/modelDriven/modelDrivenResult.jsp    |  42 --
 .../src/main/webapp/person/edit-person.jsp      |  53 --
 apps/showcase/src/main/webapp/person/index.jsp  |   1 -
 .../src/main/webapp/person/list-people.ftl      |  44 --
 .../src/main/webapp/person/new-person.ftl       |  49 --
 apps/showcase/src/main/webapp/showcase.jsp      |  30 -
 .../tags/non-ui/actionPrefix/actionPrefix.ftl   |  25 -
 .../non-ui/actionPrefix/actionPrefixExample.ftl |  54 --
 .../tags/non-ui/actionPrefix/methodPrefix.ftl   |  25 -
 .../tags/non-ui/actionPrefix/normalSubmit.ftl   |  24 -
 .../actionPrefix/redirectActionPrefix.ftl       |  28 -
 .../tags/non-ui/actionTag/includedPage.jsp      |   1 -
 .../tags/non-ui/actionTag/includedPage2.jsp     |   2 -
 .../tags/non-ui/actionTag/includedPage3.jsp     |   2 -
 .../tags/non-ui/actionTag/showActionTagDemo.jsp |  52 --
 .../src/main/webapp/tags/non-ui/date.jsp        | 114 ----
 .../src/main/webapp/tags/non-ui/debug.jsp       |  30 -
 .../main/webapp/tags/non-ui/ifTag/testIf.ftl    | 618 ------------------
 .../main/webapp/tags/non-ui/ifTag/testIf.jsp    | 619 -------------------
 .../iteratorTag/appendIteratorTagDemoResult.jsp |  34 -
 .../iteratorGeneratorTagDemoResult.jsp          |  29 -
 .../iteratorTag/mergeIteratorTagDemoResult.jsp  |  33 -
 .../iteratorTag/showAppendIteratorTagDemo.jsp   |  28 -
 .../showIteratorGeneratorTagDemo.jsp            |  29 -
 .../iteratorTag/showMergeIteratorTagDemo.jsp    |  29 -
 .../iteratorTag/subsetIteratorTagDemo.jsp       |  29 -
 .../iteratorTag/subsetIteratorTagDemoResult.jsp |  30 -
 .../webapp/tags/ui/actionTagExampleCalled.jsp   |   2 -
 .../webapp/tags/ui/actionTagExampleCalling.jsp  |  24 -
 .../main/webapp/tags/ui/componentTagExample.jsp |  69 ---
 .../main/webapp/tags/ui/datepicker/index.jsp    |  33 -
 .../main/webapp/tags/ui/dynamicTreeSelect.jsp   |   6 -
 .../src/main/webapp/tags/ui/example.jsp         | 149 -----
 .../showcase/src/main/webapp/tags/ui/example.vm |  39 --
 .../src/main/webapp/tags/ui/exampleSubmited.jsp |  58 --
 .../src/main/webapp/tags/ui/exampleSubmited.vm  |  61 --
 .../webapp/tags/ui/images/backgroundImage.jpg   | Bin 13192 -> 0 bytes
 .../src/main/webapp/tags/ui/images/leopard.jpg  | Bin 3850 -> 0 bytes
 .../tags/ui/lotsOfOptiontransferselect.jsp      | 101 ---
 .../ui/lotsOfOptiontransferselectSubmit.jsp     | 103 ---
 .../src/main/webapp/tags/ui/moreSelects.jsp     |  69 ---
 .../main/webapp/tags/ui/moreSelectsSubmit.jsp   |  63 --
 .../main/webapp/tags/ui/staticTreeSelect.jsp    |  11 -
 .../main/webapp/tags/ui/timepicker/index.jsp    |  31 -
 .../webapp/tags/ui/treeExampleAjaxDynamic.ftl   |   9 -
 .../webapp/tags/ui/treeExampleAjaxDynamic.jsp   |  25 -
 .../main/webapp/tags/ui/treeExampleDynamic.jsp  |  54 --
 .../main/webapp/tags/ui/treeExampleStatic.jsp   |  61 --
 .../main/webapp/template/xhtml/mytemplate.jsp   |   9 -
 apps/showcase/src/main/webapp/tiles/body.ftl    |  16 -
 apps/showcase/src/main/webapp/tiles/body.jsp    |  24 -
 apps/showcase/src/main/webapp/tiles/header.jsp  |   3 -
 apps/showcase/src/main/webapp/tiles/layout.ftl  |  10 -
 apps/showcase/src/main/webapp/tiles/layout.jsp  |  13 -
 .../src/main/webapp/token/doublePost.jsp        |  28 -
 .../showcase/src/main/webapp/token/example1.jsp |  50 --
 .../showcase/src/main/webapp/token/example2.jsp |  38 --
 .../showcase/src/main/webapp/token/example3.jsp |  37 --
 .../showcase/src/main/webapp/token/example4.ftl |  40 --
 apps/showcase/src/main/webapp/token/index.jsp   |  48 --
 .../src/main/webapp/token/transferDone.jsp      |  48 --
 .../validation/clientSideValidationExample.jsp  |  64 --
 .../validation/fieldValidatorsExample.jsp       |  63 --
 .../src/main/webapp/validation/footer.jsp       |   8 -
 .../src/main/webapp/validation/index.jsp        |  51 --
 .../validation/nonFieldValidatorsExample.jsp    |  46 --
 .../src/main/webapp/validation/quiz-ajax.jsp    | 104 ----
 .../src/main/webapp/validation/quiz-basic.jsp   |  41 --
 .../main/webapp/validation/quiz-client-css.jsp  |  37 --
 .../src/main/webapp/validation/quiz-client.jsp  |  37 --
 .../src/main/webapp/validation/quiz-success.jsp |  27 -
 .../storeErrorsAcrossRequestCancel.jsp          |  30 -
 .../storeErrorsAcrossRequestExample.jsp         |  54 --
 .../validation/storeErrorsAcrossRequestOk.jsp   |  31 -
 .../successClientSideValidationExample.jsp      |  64 --
 .../successFieldValidatorsExample.jsp           |  61 --
 .../successNonFieldValidatorsExample.jsp        |  45 --
 .../successVisitorValidatorsExample.jsp         |  46 --
 .../validation/visitorValidatorsExample.jsp     |  43 --
 apps/showcase/src/main/webapp/viewSource.jsp    |  54 --
 apps/showcase/src/main/webapp/wait/complete.jsp |  25 -
 apps/showcase/src/main/webapp/wait/example1.jsp |  28 -
 apps/showcase/src/main/webapp/wait/example2.jsp |  29 -
 apps/showcase/src/main/webapp/wait/example3.jsp |  29 -
 apps/showcase/src/main/webapp/wait/index.jsp    |  34 -
 apps/showcase/src/main/webapp/wait/wait.jsp     |  53 --
 apps/showcase/src/main/webapp/xslt/index.jsp    |  26 -
 421 files changed, 9361 insertions(+), 9361 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/resources/struts-actionchaining.xml
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/resources/struts-actionchaining.xml b/apps/showcase/src/main/resources/struts-actionchaining.xml
index bdefeb0..94d8b28 100644
--- a/apps/showcase/src/main/resources/struts-actionchaining.xml
+++ b/apps/showcase/src/main/resources/struts-actionchaining.xml
@@ -12,7 +12,7 @@
 			<result type="chain">actionChain3</result>
 		</action>
 		<action name="actionChain3" class="org.apache.struts2.showcase.actionchaining.ActionChain3">
-			<result>/actionchaining/actionChainingResult.jsp</result>
+			<result>/WEB-INF/actionchaining/actionChainingResult.jsp</result>
 		</action>
 	</package>
 </struts>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/resources/struts-ajax.xml
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/resources/struts-ajax.xml b/apps/showcase/src/main/resources/struts-ajax.xml
index 910112c..43d0876 100644
--- a/apps/showcase/src/main/resources/struts-ajax.xml
+++ b/apps/showcase/src/main/resources/struts-ajax.xml
@@ -6,27 +6,27 @@
 <struts>
     <package name="ajax" extends="struts-default">
         <action name="AjaxTest" class="org.apache.struts2.showcase.ajax.AjaxTestAction">
-            <result>/ajax/AjaxResult.jsp</result>
+            <result>/WEB-INF/ajax/AjaxResult.jsp</result>
         </action>
 
         <action name="AjaxRemoteLink" class="org.apache.struts2.showcase.ajax.AjaxTestAction">
-            <result>/ajax/AjaxResult2.js</result>
+            <result>/WEB-INF/ajax/AjaxResult2.js</result>
         </action>
 
         <action name="AjaxRemoteForm" class="org.apache.struts2.showcase.ajax.AjaxTestAction">
-            <result>/ajax/AjaxResult3.jsp</result>
+            <result>/WEB-INF/ajax/AjaxResult3.jsp</result>
         </action>
 
         <action name="Test1">
-            <result>/ajax/remoteforms/test2.jsp</result>
+            <result>/WEB-INF/ajax/remoteforms/test2.jsp</result>
         </action>
 
         <action name="Test2">
-            <result>/ajax/remoteforms/test3.jsp</result>
+            <result>/WEB-INF/ajax/remoteforms/test3.jsp</result>
         </action>
 
         <action name="Test3">
-            <result>/ajax/testjs.jsp</result>
+            <result>/WEB-INF/ajax/testjs.jsp</result>
         </action>
 
         <action name="JSONList">
@@ -34,54 +34,54 @@
         </action>
 
         <action name="tree">
-            <result>/ajax/tree/tree.jsp</result>
+            <result>/WEB-INF/ajax/tree/tree.jsp</result>
         </action>
 
         <action name="getCategory" class="org.apache.struts2.showcase.ajax.tree.GetCategory">
-            <result>/ajax/tree/getCategory.jsp</result>
+            <result>/WEB-INF/ajax/tree/getCategory.jsp</result>
         </action>
 
         <action name="toggle" class="org.apache.struts2.showcase.ajax.tree.Toggle">
-            <result>/ajax/tree/toggle.jsp</result>
+            <result>/WEB-INF/ajax/tree/toggle.jsp</result>
         </action>
 
         <action name="example4">
-        	<result type="freemarker">/ajax/tabbedpanel/example4.ftl</result>
+        	<result type="freemarker">/WEB-INF/ajax/tabbedpanel/example4.ftl</result>
         </action>
 
         <action name="example5" class="org.apache.struts2.showcase.ajax.Example5Action">
-        	<result name="input">/ajax/tabbedpanel/example5.jsp</result>
-        	<result>/ajax/tabbedpanel/example5Ok.jsp</result>
+        	<result name="input">/WEB-INF/ajax/tabbedpanel/example5.jsp</result>
+        	<result>/WEB-INF/ajax/tabbedpanel/example5Ok.jsp</result>
         </action>
     </package>
 
     <package name="ajaxNoDecorate" namespace="/nodecorate" extends="json-default">
     	<!--  example 4 -->
         <action name="panel1" class="org.apache.struts2.showcase.ajax.Example4ShowPanelAction" method="panel1">
-    		<result type="freemarker">/ajax/tabbedpanel/nodecorate/panel1.ftl</result>
+    		<result type="freemarker">/WEB-INF/ajax/tabbedpanel/nodecorate/panel1.ftl</result>
     	</action>
     	<action name="panel2">
-    		<result type="freemarker">/ajax/tabbedpanel/nodecorate/panel2.ftl</result>
+    		<result type="freemarker">/WEB-INF/ajax/tabbedpanel/nodecorate/panel2.ftl</result>
     	</action>
     	<action name="panel3">
-    		<result type="freemarker">/ajax/tabbedpanel/nodecorate/panel3.ftl</result>
+    		<result type="freemarker">/WEB-INF/ajax/tabbedpanel/nodecorate/panel3.ftl</result>
     	</action>
     	<action name="panel2Submit" class="org.apache.struts2.showcase.ajax.Example4ShowPanelAction" method="panel2">
-    		<result type="freemarker">/ajax/tabbedpanel/nodecorate/panel2Submit.ftl</result>
+    		<result type="freemarker">/WEB-INF/ajax/tabbedpanel/nodecorate/panel2Submit.ftl</result>
     	</action>
     	<action name="panel3Submit" class="org.apache.struts2.showcase.ajax.Example4ShowPanelAction" method="panel3">
-    		<result type="freemarker">/ajax/tabbedpanel/nodecorate/panel3Submit.ftl</result>
+    		<result type="freemarker">/WEB-INF/ajax/tabbedpanel/nodecorate/panel3Submit.ftl</result>
     	</action>
        <action name="AutocompleterExample" class="org.apache.struts2.showcase.ajax.AutocompleterExampleAction">
-           <result type="freemarker">/ajax/options.ftl</result>
+           <result type="freemarker">/WEB-INF/ajax/options.ftl</result>
        </action>
        <action name="quizAjax" class="org.apache.struts2.showcase.validation.QuizAction">
             <interceptor-ref name="jsonValidationWorkflowStack"/>
-            <result name="input">/validation/quiz-ajax.jsp</result>
-            <result>/validation/quiz-success.jsp</result>
+            <result name="input">/WEB-INF/validation/quiz-ajax.jsp</result>
+            <result>/WEB-INF/validation/quiz-success.jsp</result>
        </action>
        <action name="getNodes" class="org.apache.struts2.showcase.ShowAjaxDynamicTreeAction">
-            <result type="freemarker">/tags/ui/treeExampleAjaxDynamic.ftl</result>
+            <result type="freemarker">/WEB-INF/tags/ui/treeExampleAjaxDynamic.ftl</result>
         </action>
     </package>
 </struts>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/resources/struts-chat.xml
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/resources/struts-chat.xml b/apps/showcase/src/main/resources/struts-chat.xml
index 568b71a..15ea15b 100644
--- a/apps/showcase/src/main/resources/struts-chat.xml
+++ b/apps/showcase/src/main/resources/struts-chat.xml
@@ -33,18 +33,18 @@
     </interceptors>
 
     <global-results>
-      <result name="login" type="freemarker">/chat/chatLogin.ftl</result>
+      <result name="login" type="freemarker">/WEB-INF/chat/chatLogin.ftl</result>
     </global-results>
 
     <action name="main">
       <interceptor-ref name="chatAuthentication" />
-      <result type="freemarker">/chat/roomSelection.ftl</result>
+      <result type="freemarker">/WEB-INF/chat/roomSelection.ftl</result>
     </action>
 
     <action name="login" class="chatLoginAction">
       <interceptor-ref name="defaultStack" />
       <result type="redirect">/chat/showRooms.action</result>
-      <result name="input" type="freemarker">/chat/chatLogin.ftl</result>
+      <result name="input" type="freemarker">/WEB-INF/chat/chatLogin.ftl</result>
     </action>
 
     <action name="logout" class="chatLogoutAction">
@@ -54,12 +54,12 @@
 
     <action name="showRooms">
       <interceptor-ref name="chatAuthenticationStack" />
-      <result type="freemarker">/chat/roomSelection.ftl</result>
+      <result type="freemarker">/WEB-INF/chat/roomSelection.ftl</result>
     </action>
 
     <action name="enterRoom" class="enterRoomAction">
       <interceptor-ref name="chatAuthenticationStack" />
-      <result type="freemarker">/chat/showRoom.ftl</result>
+      <result type="freemarker">/WEB-INF/chat/showRoom.ftl</result>
     </action>
 
     <action name="exitRoom" class="exitRoomAction">
@@ -100,35 +100,35 @@
 
     <action name="usersAvailable" class="usersAvailableAction">
       <interceptor-ref name="chatAuthenticationStack" />
-      <result type="freemarker">/chat/usersAvailable.ftl</result>
+      <result type="freemarker">/WEB-INF/chat/usersAvailable.ftl</result>
     </action>
 
     <action name="roomsAvailable" class="roomsAvailableAction">
       <interceptor-ref name="chatAuthenticationStack" />
-      <result type="freemarker">/chat/roomsAvailable.ftl</result>
+      <result type="freemarker">/WEB-INF/chat/roomsAvailable.ftl</result>
     </action>
 
     <action name="createRoom" class="crudRoomAction" method="create">
       <interceptor-ref name="chatAuthenticationStack" />
-      <result type="freemarker">/chat/createRoom.ftl</result>
-      <result name="input" type="freemarker">/chat/createRoom.ftl</result>
+      <result type="freemarker">/WEB-INF/chat/createRoom.ftl</result>
+      <result name="input" type="freemarker">/WEB-INF/chat/createRoom.ftl</result>
     </action>
 
     <action name="messagesAvailableInRoom" class="messagesAvailableInRoomAction">
       <interceptor-ref name="chatAuthenticationStack" />
-      <result type="freemarker">/chat/messagesAvailableInRoom.ftl</result>
-      <result name="input" type="freemarker">/chat/messagesAvailableInRoom.ftl</result>
+      <result type="freemarker">/WEB-INF/chat/messagesAvailableInRoom.ftl</result>
+      <result name="input" type="freemarker">/WEB-INF/chat/messagesAvailableInRoom.ftl</result>
     </action>
 
     <action name="sendMessageToRoom" class="sendMessageToRoomAction">
       <interceptor-ref name="chatAuthenticationStack" />
-      <result type="freemarker">/chat/sendMessageToRoomResult.ftl</result>
-      <result name="input" type="freemarker">/chat/sendMessageToRoomResult.ftl</result>
+      <result type="freemarker">/WEB-INF/chat/sendMessageToRoomResult.ftl</result>
+      <result name="input" type="freemarker">/WEB-INF/chat/sendMessageToRoomResult.ftl</result>
     </action>
 
     <action name="usersAvailableInRoom" class="usersAvailableInRoomAction">
       <interceptor-ref name="chatAuthenticationStack" />
-      <result type="freemarker">/chat/usersAvailableInRoom.ftl</result>
+      <result type="freemarker">/WEB-INF/chat/usersAvailableInRoom.ftl</result>
     </action>
   </package>
 </struts>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/resources/struts-conversion.xml
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/resources/struts-conversion.xml b/apps/showcase/src/main/resources/struts-conversion.xml
index ad0b1a9..27dd687 100644
--- a/apps/showcase/src/main/resources/struts-conversion.xml
+++ b/apps/showcase/src/main/resources/struts-conversion.xml
@@ -9,65 +9,65 @@
 		<!-- Example populating a List inside an Action -->
 		<action name="enterPersonsInfo" method="input"
 				class="org.apache.struts2.showcase.conversion.PersonAction">
-			<result>enterPersonInfo.jsp</result>
+			<result>/WEB-INF/conversion/enterPersonInfo.jsp</result>
 		</action>
 		<action name="submitPersonInfo" method="submit"
 				class="org.apache.struts2.showcase.conversion.PersonAction">
-			<result>showPersonInfo.jsp</result>	
-			<result name="input">enterPersonInfo.jsp</result>
+			<result>/WEB-INF/conversion/showPersonInfo.jsp</result>
+			<result name="input">/WEB-INF/conversion/enterPersonInfo.jsp</result>
 		</action>
 		<action name="showPersonJspCode">
-			<result type="plainText">/conversion/enterPersonInfo.jsp</result>
+			<result type="plainText">/WEB-INF/conversion/enterPersonInfo.jsp</result>
 		</action>
 		<action name="showPersonActionJavaCode">
-			<result type="plainText">/conversion/PersonAction.java.txt</result>
+			<result type="plainText">/WEB-INF/conversion/PersonAction.java.txt</result>
 		</action>
 		<action name="showPersonJavaCode">
-			<result type="plainText">/conversion/Person.java.txt</result>
+			<result type="plainText">/WEB-INF/conversion/Person.java.txt</result>
 		</action>
 		
 		
 		<!-- Example populating a Set inside an Action -->
 		<action name="enterAddressesInfo" class="org.apache.struts2.showcase.conversion.AddressAction" method="input">
-			<result>enterAddressInfo.jsp</result>
+			<result>/WEB-INF/conversion/enterAddressInfo.jsp</result>
 		</action>
 		<action name="submitAddressesInfo" class="org.apache.struts2.showcase.conversion.AddressAction" method="submit">
-			<result>showAddressInfo.jsp</result>
-			<result name="input">enterAddressInfo.jsp</result>
+			<result>/WEB-INF/conversion/showAddressInfo.jsp</result>
+			<result name="input">/WEB-INF/conversion/enterAddressInfo.jsp</result>
 		</action>
 		<action name="showAddressJspCode">
-			<result type="plainText">/conversion/enterAddressInfo.jsp</result>
+			<result type="plainText">/WEB-INF/conversion/enterAddressInfo.jsp</result>
 		</action>
 		<action name="showAddressActionJavaCode">
-			<result type="plainText">/conversion/AddressAction.java.txt</result>
+			<result type="plainText">/WEB-INF/conversion/AddressAction.java.txt</result>
 		</action>
 		<action name="showAddressJavaCode">
-			<result type="plainText">/conversion/Address.java.txt</result>
+			<result type="plainText">/WEB-INF/conversion/Address.java.txt</result>
 		</action>
 		
 		
 		<!-- Example populating a List with Tiger 5 Enum  -->		
 		<action name="enterOperationEnumInfo" class="org.apache.struts2.showcase.conversion.OperationsEnumAction" method="input">
-			<result>enterOperations.jsp</result>
+			<result>/WEB-INF/conversion/enterOperations.jsp</result>
 		</action>
 		<action name="submitOperationEnumInfo" class="org.apache.struts2.showcase.conversion.OperationsEnumAction" method="submit">
-			<result>showOperations.jsp</result>
-			<result name="input">enterOperations.jsp</result>
+			<result>/WEB-INF/conversion/showOperations.jsp</result>
+			<result name="input">/WEB-INF/conversion/enterOperations.jsp</result>
 		</action>
 		<action name="showEnumJspCode">
-			<result type="plainText">/conversion/enterOperations.jsp</result>
+			<result type="plainText">/WEB-INF/conversion/enterOperations.jsp</result>
 		</action>
 		<action name="showOperationsEnumJavaCode">
-			<result type="plainText">/conversion/OperationsEnum.java.txt</result>
+			<result type="plainText">/WEB-INF/conversion/OperationsEnum.java.txt</result>
 		</action>
 		<action name="showOperationEnumActionJavaCode">
-			<result type="plainText">/conversion/OperationsEnumAction.java.txt</result>
+			<result type="plainText">/WEB-INF/conversion/OperationsEnumAction.java.txt</result>
 		</action>
 		<action name="showEnumTypeConverterJavaCode">
-			<result type="plainText">/conversion/EnumTypeConverter.java.txt</result>
+			<result type="plainText">/WEB-INF/conversion/EnumTypeConverter.java.txt</result>
 		</action>
 		<action name="showOperationsEnumActionConversionProperties">
-			<result type="plainText">/conversion/OperationsEnumActionConversion.txt</result>
+			<result type="plainText">/WEB-INF/conversion/OperationsEnumActionConversion.txt</result>
 		</action>
 		
 	</package>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/resources/struts-fileupload.xml
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/resources/struts-fileupload.xml b/apps/showcase/src/main/resources/struts-fileupload.xml
index 7107182..5a81f61 100644
--- a/apps/showcase/src/main/resources/struts-fileupload.xml
+++ b/apps/showcase/src/main/resources/struts-fileupload.xml
@@ -7,29 +7,29 @@
 	<package name="fileupload" extends="struts-default" namespace="/fileupload">
         
         <action name="upload" class="org.apache.struts2.showcase.fileupload.FileUploadAction" method="input">
-			<result>upload.jsp</result>
+			<result>/WEB-INF/fileupload/upload.jsp</result>
 		</action>
 
         <action name="doUpload" class="org.apache.struts2.showcase.fileupload.FileUploadAction" method="upload">
-        	<result name="input">upload.jsp</result>
-			<result>upload-success.jsp</result>
+        	<result name="input">/WEB-INF/fileupload/upload.jsp</result>
+			<result>/WEB-INF/fileupload/upload-success.jsp</result>
 		</action>
 		
 		<action name="multipleUploadUsingList">
-			<result>multipleUploadUsingList.jsp</result>
+			<result>/WEB-INF/fileupload/multipleUploadUsingList.jsp</result>
 		</action>
 		
 		<action name="doMultipleUploadUsingList" class="org.apache.struts2.showcase.fileupload.MultipleFileUploadUsingListAction" method="upload">
-			<result>multiple-success.jsp</result>
+			<result>/WEB-INF/fileupload/multiple-success.jsp</result>
 		</action>
 
 
 		<action name="multipleUploadUsingArray">
-			<result>multipleUploadUsingArray.jsp</result>
+			<result>/WEB-INF/fileupload/multipleUploadUsingArray.jsp</result>
 		</action>
 
 		<action name="doMultipleUploadUsingArray" class="org.apache.struts2.showcase.fileupload.MultipleFileUploadUsingArrayAction" method="upload">
-			<result>multiple-success.jsp</result>
+			<result>/WEB-INF/fileupload/multiple-success.jsp</result>
 		</action>
 
 

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/resources/struts-freemarker.xml
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/resources/struts-freemarker.xml b/apps/showcase/src/main/resources/struts-freemarker.xml
index ae9334f..8c70421 100644
--- a/apps/showcase/src/main/resources/struts-freemarker.xml
+++ b/apps/showcase/src/main/resources/struts-freemarker.xml
@@ -6,11 +6,11 @@
 <struts>
     <package name="freemarker" namespace="/freemarker" extends="struts-default">
         <action name="customFreemarkerManagerDemo">
-            <result type="freemarker">/freemarker/customFreemarkerManagerUsage.ftl</result>
+            <result type="freemarker">/WEB-INF/freemarker/customFreemarkerManagerUsage.ftl</result>
         </action>
         
         <action name="standardTags" class="org.apache.struts2.showcase.freemarker.StandardTagsAction">
-            <result type="freemarker">/freemarker/standardTags.ftl</result>
+            <result type="freemarker">/WEB-INF/freemarker/standardTags.ftl</result>
         </action>
     </package>
 </struts>	

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/resources/struts-hangman.xml
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/resources/struts-hangman.xml b/apps/showcase/src/main/resources/struts-hangman.xml
index 6c61a3d..69abdbf 100644
--- a/apps/showcase/src/main/resources/struts-hangman.xml
+++ b/apps/showcase/src/main/resources/struts-hangman.xml
@@ -6,19 +6,19 @@
 <struts>
 	<package name="hangman" extends="struts-default" namespace="/hangman">
 		<action name="hangmanAjax" class="startHangmanAction">
-			<result type="freemarker">/hangman/hangmanAjax.ftl</result>		
+			<result type="freemarker">/WEB-INF/hangman/hangmanAjax.ftl</result>
 		</action>
 		<action name="hangmanNonAjax" class="startHangmanAction">
-			<result type="freemarker">/hangman/hangmanNonAjax.ftl</result>
+			<result type="freemarker">/WEB-INF/hangman/hangmanNonAjax.ftl</result>
 		</action>
 		<action name="test">
 			<result type="freemarker">/hangman/test.ftl</result>
 		</action>
 		<action name="guessCharacter" class="guessCharacterAction">
-			<result type="freemarker">/hangman/blank.ftl</result>
+			<result type="freemarker">/WEB-INF/hangman/blank.ftl</result>
 		</action>
 		<action name="guessCharacterNonAjax" class="guessCharacterAction">
-			<result type="freemarker">/hangman/hangmanNonAjax.ftl</result>
+			<result type="freemarker">/WEB-INF/hangman/hangmanNonAjax.ftl</result>
 		</action>
 	</package>
 	
@@ -26,19 +26,19 @@
 	
 	<package name="hangman-ajax" extends="struts-default" namespace="/hangman/ajax">
 		<action name="blank">
-			<result type="freemarker">/hangman/blank.ftl</result>
+			<result type="freemarker">/WEB-INF/hangman/blank.ftl</result>
 		</action>
 		<action name="updateVocabCharacters" class="getUpdatedHangmanAction">
-			<result type="freemarker">/hangman/updateVocabCharacters.ftl</result>
+			<result type="freemarker">/WEB-INF/hangman/updateVocabCharacters.ftl</result>
 		</action>
 		<action name="updateCharacterAvailable" class="getUpdatedHangmanAction">
-			<result type="freemarker">/hangman/updateCharacterAvailable.ftl</result>
+			<result type="freemarker">/WEB-INF/hangman/updateCharacterAvailable.ftl</result>
 		</action>
 		<action name="updateScaffold" class="getUpdatedHangmanAction">
-			<result type="freemarker">/hangman/updateScaffold.ftl</result>
+			<result type="freemarker">/WEB-INF/hangman/updateScaffold.ftl</result>
 		</action>
 		<action name="updateGuessLeft" class="getUpdatedHangmanAction">
-			<result type="freemarker">/hangman/updateGuessLeft.ftl</result>
+			<result type="freemarker">/WEB-INF/hangman/updateGuessLeft.ftl</result>
 		</action>
 	</package>
 </struts>	

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/resources/struts-integration.xml
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/resources/struts-integration.xml b/apps/showcase/src/main/resources/struts-integration.xml
index 71d2776..d251f72 100644
--- a/apps/showcase/src/main/resources/struts-integration.xml
+++ b/apps/showcase/src/main/resources/struts-integration.xml
@@ -39,8 +39,8 @@
     <action name="saveGangster" class="org.apache.struts2.s1.Struts1Action">
       <param name="className">org.apache.struts2.showcase.integration.SaveGangsterAction</param>
       <param name="validate">true</param>
-      <result name="input">modelDriven.jsp</result>
-      <result>modelDrivenResult.jsp</result>
+      <result name="input">/WEB-INF/integration/modelDriven.jsp</result>
+      <result>/WEB-INF/integration/modelDrivenResult.jsp</result>
     </action>
 
   </package>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/resources/struts-interactive.xml
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/resources/struts-interactive.xml b/apps/showcase/src/main/resources/struts-interactive.xml
index 4c1d801..424aabb 100644
--- a/apps/showcase/src/main/resources/struts-interactive.xml
+++ b/apps/showcase/src/main/resources/struts-interactive.xml
@@ -9,7 +9,7 @@
             <interceptor-ref name="params"/>
             <interceptor-ref name="debugging"/>
             <interceptor-ref name="annotationWorkflow" />
-            <result>/interactive/demo.jsp</result>
+            <result>/WEB-INF/interactive/demo.jsp</result>
         </action>
         <action name="example" class="org.apache.struts2.showcase.action.ExampleAction" />
     </package>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/resources/struts-model-driven.xml
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/resources/struts-model-driven.xml b/apps/showcase/src/main/resources/struts-model-driven.xml
index cc085d1..dc9b839 100644
--- a/apps/showcase/src/main/resources/struts-model-driven.xml
+++ b/apps/showcase/src/main/resources/struts-model-driven.xml
@@ -7,12 +7,12 @@
 	<package name="modelDriven" extends="struts-default" namespace="/modelDriven">
 	    <!-- Diplay entry page that uses Model-Driven technique -->
 		<action name="modelDriven" class="org.apache.struts2.showcase.modelDriven.ModelDrivenAction" method="input">
-			<result>modelDriven.jsp</result>
+			<result>/WEB-INF/modelDriven/modelDriven.jsp</result>
 		</action>
 		
 		<!-- Display the result page whose content is populated using the Model-Driven technique -->
 		<action name="modelDrivenResult" class="org.apache.struts2.showcase.modelDriven.ModelDrivenAction">
-			<result>modelDrivenResult.jsp</result>
+			<result>/WEB-INF/modelDriven/modelDrivenResult.jsp</result>
 		</action>
 	</package>
 </struts>	

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/resources/struts-tags-non-ui.xml
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/resources/struts-tags-non-ui.xml b/apps/showcase/src/main/resources/struts-tags-non-ui.xml
index 20c5a8d..c296fd2 100644
--- a/apps/showcase/src/main/resources/struts-tags-non-ui.xml
+++ b/apps/showcase/src/main/resources/struts-tags-non-ui.xml
@@ -11,19 +11,19 @@
 	
 	<package name="actionTag" extends="struts-default" namespace="/tags/non-ui/actionTag">
 		<action name="showActionTagDemo" class="org.apache.struts2.showcase.tag.nonui.actiontag.ActionTagDemo" method="show">
-			<result>/tags/non-ui/actionTag/showActionTagDemo.jsp</result>
+			<result>/WEB-INF/tags/non-ui/actionTag/showActionTagDemo.jsp</result>
 		</action>
 		<action name="includePage" class="org.apache.struts2.showcase.tag.nonui.actiontag.ActionTagDemo" method="doInclude">
-			<result>/tags/non-ui/actionTag/includedPage.jsp</result>
+			<result>/WEB-INF/tags/non-ui/actionTag/includedPage.jsp</result>
 		</action>
 		<action name="includePage2">
-			<result>/tags/non-ui/actionTag/includedPage2.jsp</result>
+			<result>/WEB-INF/tags/non-ui/actionTag/includedPage2.jsp</result>
 		</action>
 		<action name="includePage3">
-			<result>/tags/non-ui/actionTag/includedPage3.jsp</result>
+			<result>/WEB-INF/tags/non-ui/actionTag/includedPage3.jsp</result>
 		</action>
 		<action name="lookAtSource">
-			<result type="plainText">/tags/non-ui/actionTag/showActionTagDemo.jsp</result>
+			<result type="plainText">/WEB-INF/tags/non-ui/actionTag/showActionTagDemo.jsp</result>
 		</action>
 	</package>
 	
@@ -33,11 +33,11 @@
 	
 	<package name="iteratorGeneratorTag" extends="struts-default" namespace="/tags/non-ui/iteratorGeneratorTag">
 		<action name="showGeneratorTagDemo" class="org.apache.struts2.showcase.tag.nonui.iteratortag.IteratorGeneratorTagDemo" method="input">
-			<result>/tags/non-ui/iteratorTag/showIteratorGeneratorTagDemo.jsp</result>
+			<result>/WEB-INF/tags/non-ui/iteratorTag/showIteratorGeneratorTagDemo.jsp</result>
 		</action>
 		<action name="submitGeneratorTagDemo" class="org.apache.struts2.showcase.tag.nonui.iteratortag.IteratorGeneratorTagDemo" method="submit">
-			<result name="input">/tags/non-ui/iteratorTag/showIteratorGeneratorTagDemo.jsp</result>
-			<result>/tags/non-ui/iteratorTag/iteratorGeneratorTagDemoResult.jsp</result>
+			<result name="input">/WEB-INF/tags/non-ui/iteratorTag/showIteratorGeneratorTagDemo.jsp</result>
+			<result>/WEB-INF/tags/non-ui/iteratorTag/iteratorGeneratorTagDemoResult.jsp</result>
 		</action>
 	</package>
 	
@@ -47,11 +47,11 @@
 	<!-- ========================================== -->
 	<package name="appendIteratorTag" extends="struts-default" namespace="/tags/non-ui/appendIteratorTag">
 		<action name="showAppendTagDemo" class="org.apache.struts2.showcase.tag.nonui.iteratortag.AppendIteratorTagDemo" method="input">
-			<result>/tags/non-ui/iteratorTag/showAppendIteratorTagDemo.jsp</result>
+			<result>/WEB-INF/tags/non-ui/iteratorTag/showAppendIteratorTagDemo.jsp</result>
 		</action>
 		<action name="submitAppendTagDemo" class="org.apache.struts2.showcase.tag.nonui.iteratortag.AppendIteratorTagDemo" method="submit">
-			<result name="input">/tag/non-ui/iteratorTag/showAppendIteratorTagDemo.jsp</result>
-			<result>/tags/non-ui/iteratorTag/appendIteratorTagDemoResult.jsp</result>
+			<result name="input">/WEB-INF/tags/non-ui/iteratorTag/showAppendIteratorTagDemo.jsp</result>
+			<result>/WEB-INF/tags/non-ui/iteratorTag/appendIteratorTagDemoResult.jsp</result>
 		</action>
 	</package>
 	
@@ -61,11 +61,11 @@
 	<!-- ========================================= -->
 	<package name="mergeIteratorTag" extends="struts-default" namespace="/tags/non-ui/mergeIteratorTag">
 		<action name="showMergeTagDemo" class="org.apache.struts2.showcase.tag.nonui.iteratortag.MergeIteratorTagDemo" method="input">
-			<result>/tags/non-ui/iteratorTag/showMergeIteratorTagDemo.jsp</result>
+			<result>/WEB-INF/tags/non-ui/iteratorTag/showMergeIteratorTagDemo.jsp</result>
 		</action>
 		<action name="submitMergeTagDemo" class="org.apache.struts2.showcase.tag.nonui.iteratortag.MergeIteratorTagDemo" method="submit">
-			<result name="input">/tags/non-ui/iteratorTag/showMergeIteratorTagDemo.jsp</result>
-			<result>/tags/non-ui/iteratorTag/mergeIteratorTagDemoResult.jsp</result>
+			<result name="input">/WEB-INF/tags/non-ui/iteratorTag/showMergeIteratorTagDemo.jsp</result>
+			<result>/WEB-INF/tags/non-ui/iteratorTag/mergeIteratorTagDemoResult.jsp</result>
 		</action>
 	</package>
 	
@@ -74,11 +74,11 @@
 	<!-- =========================================== -->
 	<package name="subsetIteratorTag" extends="struts-default" namespace="/tags/non-ui/subsetIteratorTag">
 		<action name="showSubsetTagDemo" class="org.apache.struts2.showcase.tag.nonui.iteratortag.SubsetIteratorTagDemo" method="input">
-			<result>/tags/non-ui/iteratorTag/subsetIteratorTagDemo.jsp</result>
+			<result>/WEB-INF/tags/non-ui/iteratorTag/subsetIteratorTagDemo.jsp</result>
 		</action>
 		<action name="submitSubsetTagDemo" class="org.apache.struts2.showcase.tag.nonui.iteratortag.SubsetIteratorTagDemo" method="submit">
-			<result name="input">/tags/non-ui/iteratorTag/subsetIteratorTagDemo.jsp</result>
-			<result>/tags/non-ui/iteratorTag/subsetIteratorTagDemoResult.jsp</result>
+			<result name="input">/WEB-INF/tags/non-ui/iteratorTag/subsetIteratorTagDemo.jsp</result>
+			<result>/WEB-INF/tags/non-ui/iteratorTag/subsetIteratorTagDemoResult.jsp</result>
 		</action>
 	</package>
 	
@@ -87,28 +87,28 @@
 	<!-- ========================================= -->
 	<package name="actionPrefix" extends="struts-default" namespace="/tags/non-ui/actionPrefix">
 		<action name="actionPrefixExampleUsingFreemarker">
-			<result type="freemarker">/tags/non-ui/actionPrefix/actionPrefixExample.ftl</result>
+			<result type="freemarker">/WEB-INF/tags/non-ui/actionPrefix/actionPrefixExample.ftl</result>
 		</action>	
 		<action name="submit" class="org.apache.struts2.showcase.tag.nonui.actionPrefix.SubmitAction">
-			<result type="freemarker">/tags/non-ui/actionPrefix/normalSubmit.ftl</result>
+			<result type="freemarker">/WEB-INF/tags/non-ui/actionPrefix/normalSubmit.ftl</result>
 		</action>
 		<action name="submit" class="org.apache.struts2.showcase.tag.nonui.actionPrefix.SubmitAction" method="alternateMethod">
-			<result name="methodPrefixResult" type="freemarker">/tags/non-ui/actionPrefix/methodPrefix.ftl</result>
+			<result name="methodPrefixResult" type="freemarker">/WEB-INF/tags/non-ui/actionPrefix/methodPrefix.ftl</result>
 		</action>
 		<action name="actionPrefix" class="org.apache.struts2.showcase.tag.nonui.actionPrefix.SubmitAction">
-			<result type="freemarker">/tags/non-ui/actionPrefix/actionPrefix.ftl</result>
+			<result type="freemarker">/WEB-INF/tags/non-ui/actionPrefix/actionPrefix.ftl</result>
 		</action>
 		<action name="redirectPrefix">
-			<result type="freemarker">/tags/non-ui/actionPrefix/redirectPrefix.ftl</result>
+			<result type="freemarker">/WEB-INF/tags/non-ui/actionPrefix/redirectPrefix.ftl</result>
 		</action>
 		<action name="redirectActionPrefix">
-			<result type="freemarker">/tags/non-ui/actionPrefix/redirectActionPrefix.ftl</result>
+			<result type="freemarker">/WEB-INF/tags/non-ui/actionPrefix/redirectActionPrefix.ftl</result>
 		</action>
         <action name="redirectActionPrefixAction">
             <result type="redirect">redirectActionPrefix</result>
         </action>
 		<action name="viewSource">
-			<result type="plainText">/tags/non-ui/actionPrefix/actionPrefixExample.ftl</result>
+			<result type="plainText">/WEB-INF/tags/non-ui/actionPrefix/actionPrefixExample.ftl</result>
 		</action>
 	</package>
 	
@@ -117,10 +117,10 @@
 	<!--  ========================================== -->
 	<package name="ifTagPackage" extends="struts-default" namespace="/tags/non-ui/ifTag">
 		<action name="testIfTagJsp">
-			<result>/tags/non-ui/ifTag/testIf.jsp</result>
+			<result>/WEB-INF/tags/non-ui/ifTag/testIf.jsp</result>
 		</action>
 		<action name="testIfTagFreemarker">
-			<result type="freemarker">/tags/non-ui/ifTag/testIf.ftl</result>
+			<result type="freemarker">/WEB-INF/tags/non-ui/ifTag/testIf.ftl</result>
 		</action>
 	</package>
 
@@ -129,7 +129,7 @@
     <!--  ========================================== -->
     <package name="debugTagPackage" extends="struts-default" namespace="/tags/non-ui">
         <action name="debugTagDemo">
-            <result>/tags/non-ui/debug.jsp</result>
+            <result>/WEB-INF/tags/non-ui/debug.jsp</result>
         </action>
     </package>
 </struts>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/resources/struts-tags-ui.xml
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/resources/struts-tags-ui.xml b/apps/showcase/src/main/resources/struts-tags-ui.xml
index 449958f..563fbc1 100644
--- a/apps/showcase/src/main/resources/struts-tags-ui.xml
+++ b/apps/showcase/src/main/resources/struts-tags-ui.xml
@@ -6,57 +6,57 @@
 <struts>
     <package name="ui-tags" extends="struts-default" namespace="/tags/ui">
         <action name="example" class="org.apache.struts2.showcase.UITagExample">
-            <result>example.jsp</result>
-            <result name="input">example.jsp</result>
+            <result>/WEB-INF/tags/ui/example.jsp</result>
+            <result name="input">/WEB-INF/tags/ui/example.jsp</result>
         </action>
         <action name="exampleSubmit" class="org.apache.struts2.showcase.UITagExample" method="doSubmit">
-        	<result>exampleSubmited.jsp</result>
-        	<result name="input">example.jsp</result>
+        	<result>/WEB-INF/tags/ui/exampleSubmited.jsp</result>
+        	<result name="input">/WEB-INF/tags/ui/example.jsp</result>
         </action>
         <action name="exampleVelocity" class="org.apache.struts2.showcase.UITagExample">
-            <result type="velocity">example.vm</result>
-            <result name="input" type="velocity">example.vm</result>
+            <result type="velocity">/WEB-INF/tags/ui/example.vm</result>
+            <result name="input" type="velocity">/WEB-INF/tags/ui/example.vm</result>
         </action>
         <action name="exampleSubmitVelocity" class="org.apache.struts2.showcase.UITagExample" method="doSubmit">
-        	<result type="velocity">exampleSubmited.vm</result>
-        	<result name="input" type="velocity">example.vm</result>
+        	<result type="velocity">/WEB-INF/tags/ui/exampleSubmited.vm</result>
+        	<result name="input" type="velocity">/WEB-INF/tags/ui/example.vm</result>
         </action>
 
         <action name="lotsOfOptiontransferselect" class="org.apache.struts2.showcase.LotsOfOptiontransferselectAction" method="input">
-        	<result>lotsOfOptiontransferselect.jsp</result>
+        	<result>/WEB-INF/tags/ui/lotsOfOptiontransferselect.jsp</result>
         </action>
         <action name="lotsOfOptiontransferselectSubmit" class="org.apache.struts2.showcase.LotsOfOptiontransferselectAction" method="submit">
-        	<result name="input">lotsOfOptiontransferselect.jsp</result>
-        	<result>lotsOfOptiontransferselectSubmit.jsp</result>
+        	<result name="input">/WEB-INF/tags/ui/lotsOfOptiontransferselect.jsp</result>
+        	<result>/WEB-INF/tags/ui/lotsOfOptiontransferselectSubmit.jsp</result>
         </action>
 
          <action name="moreSelects" class="org.apache.struts2.showcase.MoreSelectsAction" method="input">
-        	<result>moreSelects.jsp</result>
+        	<result>/WEB-INF/tags/ui/moreSelects.jsp</result>
         </action>
         <action name="moreSelectsSubmit" class="org.apache.struts2.showcase.MoreSelectsAction" method="submit">
-        	<result name="input">moreSelects.jsp</result>
-        	<result>moreSelectsSubmit.jsp</result>
+        	<result name="input">/WEB-INF/tags/ui/moreSelects.jsp</result>
+        	<result>/WEB-INF/tags/ui/moreSelectsSubmit.jsp</result>
         </action>
 
         <!--  START SNIPPET: treeExampleDynamicXWorkXml -->
 
         <action name="showDynamicTreeAction" class="org.apache.struts2.showcase.ShowDynamicTreeAction">
-        	<result>/tags/ui/treeExampleDynamic.jsp</result>
+        	<result>/WEB-INF/tags/ui/treeExampleDynamic.jsp</result>
         </action>
 
         <!--  END SNIPPET: treeExampleDynamicXWorkXml -->
 
         <action name="showDynamicAjaxTreeAction">
-            <result>/tags/ui/treeExampleAjaxDynamic.jsp</result>
+            <result>/WEB-INF/tags/ui/treeExampleAjaxDynamic.jsp</result>
         </action>
 
         <action name="showComponentTagExampleCode">
-        	<result type="plainText">/tags/ui/componentTagExample.jsp</result>
+        	<result type="plainText">/WEB-INF/tags/ui/componentTagExample.jsp</result>
         </action>
 
         <action name="actionTagExample">
-            <result>/tags/ui/actionTagExampleCalled.jsp</result>
-            <result name="input">/tags/ui/actionTagExampleCalling.jsp</result>
+            <result>/WEB-INF/tags/ui/actionTagExampleCalled.jsp</result>
+            <result name="input">/WEB-INF/tags/ui/actionTagExampleCalling.jsp</result>
         </action>
 	</package>
 
@@ -65,10 +65,10 @@
 	<package name="ui-tags-ajax" namespace="/tags/ui/ajax" extends="struts-default">
         <!-- Actions dealing with Tree Example  -->
         <action name="staticTreeSelectAction">
-        	<result>/tags/ui/staticTreeSelect.jsp</result>
+        	<result>/WEB-INF/tags/ui/staticTreeSelect.jsp</result>
         </action>
         <action name="dynamicTreeSelectAction" class="org.apache.struts2.showcase.DynamicTreeSelectAction">
-        	<result>/tags/ui/dynamicTreeSelect.jsp</result>
+        	<result>/WEB-INF/tags/ui/dynamicTreeSelect.jsp</result>
         </action>
     </package>
 

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/resources/struts-tiles.xml
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/resources/struts-tiles.xml b/apps/showcase/src/main/resources/struts-tiles.xml
index d749d77..9fbe025 100644
--- a/apps/showcase/src/main/resources/struts-tiles.xml
+++ b/apps/showcase/src/main/resources/struts-tiles.xml
@@ -21,7 +21,7 @@
         </action>
 
         <action name="sanity">
-            <result type="redirect">/tiles/layout.jsp</result>
+            <result type="redirect">/WEB-INF/tiles/layout.jsp</result>
             <result type="redirect" name="success">/tiles/layout.jsp</result>
         </action>
     </package>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/resources/struts-token.xml
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/resources/struts-token.xml b/apps/showcase/src/main/resources/struts-token.xml
index 06f3477..d43435b 100644
--- a/apps/showcase/src/main/resources/struts-token.xml
+++ b/apps/showcase/src/main/resources/struts-token.xml
@@ -7,56 +7,56 @@
 
         <action name="tokenPrepare!*" class="org.apache.struts2.showcase.token.TokenAction" method="{1}">
             <interceptor-ref name="defaultStack"/>
-            <result name="input">example1.jsp</result>
+            <result name="input">/WEB-INF/token/example1.jsp</result>
         </action>
 
         <action name="transfer" class="org.apache.struts2.showcase.token.TokenAction">
             <interceptor-ref name="defaultStack"/>
             <interceptor-ref name="token"/>
-            <result name="invalid.token">doublePost.jsp</result>
-            <result name="success">transferDone.jsp</result>
+            <result name="invalid.token">/WEB-INF/token/doublePost.jsp</result>
+            <result name="success">/WEB-INF/token/transferDone.jsp</result>
         </action>
 
 
 
         <action name="tokenPrepare2!*" class="org.apache.struts2.showcase.token.TokenAction" method="{1}">
             <interceptor-ref name="defaultStack"/>
-            <result name="input">example2.jsp</result>
+            <result name="input">/WEB-INF/token/example2.jsp</result>
         </action>
 
         <action name="transfer2" class="org.apache.struts2.showcase.token.TokenAction">
             <interceptor-ref name="defaultStack"/>
             <interceptor-ref name="token"/>
-            <result name="invalid.token">doublePost.jsp</result>
-            <result name="success" type="redirect">transferDone.jsp</result>
+            <result name="invalid.token">/WEB-INF/token/doublePost.jsp</result>
+            <result name="success" type="redirect">/WEB-INF/token/transferDone.jsp</result>
         </action>
 
 
 
         <action name="tokenPrepare3!*" class="org.apache.struts2.showcase.token.TokenAction" method="{1}">
             <interceptor-ref name="defaultStack"/>
-            <result name="input">example3.jsp</result>
+            <result name="input">/WEB-INF/token/example3.jsp</result>
         </action>
 
         <action name="transfer3" class="org.apache.struts2.showcase.token.TokenAction">
             <interceptor-ref name="defaultStack"/>
             <interceptor-ref name="tokenSession"/>
-            <result name="invalid.token">doublePost.jsp</result>
-            <result name="success" type="redirect">transferDone.jsp</result>
+            <result name="invalid.token">/WEB-INF/token/doublePost.jsp</result>
+            <result name="success" type="redirect">/WEB-INF/token/transferDone.jsp</result>
         </action>
 
 
         <action name="tokenPrepare4!*" class="org.apache.struts2.showcase.token.TokenAction" method="{1}">
             <interceptor-ref name="defaultStack"/>
             <interceptor-ref name="createSession"/> <!-- we must have a session when using freemarker and the @s.token tag -->
-            <result name="input" type="freemarker">example4.ftl</result>
+            <result name="input" type="freemarker">/WEB-INF/token/example4.ftl</result>
         </action>
 
         <action name="transfer4" class="org.apache.struts2.showcase.token.TokenAction">
             <interceptor-ref name="defaultStack"/>
             <interceptor-ref name="token"/>
-            <result name="invalid.token">doublePost.jsp</result>
-            <result name="success">transferDone.jsp</result>
+            <result name="invalid.token">/WEB-INF/token/doublePost.jsp</result>
+            <result name="success">/WEB-INF/token/transferDone.jsp</result>
         </action>
 
     </package>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/resources/struts-validation.xml
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/resources/struts-validation.xml b/apps/showcase/src/main/resources/struts-validation.xml
index 5351b1e..778a210 100755
--- a/apps/showcase/src/main/resources/struts-validation.xml
+++ b/apps/showcase/src/main/resources/struts-validation.xml
@@ -40,12 +40,12 @@
 		<!-- ======================== -->
 		
 		<action name="showFieldValidatorsExamples" class="org.apache.struts2.showcase.validation.FieldValidatorsExampleAction" method="input">
-			<result name="input" type="dispatcher">/validation/fieldValidatorsExample.jsp</result>
+			<result name="input" type="dispatcher">/WEB-INF/validation/fieldValidatorsExample.jsp</result>
 		</action>
 		
 		<action name="submitFieldValidatorsExamples" class="org.apache.struts2.showcase.validation.FieldValidatorsExampleAction" method="submit">
-			<result name="input" type="dispatcher">/validation/fieldValidatorsExample.jsp</result>
-			<result type="dispatcher">/validation/successFieldValidatorsExample.jsp</result>
+			<result name="input" type="dispatcher">/WEB-INF/validation/fieldValidatorsExample.jsp</result>
+			<result type="dispatcher">/WEB-INF/validation/successFieldValidatorsExample.jsp</result>
 		</action>
 		
 		
@@ -55,12 +55,12 @@
 		<!-- ============================ -->
 		
 		<action name="showNonFieldValidatorsExamples" class="org.apache.struts2.showcase.validation.NonFieldValidatorsExampleAction" method="input">
-			<result name="input">/validation/nonFieldValidatorsExample.jsp</result>		
+			<result name="input">/WEB-INF/validation/nonFieldValidatorsExample.jsp</result>
 		</action>
 		
 		<action name="submitNonFieldValidatorsExamples" class="org.apache.struts2.showcase.validation.NonFieldValidatorsExampleAction" method="submit">
-			<result name="input">/validation/nonFieldValidatorsExample.jsp</result>		
-			<result>/validation/successNonFieldValidatorsExample.jsp</result>
+			<result name="input">/WEB-INF/validation/nonFieldValidatorsExample.jsp</result>
+			<result>/WEB-INF/validation/successNonFieldValidatorsExample.jsp</result>
 		</action>
 		
 		
@@ -70,12 +70,12 @@
 		<!-- ========================== -->
 		
 		<action name="showVisitorValidatorsExamples" class="org.apache.struts2.showcase.validation.VisitorValidatorsExampleAction" method="input">
-			<result name="input">/validation/visitorValidatorsExample.jsp</result>
+			<result name="input">/WEB-INF/validation/visitorValidatorsExample.jsp</result>
 		</action>
 		
 		<action name="submitVisitorValidatorsExamples" class="org.apache.struts2.showcase.validation.VisitorValidatorsExampleAction" method="submit">
-			<result name="input">/validation/visitorValidatorsExample.jsp</result>
-			<result>/validation/successVisitorValidatorsExample.jsp</result>
+			<result name="input">/WEB-INF/validation/visitorValidatorsExample.jsp</result>
+			<result>/WEB-INF/validation/successVisitorValidatorsExample.jsp</result>
 		</action>
 
 
@@ -85,12 +85,12 @@
 		<!-- ========================== -->
 
 		<action name="clientSideValidationExample" class="org.apache.struts2.showcase.validation.FieldValidatorsExampleAction" method="input">
-			<result name="input">/validation/clientSideValidationExample.jsp</result>
+			<result name="input">/WEB-INF/validation/clientSideValidationExample.jsp</result>
 		</action>
 
 		<action name="submitClientSideValidationExample" class="org.apache.struts2.showcase.validation.FieldValidatorsExampleAction" method="submit">
-			<result name="input">/validation/clientSideValidationExample.jsp</result>
-			<result>/validation/successClientSideValidationExample.jsp</result>
+			<result name="input">/WEB-INF/validation/clientSideValidationExample.jsp</result>
+			<result>/WEB-INF/validation/successClientSideValidationExample.jsp</result>
 		</action>
 
 		<!-- =========================================== -->
@@ -109,16 +109,16 @@
 			<interceptor-ref name="store">
 				<param name="operationMode">RETRIEVE</param>
 			</interceptor-ref>
-			<result>/validation/storeErrorsAcrossRequestExample.jsp</result>
+			<result>/WEB-INF/validation/storeErrorsAcrossRequestExample.jsp</result>
 		</action>
 		<action name="applicationOk" class="org.apache.struts2.showcase.validation.SubmitApplication" method="applicationOk">
 			<interceptor-ref name="store">
 				<param name="operationMode">RETRIEVE</param>
 			</interceptor-ref>
-			<result>/validation/storeErrorsAcrossRequestOk.jsp</result>
+			<result>/WEB-INF/validation/storeErrorsAcrossRequestOk.jsp</result>
 		</action>
 		<action name="cancelApplication" class="org.apache.struts2.showcase.validation.SubmitApplication" method="cancelApplication">
-			<result>/validation/storeErrorsAcrossRequestCancel.jsp</result>
+			<result>/WEB-INF/validation/storeErrorsAcrossRequestCancel.jsp</result>
 		</action>
 		
     </package>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/resources/struts-wait.xml
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/resources/struts-wait.xml b/apps/showcase/src/main/resources/struts-wait.xml
index 521c2c7..8ea2911 100644
--- a/apps/showcase/src/main/resources/struts-wait.xml
+++ b/apps/showcase/src/main/resources/struts-wait.xml
@@ -9,8 +9,8 @@
         <action name="longProcess1" class="org.apache.struts2.showcase.wait.LongProcessAction">
             <interceptor-ref name="defaultStack"/>
             <interceptor-ref name="execAndWait"/>
-            <result name="wait">wait.jsp</result>
-            <result name="success">complete.jsp</result>
+            <result name="wait">/WEB-INF/wait/wait.jsp</result>
+            <result name="success">/WEB-INF/wait/complete.jsp</result>
         </action>
 
         <action name="longProcess2" class="org.apache.struts2.showcase.wait.LongProcessAction">
@@ -18,8 +18,8 @@
             <interceptor-ref name="execAndWait">
                 <param name="delay">2000</param>
             </interceptor-ref>
-            <result name="wait">wait.jsp</result>
-            <result name="success">complete.jsp</result>
+            <result name="wait">/WEB-INF/wait/wait.jsp</result>
+            <result name="success">/WEB-INF/wait/complete.jsp</result>
         </action>
 
         <action name="longProcess3" class="org.apache.struts2.showcase.wait.LongProcessAction">
@@ -28,8 +28,8 @@
                 <param name="delay">3000</param>
                 <param name="delaySleepInterval">1000</param>
             </interceptor-ref>
-            <result name="wait">wait.jsp</result>
-            <result name="success">complete.jsp</result>
+            <result name="wait">/WEB-INF/wait/wait.jsp</result>
+            <result name="success">/WEB-INF/wait/complete.jsp</result>
         </action>
 
     </package>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/resources/struts.xml
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/resources/struts.xml b/apps/showcase/src/main/resources/struts.xml
index 3c1ebf3..74c59c6 100644
--- a/apps/showcase/src/main/resources/struts.xml
+++ b/apps/showcase/src/main/resources/struts.xml
@@ -75,15 +75,15 @@
         <default-action-ref name="showcase" />
 
         <action name="showcase">
-            <result>showcase.jsp</result>
+            <result>../webapp/WEB-INF/showcase.jsp</result>
         </action>
 
         <action name="viewSource" class="org.apache.struts2.showcase.source.ViewSourceAction">
-            <result>viewSource.jsp</result>
+            <result>../webapp/WEB-INF/viewSource.jsp</result>
         </action>
 
         <action name="date" class="org.apache.struts2.showcase.DateAction" method="browse">
-            <result name="success">/date.jsp</result>
+            <result name="success">/WEB-INF/date.jsp</result>
         </action>
 
     </package>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/actionchaining/actionChainingResult.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/actionchaining/actionChainingResult.jsp b/apps/showcase/src/main/webapp/WEB-INF/actionchaining/actionChainingResult.jsp
new file mode 100644
index 0000000..87566e8
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/actionchaining/actionChainingResult.jsp
@@ -0,0 +1,23 @@
+<%@taglib prefix="s" uri="/struts-tags" %>
+
+<html>
+<head>
+    <title>Struts2 Showcase - Action Chaining Result</title>
+</head>
+<body>
+    <div class="page-header">
+	    <h1>Action Chaining Result:</h1>
+    </div>
+
+    <div class="container-fluid">
+	    <div class="row-fluid">
+		    <div class="span12">
+		        <s:label label="Action Chain 1 Property 1" name="actionChain1Property1" /><br/>
+                <s:label label="Action Chain 2 Property 1" name="actionChain2Property1" /><br/>
+                <s:label label="Action Chain 3 Property 1" name="actionChain3Property1" /><br/>
+		    </div>
+	    </div>
+    </div>
+</body>
+</html>
+

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/ajax/AjaxResult.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/ajax/AjaxResult.jsp b/apps/showcase/src/main/webapp/WEB-INF/ajax/AjaxResult.jsp
new file mode 100644
index 0000000..3dc8521
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/ajax/AjaxResult.jsp
@@ -0,0 +1,12 @@
+<%@ taglib prefix="s" uri="/struts-tags" %>
+
+<%
+    request.setAttribute("decorator", "none");
+    response.setHeader("Cache-Control","no-cache"); //HTTP 1.1
+    response.setHeader("Pragma","no-cache"); //HTTP 1.0
+    response.setDateHeader ("Expires", 0); //prevents caching at the proxy server
+%>
+
+Result: <s:property value="count"/> @ <s:property value="serverTime"/> 
+<br/>
+<s:property value="data"/>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/ajax/AjaxResult2.js
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/ajax/AjaxResult2.js b/apps/showcase/src/main/webapp/WEB-INF/ajax/AjaxResult2.js
new file mode 100644
index 0000000..537c390
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/ajax/AjaxResult2.js
@@ -0,0 +1,2 @@
+alert('This JavaScript currently being evaluated is the result...');
+alert('... of an action executed on the server!');

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/ajax/AjaxResult3.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/ajax/AjaxResult3.jsp b/apps/showcase/src/main/webapp/WEB-INF/ajax/AjaxResult3.jsp
new file mode 100644
index 0000000..45cb2b0
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/ajax/AjaxResult3.jsp
@@ -0,0 +1,12 @@
+<%@ taglib prefix="s" uri="/struts-tags" %>
+
+<%
+    request.setAttribute("decorator", "none");
+    response.setHeader("Cache-Control","no-cache"); //HTTP 1.1
+    response.setHeader("Pragma","no-cache"); //HTTP 1.0
+    response.setDateHeader ("Expires", 0); //prevents caching at the proxy server
+%>
+
+Result: <s:property value="count"/> @ <s:property value="serverTime"/>
+
+The value you entered was: <s:property value="data"/><br/>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/ajax/autocompleter/index.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/ajax/autocompleter/index.jsp b/apps/showcase/src/main/webapp/WEB-INF/ajax/autocompleter/index.jsp
new file mode 100644
index 0000000..c67257f
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/ajax/autocompleter/index.jsp
@@ -0,0 +1,178 @@
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<%@ taglib prefix="s" uri="/struts-tags" %>
+<%@ taglib prefix="sx" uri="/struts-dojo-tags" %>
+<html>
+<head>
+    <title>Ajax Examples</title>
+
+    <!--// START SNIPPET: common-include-->
+    <jsp:include page="/WEB-INF/ajax/commonInclude.jsplude.jsp"/>
+    <!--// END SNIPPET: common-include-->
+</head>
+
+<script type="text/javascript">
+   dojo.event.topic.subscribe("/before", function(event, widget){
+      alert('inside a topic event. before request');
+      //event: set event.cancel = true, to cancel request
+      //widget: widget that published the topic
+   });
+   
+   dojo.event.topic.subscribe("/after", function(data, request, widget){
+      alert('inside a topic event. after request');
+      //data : json object from request
+      //request: XMLHttpRequest object
+      //widget: widget that published the topic
+   });
+   
+   dojo.event.topic.subscribe("/value", function(error, request, widget){
+      alert('inside a topic event. on error');
+      //error : error object (error.message has the error message)
+      //request: XMLHttpRequest object
+      //widget: widget that published the topic
+   });
+   
+   function showKey() {
+      var autoCompleter = dojo.widget.byId('jsauto');
+      alert(autoCompleter.getSelectedKey());
+   }
+   
+   function showValue() {
+      var autoCompleter = dojo.widget.byId('jsauto');
+      alert(autoCompleter.getSelectedValue());
+   }
+</script>
+
+<body>
+
+
+<s:url var="jsonList" value="/JSONList.action"/>
+
+Using a JSON list returned from an action (href="/JSONList.action"), without autoComplete (autoComplete="false"), use indicator, search substring (searchType="substring")
+<br/>
+<sx:autocompleter 
+    indicator="indicator1" 
+    href="%{jsonList}" 
+    cssStyle="width: 200px;" 
+    autoComplete="false" 
+    searchType="substring"
+    name="state"/>
+<img id="indicator1" src="${pageContext.request.contextPath}/images/indicator.gif" alt="Loading..." style="display:none"/>
+
+<br/><br/>
+
+Reload on type (loadOnTextChange="true"), after 3 characters (loadMinimumCount="3", it is "3" by default), without the down arrow button (showDownArrow="false")
+<br/>
+<sx:autocompleter  
+    id="auto2"
+    indicator="indicator" 
+    href="%{jsonList}" 
+    cssStyle="width: 200px;" 
+    autoComplete="false" 
+    loadOnTextChange="true"
+    loadMinimumCount="3"
+    showDownArrow="false"/>
+<img id="indicator" src="${pageContext.request.contextPath}/images/indicator.gif" alt="Loading..." style="display:none"/>
+
+<br/><br/>
+
+Using a JSON list returned from an action (href="/JSONList.action"), with autoComplete (autoComplete="true")
+<br/>
+<sx:autocompleter  
+    name="auto3"
+    href="%{#jsonList}" 
+    cssStyle="width: 200px;" 
+    autoComplete="true" />
+
+<br/><br/>
+
+Using a local list (list="%{'apple','banana','grape','pear'}")
+<br/>
+<sx:autocompleter list="{'apple','banana','grape','pear'}" cssStyle="width: 150px;"/>
+
+<br/><br/>
+
+Force valid options (forceValidOption="true")
+<br/>
+<sx:autocompleter  
+    name="auto4"
+    href="%{#jsonList}" 
+    cssStyle="width: 200px;" 
+    forceValidOption="true"/>
+
+<br/>
+<br/>
+
+Make dropdown's height to 180px  (dropdownHeight="180")
+<br/>
+<sx:autocompleter
+    name="auto5"
+    href="%{#jsonList}" 
+    cssStyle="width: 200px;" 
+    dropdownHeight="180"/>
+
+<br/>
+<br/>
+
+Disabled combobox (disabled="true")
+<br/>
+<sx:autocompleter
+    name="auto6"
+    href="%{#jsonList}" 
+    cssStyle="width: 200px;" 
+    disabled="true"/>
+
+<br/>
+<br/>
+
+
+<s:url var="autoex" action="AutocompleterExample" namespace="/nodecorate"/>
+
+Link two autocompleter elements. When the selected value in 'Autocompleter 1' changes, the available values in 'Autocompleter 2' will change also.
+<br/>
+<form id="selectForm">
+  <p>
+    Autocompleter 1 
+    <sx:autocompleter  
+        name="select" 
+        list="{'fruits','colors'}" 
+        value="colors"
+        valueNotifyTopics="/Changed"
+        forceValidOption="true"/>
+  </p>
+</form>
+Autocompleter 2 
+<sx:autocompleter
+     name="auto8"
+     href="%{#autoex}"
+     autoComplete="false"
+     formId="selectForm"
+     listenTopics="/Changed"
+     forceValidOption="true" />
+
+<br/><br/>
+
+Publish before/after/value notify topics
+<br/>
+<sx:autocompleter 
+    name="auto9"
+    href="%{#jsonList}" 
+    listenTopics="/reload"
+    beforeNotifyTopics="/before"
+    afterNotifyTopics="/after"
+    valueNotifyTopics="/value"
+    cssStyle="width: 200px;" />
+<s:submit theme="simple" value="Reload Values" onclick="dojo.event.topic.publish('/reload')"/>
+
+<br/><br/>
+
+Get values using JavaScript
+<br/>
+<sx:autocompleter  href="%{#jsonList}"  id="jsauto" name="state"/>
+<s:submit theme="simple" value="Show Key" onclick="showKey()"/>
+<s:submit theme="simple" value="Show Value" onclick="showValue()"/>
+
+<br/><br/>
+
+<s:include value="../footer.jsp"/>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/ajax/bind/index.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/ajax/bind/index.jsp b/apps/showcase/src/main/webapp/WEB-INF/ajax/bind/index.jsp
new file mode 100644
index 0000000..046006c
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/ajax/bind/index.jsp
@@ -0,0 +1,61 @@
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<%@ taglib prefix="s" uri="/struts-tags" %>
+<%@ taglib prefix="sx" uri="/struts-dojo-tags" %>
+
+<html>
+<head>
+    <title>Bind Examples</title>
+    <jsp:include page="/WEB-INF/ajax/commonInclude.jsp"/>
+</head>
+
+<script type="text/javascript">
+   dojo.event.topic.subscribe("/before", function(event, widget){
+      alert('inside a topic event. before request');
+      //event: set event.cancel = true, to cancel request
+      //widget: widget that published the topic
+   });
+   
+   dojo.event.topic.subscribe("/after", function(data, request, widget){
+      alert('inside a topic event. after request');
+      //data : text returned from request
+      //request: XMLHttpRequest object
+      //widget: widget that published the topic
+   });
+</script>
+
+<body>
+
+<div id="div1">Div 1</div>
+<s:url var="ajaxTest" value="/AjaxTest.action" />
+
+
+<br/><br/>
+<p>
+    1. Attach to "onclick" event on button. Update content of Div 1. Use with indicator.
+    <img id="indicator" src="${pageContext.request.contextPath}/images/indicator.gif" alt="Loading..." style="display:none"/>
+    <sx:bind href="%{#ajaxTest}" sources="button" targets="div1" events="onclick" indicator="indicator" />
+     <br/>
+    <s:submit theme="simple" type="submit" value="submit" id="button"/>
+</p>
+<br/><br/>
+<p>
+    2. Attach to "onmouseover", and "onclick" event on Area below and update content of Div1, highlight targets with green color
+    <sx:bind id="ex2" href="%{#ajaxTest}" sources="div2" targets="div1" events="onmouseover,onclick" highlightColor="green"/>
+    <div id="div2" style="width: 300px; height: 50px; border: 1px solid black">
+        Mouse Over or Click Here!
+    </div>
+</p>
+<br/><br/>
+<p>
+    3. Attach to "onkeydown" event on Textbox below update content of Div1. Publish topics.
+    <sx:bind id="ex4" href="%{#ajaxTest}" sources="txt1" targets="div1" events="onkeydown" beforeNotifyTopics="/before" afterNotifyTopics="/after" />
+    <br/>
+    <s:textfield id="txt1"/>
+</p>
+
+
+<br/><br/>
+<s:include value="../footer.jsp"/>
+
+</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/ajax/commonInclude.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/ajax/commonInclude.jsp b/apps/showcase/src/main/webapp/WEB-INF/ajax/commonInclude.jsp
new file mode 100644
index 0000000..8be4022
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/ajax/commonInclude.jsp
@@ -0,0 +1,5 @@
+<%@ taglib prefix="s" uri="/struts-tags" %>
+<%@ taglib prefix="sx" uri="/struts-dojo-tags" %>
+<!--// START SNIPPET: common-include-->
+<sx:head cache="true"/>
+<!--// END SNIPPET: common-include-->

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/ajax/footer.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/ajax/footer.jsp b/apps/showcase/src/main/webapp/WEB-INF/ajax/footer.jsp
new file mode 100644
index 0000000..5521cb4
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/ajax/footer.jsp
@@ -0,0 +1,8 @@
+<%@taglib prefix="s" uri="/struts-tags" %>
+
+<hr/>
+
+<s:url var="backToAjaxExamples" value="../../index.jsp" />
+
+<s:a href="%{backToAjaxExamples}">Back To AJAX Examples</s:a>&nbsp;
+


[07/10] Moves showcase related JSPs under WEB-INF

Posted by lu...@apache.org.
http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/conversion/showOperations.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/conversion/showOperations.jsp b/apps/showcase/src/main/webapp/WEB-INF/conversion/showOperations.jsp
new file mode 100644
index 0000000..4cb6679
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/conversion/showOperations.jsp
@@ -0,0 +1,21 @@
+<%@taglib prefix="s" uri="/struts-tags" %>
+<html>
+<head>
+	<title>Struts2 Showcase - Conversion - Tiger 5 Enum</title>
+</head>
+<body>
+<div class="page-header">
+	<h1>Conversion - Tiger 5 Enum</h1>
+</div>
+
+<div class="container-fluid">
+	<div class="row-fluid">
+		<div class="span12">
+			<s:iterator value="%{selectedOperations}" status="stat">
+				<s:property value="%{top.name()}" /><br/>
+			</s:iterator>
+		</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/conversion/showPersonInfo.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/conversion/showPersonInfo.jsp b/apps/showcase/src/main/webapp/WEB-INF/conversion/showPersonInfo.jsp
new file mode 100644
index 0000000..24f9760
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/conversion/showPersonInfo.jsp
@@ -0,0 +1,24 @@
+<%@taglib prefix="s" uri="/struts-tags" %>
+<html>
+<head>
+	<title>Struts2 Showcase - Conversion - Populate Object into Struts' action List</title>
+</head>
+<body>
+<div class="page-header">
+	<h1>Conversion - Populate Object into Struts' action List</h1>
+</div>
+
+<div class="container-fluid">
+	<div class="row-fluid">
+		<div class="span12">
+
+			<s:iterator value="persons" status="status">
+                 <s:label label="%{'SET '+#status.index+' Name'}" value="%{name}" /><br/>
+                 <s:label label="%{'SET '+#status.index+' Age'}" value="%{age}" /><br/>
+			</s:iterator>
+		</div>
+	</div>
+</div>
+</body>
+</html>
+

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/customTemplateDir/customTheme/ftlCustomTemplate.ftl
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/customTemplateDir/customTheme/ftlCustomTemplate.ftl b/apps/showcase/src/main/webapp/WEB-INF/customTemplateDir/customTheme/ftlCustomTemplate.ftl
new file mode 100644
index 0000000..4152334
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/customTemplateDir/customTheme/ftlCustomTemplate.ftl
@@ -0,0 +1,7 @@
+<div style="background-color:yellow;">
+<p>
+Freemarker Custom Template -
+parameter 'paramName' - ${parameters.paramName}
+</p>
+</div>
+

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/customTemplateDir/customTheme/jspCustomTemplate.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/customTemplateDir/customTheme/jspCustomTemplate.jsp b/apps/showcase/src/main/webapp/WEB-INF/customTemplateDir/customTheme/jspCustomTemplate.jsp
new file mode 100644
index 0000000..311c329
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/customTemplateDir/customTheme/jspCustomTemplate.jsp
@@ -0,0 +1,8 @@
+<%@taglib prefix="s" uri="/struts-tags" %>
+
+<div style="background-color:yellow;">
+<p>
+JSP Custom Template - 
+parameter 'paramName' - <s:property value="%{top.parameters.paramName}" />
+</p>
+</div>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/date.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/date.jsp b/apps/showcase/src/main/webapp/WEB-INF/date.jsp
new file mode 100644
index 0000000..400cd6d
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/date.jsp
@@ -0,0 +1,2 @@
+<%@ taglib prefix="s" uri="/struts-tags" %>
+<s:date name="now"/>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/empmanager/editEmployee.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/empmanager/editEmployee.jsp b/apps/showcase/src/main/webapp/WEB-INF/empmanager/editEmployee.jsp
new file mode 100644
index 0000000..aff2c3e
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/empmanager/editEmployee.jsp
@@ -0,0 +1,56 @@
+<%@ taglib prefix="s" uri="/struts-tags" %>
+<%@ taglib prefix="sx" uri="/struts-dojo-tags" %>
+<html>
+<head>
+	<s:if test="currentEmployee!=null">
+		<s:text var="title" name="item.edit"><s:param><s:text name="employee"/></s:param></s:text>
+	</s:if>
+	<s:else>
+		<s:text var="title" name="item.create"><s:param><s:text name="employee"/></s:param></s:text>
+	</s:else>
+	<title>Struts2 Showcase - CRUD Example - <s:property value="#title"/></title>
+	<s:head/>
+	<sx:head/>
+</head>
+<body>
+<div class="page-header">
+	<h1><s:property value="#title"/></h1>
+</div>
+
+<div class="container-fluid">
+	<div class="row-fluid">
+		<div class="span3">
+			<ul class="nav nav-tabs nav-stacked">
+				<li><s:url var="url" namespace="/employee" action="list"/><s:a href="%{url}">List available Employees</s:a></li>
+				<li class="active"><s:url var="url" namespace="/employee" action="edit"/><s:a href="%{url}">Create/Edit Employee</s:a></li>
+				<li><s:url var="url" namespace="/skill" action="list"/><s:a href="%{url}">List available Skills</s:a></li>
+				<li><s:url var="url" namespace="/skill" action="edit"/><s:a href="%{url}">Create/Edit Skill</s:a></li>
+			</ul>
+		</div>
+		<div class="span9">
+
+			<s:action var="skillAction" namespace="/skill" name="list"/>
+
+			<s:form name="editForm" action="save">
+				<s:textfield label="Employee Id" name="currentEmployee.empId"/>
+				<s:textfield label="%{getText('employee.firstName')}" name="currentEmployee.firstName"/>
+				<s:textfield label="%{getText('employee.lastName')}" name="currentEmployee.lastName"/>
+				<sx:datetimepicker label="Birthdate" name="currentEmployee.birthDate"/>
+				<s:textfield label="Salary" name="currentEmployee.salary" value="%{getText('format.number',{currentEmployee.salary})}" />
+				<s:checkbox fieldValue="true" label="Married" name="currentEmployee.married"/>
+				<s:combobox list="availablePositions" label="Position" name="currentEmployee.position"/>
+				<s:select list="#skillAction.availableItems" listKey="name" label="Main Skill"
+				          name="currentEmployee.mainSkill.name"/>
+				<s:select list="#skillAction.availableItems" listKey="name" listValue="description" label="Other Skills"
+				          name="selectedSkills" multiple="true"/>
+				<s:password label="Password" name="currentEmployee.password"/>
+				<s:radio list="availableLevels" name="currentEmployee.level"/>
+				<s:textarea label="Comment" name="currentEmployee.comment" cols="50" rows="3"/>
+				<s:submit value="%{getText('save')}"  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/empmanager/editSkill.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/empmanager/editSkill.jsp b/apps/showcase/src/main/webapp/WEB-INF/empmanager/editSkill.jsp
new file mode 100644
index 0000000..f47390e
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/empmanager/editSkill.jsp
@@ -0,0 +1,42 @@
+<%@taglib prefix="s" uri="/struts-tags" %>
+<html>
+<head>
+	<s:if test="currentSkill!=null">
+		<s:set name="submitType" value="'update'"/>
+		<s:text id="title" name="item.edit"><s:param><s:text name="skill"/></s:param></s:text>
+	</s:if>
+	<s:else>
+		<s:set name="submitType" value="'create'"/>
+		<s:text var="title" name="item.create"><s:param><s:text name="skill"/></s:param></s:text>
+	</s:else>
+	<title>Struts2 Showcase - CRUD Example - <s:property value="#title"/></title>
+</head>
+<body>
+<div class="page-header">
+	<h1><s:property value="#title"/></h1>
+</div>
+
+<div class="container-fluid">
+	<div class="row-fluid">
+		<div class="span3">
+			<ul class="nav nav-tabs nav-stacked">
+				<li><s:url var="url" namespace="/employee" action="list"/><s:a href="%{url}">List available Employees</s:a></li>
+				<li><s:url var="url" namespace="/employee" action="edit"/><s:a href="%{url}">Create/Edit Employee</s:a></li>
+				<li><s:url var="url" namespace="/skill" action="list"/><s:a href="%{url}">List available Skills</s:a></li>
+				<li class="active"><s:url var="url" namespace="/skill" action="edit"/><s:a href="%{url}">Create/Edit Skill</s:a></li>
+			</ul>
+		</div>
+		<div class="span9">
+
+			<s:form action="save">
+				<s:textfield label="%{getText('skill.name')}" name="currentSkill.name"/>
+				<s:textfield label="%{getText('skill.description')}" name="currentSkill.description"/>
+				<%--s:submit name="%{#submitType}" value="%{getText('save')}" /--%>
+				<s:submit value="%{getText('save')}" 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/empmanager/index.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/empmanager/index.jsp b/apps/showcase/src/main/webapp/WEB-INF/empmanager/index.jsp
new file mode 100644
index 0000000..0da9091
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/empmanager/index.jsp
@@ -0,0 +1 @@
+<% response.sendRedirect("../employee/list.action"); %>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/empmanager/listEmployees.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/empmanager/listEmployees.jsp b/apps/showcase/src/main/webapp/WEB-INF/empmanager/listEmployees.jsp
new file mode 100644
index 0000000..1991924
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/empmanager/listEmployees.jsp
@@ -0,0 +1,43 @@
+<%@taglib prefix="s" uri="/struts-tags" %>
+<html>
+<head>
+	<title>Struts2 Showcase - CRUD Example</title>
+</head>
+<body>
+<div class="page-header">
+	<h1>Available Employees</h1>
+</div>
+
+<div class="container-fluid">
+	<div class="row-fluid">
+		<div class="span3">
+			<ul class="nav nav-tabs nav-stacked">
+				<li class="active"><s:url var="url" namespace="/employee" action="list"/><s:a href="%{url}">List available Employees</s:a></li>
+				<li><s:url var="url" namespace="/employee" action="edit"/><s:a href="%{url}">Create/Edit Employee</s:a></li>
+				<li><s:url var="url" namespace="/skill" action="list"/><s:a href="%{url}">List available Skills</s:a></li>
+				<li><s:url var="url" namespace="/skill" action="edit"/><s:a href="%{url}">Create/Edit Skill</s:a></li>
+			</ul>
+		</div>
+		<div class="span9">
+
+				<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 value="availableItems">
+						<tr>
+							<td><a href="<s:url action="edit-%{empId}" />"><s:property value="empId"/></a></td>
+							<td><s:property value="firstName"/></td>
+							<td><s:property value="lastName"/></td>
+						</tr>
+					</s:iterator>
+
+				</table>
+				<a href="<s:url action="edit-" includeParams="none"/>" class="btn btn-primary">Create new Employee</a>
+		</div>
+	</div>
+</div>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/empmanager/listSkills.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/empmanager/listSkills.jsp b/apps/showcase/src/main/webapp/WEB-INF/empmanager/listSkills.jsp
new file mode 100644
index 0000000..1c20253
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/empmanager/listSkills.jsp
@@ -0,0 +1,41 @@
+<%@taglib prefix="s" uri="/struts-tags" %>
+<html>
+<head>
+	<title>Struts2 Showcase - CRUD Example</title>
+</head>
+<body>
+<div class="page-header">
+	<h1>Available Skills</h1>
+</div>
+
+<div class="container-fluid">
+	<div class="row-fluid">
+		<div class="span3">
+			<ul class="nav nav-tabs nav-stacked">
+				<li><s:url var="url" namespace="/employee" action="list"/><s:a href="%{url}">List available Employees</s:a></li>
+				<li><s:url var="url" namespace="/employee" action="edit"/><s:a href="%{url}">Create/Edit Employee</s:a></li>
+				<li class="active"><s:url var="url" namespace="/skill" action="list"/><s:a href="%{url}">List available Skills</s:a></li>
+				<li><s:url var="url" namespace="/skill" action="edit"/><s:a href="%{url}">Create/Edit Skill</s:a></li>
+			</ul>
+		</div>
+		<div class="span9">
+
+			<table class="table table-striped table-bordered table-hover table-condensed">
+				<tr>
+					<th>Name</th><th>Description</th>
+				</tr>
+				<s:iterator value="availableItems">
+					<tr>
+						<td><a href="<s:url action="edit"><s:param name="skillName" value="name"/></s:url>"><s:property value="name"/></a></td>
+						<td><s:property value="description"/></td>
+					</tr>
+				</s:iterator>
+			</table>
+
+			<a href="<s:url action="edit" includeParams="none"/>" class="btn btn-primary">Create new Skill</a>
+		</div>
+	</div>
+</div>
+</body>
+</html>
+

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/filedownload/index.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/filedownload/index.jsp b/apps/showcase/src/main/webapp/WEB-INF/filedownload/index.jsp
new file mode 100644
index 0000000..a8b7ef8
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/filedownload/index.jsp
@@ -0,0 +1,36 @@
+<%@ taglib prefix="s" uri="/struts-tags" %>
+<html>
+<head>
+    <title>Struts2 Showcase - File Download</title>
+</head>
+
+<body>
+	<div class="page-header">
+		<h1>File Download Example</h1>
+	</div>
+
+
+
+    <div class="container-fluid">
+	    <div class="row-fluid">
+		    <div class="span6" style="text-align: center;">
+			    <div class="alert alert-info">
+				    The browser should display the Struts logo.
+			    </div>
+
+			    <s:url var="url" action="download"/>
+			    <s:a href="%{url}" cssClass="btn btn-large btn-info"><i class="icon-picture"></i> Download image file.</s:a>
+		    </div>
+		    <div class="span6" style="text-align: center;">
+			    <div class="alert alert-info">
+				    The browser should prompt for a location to save the ZIP file.
+			    </div>
+
+			    <s:url var="url" action="download2"/>
+			    <s:a href="%{url}" cssClass="btn btn-large btn-info"><i class="icon-download-alt"></i> Download ZIP file.</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/fileupload/multipleUploadUsingArray.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/fileupload/multipleUploadUsingArray.jsp b/apps/showcase/src/main/webapp/WEB-INF/fileupload/multipleUploadUsingArray.jsp
new file mode 100644
index 0000000..4c8167c
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/fileupload/multipleUploadUsingArray.jsp
@@ -0,0 +1,32 @@
+<%@ page
+		language="java"
+		contentType="text/html; charset=UTF-8"
+		pageEncoding="UTF-8"%>
+<%@ taglib prefix="s" uri="/struts-tags" %>
+<html>
+<head>
+	<title>Struts2 Showcase - Fileupload sample - Multiple fileupload using Array</title>
+</head>
+
+<body>
+<div class="page-header">
+	<h1>Fileupload sample - Multiple fileupload using Array</h1>
+</div>
+
+<div class="container-fluid">
+	<div class="row-fluid">
+		<div class="span12">
+
+			<s:form action="doMultipleUploadUsingArray" method="POST" enctype="multipart/form-data">
+				<s:file label="File (1)" name="upload" />
+				<s:file label="File (2)" name="upload" />
+				<s:file label="FIle (3)" name="upload" />
+				<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/fileupload/multipleUploadUsingList.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/fileupload/multipleUploadUsingList.jsp b/apps/showcase/src/main/webapp/WEB-INF/fileupload/multipleUploadUsingList.jsp
new file mode 100644
index 0000000..a84ef6c
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/fileupload/multipleUploadUsingList.jsp
@@ -0,0 +1,32 @@
+<%@ page 
+	language="java" 
+	contentType="text/html; charset=UTF-8"
+    pageEncoding="UTF-8"%>
+<%@ taglib prefix="s" uri="/struts-tags" %>
+<html>
+<head>
+	<title>Struts2 Showcase - Fileupload sample - Multiple fileupload using List</title>
+</head>
+
+<body>
+<div class="page-header">
+	<h1>Fileupload sample - Multiple fileupload using List</h1>
+</div>
+
+<div class="container-fluid">
+	<div class="row-fluid">
+		<div class="span12">
+
+			<s:form action="doMultipleUploadUsingList" method="POST" enctype="multipart/form-data">
+				<s:file label="File (1)" name="upload" />
+				<s:file label="File (2)" name="upload" />
+				<s:file label="FIle (3)" name="upload" />
+				<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/fileupload/upload-success.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/fileupload/upload-success.jsp b/apps/showcase/src/main/webapp/WEB-INF/fileupload/upload-success.jsp
new file mode 100644
index 0000000..6073d2a
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/fileupload/upload-success.jsp
@@ -0,0 +1,31 @@
+<%@ page 
+	language="java" 
+	contentType="text/html; charset=UTF-8"
+    pageEncoding="UTF-8"%>
+<%@ taglib prefix="s" uri="/struts-tags" %>
+<html>
+<head>
+	<title>Struts2 Showcase - Fileupload sample</title>
+</head>
+
+<body>
+<div class="page-header">
+	<h1>Fileupload sample</h1>
+</div>
+
+<div class="container-fluid">
+	<div class="row-fluid">
+		<div class="span12">
+			<ul>
+		        <li>ContentType: <s:property value="uploadContentType" /></li>
+		        <li>FileName: <s:property value="uploadFileName" /></li>
+		        <li>File: <s:property value="upload" /></li>
+		        <li>Caption:<s:property value="caption" /></li>
+	        </ul>
+		</div>
+	</div>
+</div>
+
+</body>
+</html>
+

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/fileupload/upload.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/fileupload/upload.jsp b/apps/showcase/src/main/webapp/WEB-INF/fileupload/upload.jsp
new file mode 100644
index 0000000..cc770c4
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/fileupload/upload.jsp
@@ -0,0 +1,27 @@
+<%@ taglib prefix="s" uri="/struts-tags" %>
+<html>
+<head>
+    <title>Struts2 Showcase - Fileupload sample</title>
+</head>
+
+<body>
+    <div class="page-header">
+	    <h1>Fileupload sample</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="doUpload" method="POST" enctype="multipart/form-data">
+			        <s:file name="upload" label="File"/>
+			        <s:textfield name="caption" label="Caption"/>
+			        <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/freemarker/customFreemarkerManagerUsage.ftl
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/freemarker/customFreemarkerManagerUsage.ftl b/apps/showcase/src/main/webapp/WEB-INF/freemarker/customFreemarkerManagerUsage.ftl
new file mode 100644
index 0000000..a1e14cf
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/freemarker/customFreemarkerManagerUsage.ftl
@@ -0,0 +1,34 @@
+<html>
+<head>
+	<title>Struts2 Showcase - Freemarker - CustomFreemarkerManager Usage</title>
+</head>
+<body>
+
+<div class="page-header">
+	<h1>Custom Freemarker Manager Usage</h1>
+</div>
+
+<div class="container-fluid">
+	<div class="row-fluid">
+		<div class="span12">
+
+		<p>
+	This page shows a simple example of using a custom freemarker manager.
+	The custom freemarker manager put into freemarker model an util classed 
+	under the name 'customFreemarkerManagerUtil'. so one could use
+	<p/>
+	<ul>
+		<li>$ { customFreemarkerManagerUtil.getTodayDate() } - to get today's date</li>
+		<li>$ { customFreemarkerManagerUtil.todayDate } - to get today's date</li>
+		<li>$ { customFreemarkerManagerUtil.getTimeNow() } - to get the time now</li>
+		<li>$ { customFreemarkerManagerUtil.timeNow } - to get the time now</li>
+	</ul>
+	 
+	 Today's Date = <span id="todaysDate">${customFreemarkerManagerUtil.todayDate}</span><br/>
+	 Time now =  <span id="timeNow">${customFreemarkerManagerUtil.getTimeNow()}</span><br/>
+		</div>
+	</div>
+</div>
+</body>
+</html>
+

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/freemarker/index.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/freemarker/index.jsp b/apps/showcase/src/main/webapp/WEB-INF/freemarker/index.jsp
new file mode 100644
index 0000000..360c6cb
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/freemarker/index.jsp
@@ -0,0 +1,3 @@
+<% response.sendRedirect("/freemarker/customFreemarkerManagerDemo.action"); %>
+
+

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/freemarker/standardTags.ftl
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/freemarker/standardTags.ftl b/apps/showcase/src/main/webapp/WEB-INF/freemarker/standardTags.ftl
new file mode 100644
index 0000000..016e189
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/freemarker/standardTags.ftl
@@ -0,0 +1,24 @@
+<html>
+<head>
+	<title>Struts2 Showcase - Freemarker - Standard Struts Freemarker Tags</title>
+</head>
+<body>
+
+<div class="page-header">
+	<h1>Standard Struts Freemarker Tags</h1>
+</div>
+
+<div class="container-fluid">
+	<div class="row-fluid">
+		<div class="span12">
+
+			<@s.form action="test">
+	            <@s.textfield label="Name" name="name"/>
+	            <@s.select label="Birth Month" headerValue="Select Month" list="months" />
+			</...@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/hangman/blank.ftl
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/hangman/blank.ftl b/apps/showcase/src/main/webapp/WEB-INF/hangman/blank.ftl
new file mode 100644
index 0000000..e69de29

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/hangman/hangmanAjax.ftl
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/hangman/hangmanAjax.ftl b/apps/showcase/src/main/webapp/WEB-INF/hangman/hangmanAjax.ftl
new file mode 100644
index 0000000..e433290
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/hangman/hangmanAjax.ftl
@@ -0,0 +1,247 @@
+<html>
+<head>
+	<title>Struts2 Showcase - Hangman (AJAX)</title>
+<@sx.head />
+</head>
+<body>
+<div class="page-header">
+	<h1>Hangman</h1>
+</div>
+
+<div class="container-fluid">
+	<div class="row-fluid">
+		<div class="span12">
+
+			<script>
+				function destroyWidgets() {
+					var div = dojo.byId("updateCharacterAvailableDiv");
+					var anchors = div.getElementsByTagName("a");
+					dojo.lang.forEach(anchors, function (anchor) {
+						var widget = dojo.widget.byId(anchor);
+						widget.destroy();
+					});
+				}
+
+				var _listeners = {
+					guessMade:function (request, widget) {
+						var sourceId = widget.widgetId;
+						this.guessMadeFunc(sourceId);
+						this.updateCharacterAvailable(sourceId);
+						this.updateVocab(sourceId);
+						this.updateScaffold(sourceId);
+						this.updateGuessLeft(sourceId);
+					},
+					guessMadeFunc:function (sourceId) {
+						var requestAttr = { character:sourceId };
+						dojo.io.bind({
+							url:"<@s.url action="guessCharacter" namespace="/hangman" />",
+							load:function (type, data, event) {
+
+							},
+							mimetype:"text/html",
+							content:requestAttr
+						});
+					},
+					updateCharacterAvailable:function (sourceId) {
+						dojo.io.bind({
+							url:"<@s.url action="updateCharacterAvailable" namespace="/hangman/ajax" />",
+							load:function (type, data, event) {
+								var div = dojo.byId("updateCharacterAvailableDiv");
+								destroyWidgets();
+								div.innerHTML = data;
+
+								try {
+									var xmlParser = new dojo.xml.Parse();
+									var frag = xmlParser.parseElement(div, null, true);
+									dojo.widget.getParser().createComponents(frag);
+									// eval any scripts being returned
+									var scripts = div.getElementsByTagName('script');
+									for (var i = 0; i < scripts.length; i++) {
+										eval(scripts[i].innerHTML);
+									}
+								}
+								catch (e) {
+									alert('dojo error ' + e);
+									dojo.debug("auto-build-widgets error: " + e);
+								}
+							},
+							mimetype:"text/html"
+						});
+					},
+					updateVocab:function (sourceId) {
+						dojo.io.bind({
+							url:"<@s.url action="updateVocabCharacters" namespace="/hangman/ajax" />",
+							load:function (type, data, event) {
+								var div = dojo.byId("updateVocabDiv");
+								div.innerHTML = data;
+
+								try {
+									var xmlParser = new dojo.xml.Parse();
+									var frag = xmlParser.parseElement(div, null, true);
+
+									var scripts = div.getElementsByTagName("script");
+									for (var i = 0; i < scripts.length; i++) {
+										eval(scripts[i].innerHTML);
+									}
+								}
+								catch (e) {
+									alert("dojo error" + e);
+									dojo.debug("auto-build-widgets error: " + e);
+								}
+							},
+							mimetype:"text/html"
+						});
+					},
+					updateScaffold:function (sourceId) {
+						dojo.io.bind({
+							url:"<@s.url action="updateScaffold" namespace="/hangman/ajax" />",
+							load:function (type, data, event) {
+								var div = dojo.byId("updateScaffoldDiv");
+								div.innerHTML = data;
+
+								try {
+									var xmlParser = new dojo.xml.Parse();
+									var frag = xmlParser.parseElement(div, null, true);
+
+									var scripts = div.getElementsByTagName("script");
+									for (var i = 0; i < scripts.length; i++) {
+										eval(scripts[i].innerHTML);
+									}
+								}
+								catch (e) {
+									alert("dojo error" + e);
+									dojo.debug("auto-build-widgets error: " + e);
+								}
+							},
+							mimetype:"text/html"
+						});
+					},
+					updateGuessLeft:function (sourceId) {
+						dojo.io.bind({
+							url:"<@s.url action="updateGuessLeft" namespace="/hangman/ajax" />",
+							load:function (type, data, event) {
+								var div = dojo.byId("updateGuessLeftDiv");
+								div.innerHTML = data;
+
+								try {
+									var xmlParser = new dojo.xml.Parse();
+									var frag = xmlParser.parseElement(div, null, true);
+
+									var scripts = div.getElementsByTagName("script");
+									for (var i = 0; i < scripts.length; i++) {
+										eval(scripts[i].innerHTML);
+									}
+								}
+								catch (e) {
+									alert("dojo error" + e);
+									dojo.debug("auto-build-widgets error: " + e);
+								}
+							},
+							mimetype:"text/html"
+						});
+					}
+				};
+				dojo.event.topic.subscribe("topicGuessMade", _listeners, "guessMade");
+			</script>
+
+			<table bgcolor="green">
+				<tr>
+					<td>
+					<@s.url id="url" value="/hangman/images/hangman.png" />
+						<img alt="Hangman" src="<@s.property value="%{#url}" />"
+						     width="197" height="50" border="0"/>
+					</td>
+					<td width="70" align="right">
+					<#-- Guesses Left -->
+						<div id="updateGuessLeftDiv">
+						<@s.set name="guessLeftImageName" value="%{'Chalkboard_'+hangman.guessLeft()+'.png'}" />
+						<@s.url id="url" value="%{'/hangman/images/'+#guessLeftImageName}" />
+							<img alt="No. Guesses Left"
+							     src="<@s.property value="%{#url}"/>" width="20" height="20" border="0"/>
+						</div>
+					</td>
+					<td>
+					<@s.url id="url" value="/hangman/images/guesses-left.png" />
+						<img alt="Guesses Left"
+						     src="<@s.property value="%{#url}" />" width="164" height="11" border="0"/>
+					</td>
+				</tr>
+				<tr>
+					<td></td>
+					<td align="left">
+					<#-- Display Scaffold -->
+						<div id="updateScaffoldDiv">
+						<@s.set name="scaffoldImageName" value="%{'scaffold_'+hangman.guessLeft()+'.png'}" />
+						<@s.url id="url" value="%{'/hangman/images/'+#scaffoldImageName}" />
+							<img src="<@s.property value="%{#url}" />" border="0"/>
+						</div>
+					</td>
+					<td></td>
+				</tr>
+				<tr>
+					<td width="160">
+						<p align="right">
+						<@s.url id="url" value="/hangman/images/guess.png" />
+							<img alt="Current Guess" src="<@s.property value="%{#url}" />"
+							     align="MIDDLE" width="127" height="20" border="0"/></p>
+					</td>
+					<td>
+					<#-- Display Vacab  -->
+						<div id="updateVocabDiv">
+						<@s.iterator id="currentCharacter" value="%{hangman.vocab.inCharacters()}" stat="stat">
+							<#if hangman.characterGuessedBefore(currentCharacter)>
+								<@s.set name="chalkboardImageName" value="%{'Chalkboard_'+#currentCharacter.toString()+'.png'}" />
+								<@s.url id="url" value="%{'/hangman/images/'+#chalkboardImageName}" />
+								<img height="36" alt="<@s.property value="%{#currentCharacter}" />"
+								     src="<@s.property value="%{#url}" />" width="36" border="0"/>
+							<#else>
+								<@s.url id="url" value="/hangman/images/Chalkboard_underscroll.png" />
+								<img height="36" alt="_"
+								     src="<@s.property value="%{#url}" />" width="36" border="0"/>
+							</#if>
+						</...@s.iterator>
+						</div>
+					</td>
+				</tr>
+				<tr>
+					<td valign="top">
+						<p align="right">
+						<@s.url id="url" value="/hangman/images/choose.png" />
+							<img alt="Choose" src="<@s.property value="%{#url}" />"
+							     height="20" width="151" border="0"/>
+						</p>
+					</td>
+					<td width="330">
+
+					<#-- Show Characters Available -->
+						<div id="updateCharacterAvailableDiv">
+						<@s.iterator id="currentCharacter" value="%{hangman.charactersAvailable}" status="stat">
+							<@s.set name="chalkboardImageName" value="%{'Chalkboard_'+#currentCharacter+'.png'}" />
+							<@s.url id="chalkboardImageUrl" value="%{'/hangman/images/'+#chalkboardImageName}" />
+							<@s.url id="spacerUrl" value="/hangman/images/letter-spacer.png" />
+
+							<@s.url id="blankUrl" value="ajax/blank.action" includeContext="false" />
+							<@sx.a  id="%{#currentCharacter}"
+							beforeNotifyTopics="topicGuessMade"
+							showErrorTransportText="true">
+								<img height="36" alt="" src="<@s.property value="%{#chalkboardImageUrl}" />" width="36" border="0"/>
+							</...@sx.a>
+						</...@s.iterator>
+						</div>
+
+
+					</td>
+				</tr>
+				<tr>
+					<td>
+
+					</td>
+				</tr>
+			</table>
+		</div>
+	</div>
+</div>
+</body>
+</html>
+
+

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/hangman/hangmanNonAjax.ftl
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/hangman/hangmanNonAjax.ftl b/apps/showcase/src/main/webapp/WEB-INF/hangman/hangmanNonAjax.ftl
new file mode 100644
index 0000000..6bfd8ea
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/hangman/hangmanNonAjax.ftl
@@ -0,0 +1,144 @@
+<html>
+<head>
+	<title>Struts2 Showcase - Hangman</title>
+</head>
+<body>
+<div class="page-header">
+	<h1>Hangman</h1>
+</div>
+
+<div class="container-fluid">
+	<div class="row-fluid">
+		<div class="span12">
+		<table>
+		  <tr>
+		    <td>
+		    <@s.url id="url" value="/hangman/images/hangman.png" />
+		    <img alt="Hangman" src="<@s.property value="%{#url}" />"
+		           width="197" height="50" border="0"/>
+		    </td>
+		    <td width="70" align="right">
+		      <#-- Guesses Left -->
+		      <div id="updateGuessLeftDiv">
+		      <#if (hangman.guessLeft() >= 0)>
+		      <@s.set name="guessLeftImageName" value="%{'Chalkboard_'+hangman.guessLeft()+'.png'}" />
+		      <@s.url id="url" value="%{'/hangman/images/'+#guessLeftImageName}" />
+		      <img alt="No. Guesses Left"
+		           src="<@s.property value="%{#url}"/>" width="20" height="20" border="0" />
+		      </#if>
+		      </div>
+		    </td>
+		    <td>
+		        <@s.url id="url" value="/hangman/images/guesses-left.png" />
+		        <img alt="Guesses Left"
+		            src="<@s.property value="%{#url}" />" width="164" height="11" border="0"/>
+		    </td>
+		  </tr>
+		  <tr>
+		    <td></td>
+		    <td align="left">
+		    <#-- Display Scaffold -->
+		    <div id="updateScaffoldDiv">
+		        <@s.set name="scaffoldImageName" value="%{'scaffold_'+hangman.guessLeft()+'.png'}" />
+		        <@s.url id="url" value="%{'/hangman/images/'+#scaffoldImageName}" />
+		        <img src="<@s.property value="%{#url}" />" border="0"/>
+		    </div>
+		    </td>
+		    <td></td>
+		    </tr>
+		  <tr>
+		    <td width="160">
+		      <p align="right">
+		        <@s.url id="url" value="/hangman/images/guess.png" />
+		        <img alt="Current Guess" src="<@s.property value="%{#url}" />"
+		           align="MIDDLE" width="127" height="20" border="0"/></p>
+		    </td>
+		    <td>
+		    <#-- Display Vacab  -->
+		    <div id="updateVocabDiv">
+		    <#if hangman.gameEnded()>
+				<@s.iterator id="currentCharacter" value="%{hangman.vocab.inCharacters()}" stat="stat">
+					<@s.url id="url" value="%{'/hangman/images/Chalkboard_'+#currentCharacter.toString()+'.png'}" />
+					<img height="36" alt="<@s.property value="%{#currentCharacter}" />"
+				            src="<@s.property value="%{#url}" />" width="36" border="0" />
+				</...@s.iterator>
+			<#else>
+		    <@s.iterator id="currentCharacter" value="%{hangman.vocab.inCharacters()}" stat="stat">
+		        <#if hangman.characterGuessedBefore(currentCharacter)>
+		            <@s.set name="chalkboardImageName" value="%{'Chalkboard_'+#currentCharacter.toString()+'.png'}" />
+		            <@s.url id="url" value="%{'/hangman/images/'+#chalkboardImageName}" />
+		            <img height="36" alt="<@s.property value="%{#currentCharacter}" />"
+		                src="<@s.property value="%{#url}" />" width="36" border="0"/>
+		        <#else>
+		            <@s.url id="url" value="/hangman/images/Chalkboard_underscroll.png" />
+		            <img height="36" alt="_"
+		                src="<@s.property value="%{#url}" />" width="36" border="0"/>
+		        </#if>
+			</...@s.iterator>
+			</#if>
+			</div>
+		    </td>
+		  </tr>
+		  <tr>
+		    <td valign="top">
+		      <p align="right">
+		        <@s.url id="url" value="/hangman/images/choose.png" />
+		        <img alt="Choose" src="<@s.property value="%{#url}" />"
+		             height="20" width="151" border="0"/>
+		      </p>
+		    </td>
+		    <td width="330">
+
+		    <#-- Show Characters Available -->
+		    <div id="updateCharacterAvailableDiv">
+		    <#if hangman.gameEnded()>
+			<@s.set name="winImageName" value="%{'you-win.png'}" />
+			<@s.set name="looseImageName" value="%{'you-lose.png'}" />
+			<@s.set name="startImageName" value="%{'start.png'}" />
+			<@s.url id="winImageUrl" value="%{'/hangman/images/'+#winImageName}"  />
+			<@s.url id="looseImageUrl" value="%{'/hangman/images/'+#looseImageName}" />
+			<@s.url id="startImageUrl" value="%{'/hangman/images/'+#startImageName}" />
+			<@s.url id="startHref" action="hangmanNonAjax" namespace="/hangman" />
+
+			<#if hangman.isWin()>
+			<img src="<@s.property value="%{#winImageUrl}" />" width="341" height="44" />
+			<#else>
+			<img src="<@s.property value="%{#looseImageUrl}" />" width="381" height="44" />
+			</#if>
+			<@s.a href="%{#startHref}">
+				<img src="<@s.property value="%{#startImageUrl}" />" width="250" height="43" />
+			</...@s.a>
+			<#else>
+			<@s.iterator id="currentCharacter" value="%{hangman.charactersAvailable}" status="stat">
+		      <@s.set name="chalkboardImageName" value="%{'Chalkboard_'+#currentCharacter+'.png'}" />
+		      <@s.url id="chalkboardImageUrl" value="%{'/hangman/images/'+#chalkboardImageName}" />
+		      <@s.url id="spacerUrl" value="/hangman/images/letter-spacer.png" />
+		      <@s.url id="url" action="guessCharacterNonAjax" namespace="/hangman">
+		        <@s.param name="character" value="%{#currentCharacter}" />
+		      </...@s.url>
+
+		      <@s.a href="%{#url}"
+		              id="%{#currentCharacter}"
+		              >
+		        <img height="36" alt="" src="<@s.property value="%{#chalkboardImageUrl}" />" width="36" border="0" />
+		      </...@s.a>
+			</...@s.iterator>
+			</#if>
+			</div>
+
+
+		   </td>
+		  </tr>
+		  <tr>
+		    <td>
+
+		    </td>
+		  </tr>
+		</table>
+		</div>
+	</div>
+</div>
+</body>
+</html>
+
+

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/hangman/updateCharacterAvailable.ftl
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/hangman/updateCharacterAvailable.ftl b/apps/showcase/src/main/webapp/WEB-INF/hangman/updateCharacterAvailable.ftl
new file mode 100644
index 0000000..84281d0
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/hangman/updateCharacterAvailable.ftl
@@ -0,0 +1,45 @@
+<#if hangman.gameEnded()>
+	<@s.set name="winImageName" value="%{'you-win.png'}" />
+	<@s.set name="looseImageName" value="%{'you-lose.png'}" />
+	<@s.set name="startImageName" value="%{'start.png'}" />
+	<@s.url id="winImageUrl" value="%{'/hangman/images/'+#winImageName}"  />
+	<@s.url id="looseImageUrl" value="%{'/hangman/images/'+#looseImageName}" />
+	<@s.url id="startImageUrl" value="%{'/hangman/images/'+#startImageName}" />
+	<@s.url id="startHref" action="hangmanAjax" namespace="/hangman" />
+	
+	<#if hangman.isWin()>
+	<img src="<@s.property value="%{#winImageUrl}" />" width="341" height="44" />
+	<#else>
+	<img src="<@s.property value="%{#looseImageUrl}" />" width="381" height="44" />
+	</#if>
+	<@s.a href="%{#startHref}">
+		<img src="<@s.property value="%{#startImageUrl}" />" width="250" height="43" />
+	</...@s.a>
+<#else>
+<@s.iterator id="currentCharacter" value="%{hangman.charactersAvailable}" status="stat">
+      <@s.set name="chalkboardImageName" value="%{'Chalkboard_'+#currentCharacter+'.png'}" />
+      <@s.url id="chalkboardImageUrl" value="%{'/hangman/images/'+#chalkboardImageName}" />
+      <@s.url id="spacerUrl" value="/hangman/images/letter-spacer.png" />
+      <@s.url id="blankUrl" value="ajax/blank.action" includeContext="false" />
+      
+      <@sx.a  id="%{#currentCharacter}" 
+      		  afterNotifyTopics="topicGuessMade"
+      		  showErrorTransportText="true">
+      	<img height="36" alt="" src="<@s.property value="%{#chalkboardImageUrl}" />" width="36" border="0" />
+      </...@sx.a>
+      
+      <#--
+      <a href="#" id="<@s.property value="%{#currentCharacter}"/>" >
+      	<img height="36" alt="" src="<@s.property value="%{#chalkboardImageUrl}" />" width="36" border="0" />
+      </a>
+      
+      <script>
+      	// var anchor = dojo.byId("<@s.property value="%{#currentCharacter}" />");
+      	var anchor = document.getElementById("<@s.property value="%{#currentCharacter}" />");
+      	dojo.event.connect(anchor, "onclick", function(event) {
+      		dojo.event.topic.publish("topicGuessMade", "<@s.property value="%{#currentCharacter}" />");
+      	});
+      </script>
+      -->
+</...@s.iterator>
+</#if>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/hangman/updateGuessLeft.ftl
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/hangman/updateGuessLeft.ftl b/apps/showcase/src/main/webapp/WEB-INF/hangman/updateGuessLeft.ftl
new file mode 100644
index 0000000..8b5ef4e
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/hangman/updateGuessLeft.ftl
@@ -0,0 +1,7 @@
+<#if (hangman.guessLeft() >= 0)>
+	<@s.set name="guessLeftImageName" value="%{'Chalkboard_'+hangman.guessLeft()+'.png'}" />
+    <@s.url id="url" value="%{'/hangman/images/'+#guessLeftImageName}" />
+    <img alt="No. Guesses Left"
+      	   src="<@s.property value="%{#url}"/>" width="20" height="20" border="0" />
+</#if>
+      	   
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/hangman/updateScaffold.ftl
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/hangman/updateScaffold.ftl b/apps/showcase/src/main/webapp/WEB-INF/hangman/updateScaffold.ftl
new file mode 100644
index 0000000..afd11b6
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/hangman/updateScaffold.ftl
@@ -0,0 +1,3 @@
+	<@s.set name="scaffoldImageName" value="%{'scaffold_'+hangman.guessLeft()+'.png'}" />
+    <@s.url id="url" value="%{'/hangman/images/'+#scaffoldImageName}" />
+    <img src="<@s.property value="%{#url}" />" border="0"/>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/hangman/updateVocabCharacters.ftl
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/hangman/updateVocabCharacters.ftl b/apps/showcase/src/main/webapp/WEB-INF/hangman/updateVocabCharacters.ftl
new file mode 100644
index 0000000..d4b370b
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/hangman/updateVocabCharacters.ftl
@@ -0,0 +1,20 @@
+<#if hangman.gameEnded()>
+<@s.iterator id="currentCharacter" value="%{hangman.vocab.inCharacters()}" stat="stat">
+	<@s.url id="url" value="%{'/hangman/images/Chalkboard_'+#currentCharacter.toString()+'.png'}" />
+	<img height="36" alt="<@s.property value="%{#currentCharacter}" />"
+		 src="<@s.property value="%{#url}" />" width="36" border="0" />
+</...@s.iterator>
+<#else>
+<@s.iterator id="currentCharacter" value="%{hangman.vocab.inCharacters()}" stat="stat">
+    	<#if hangman.characterGuessedBefore(currentCharacter)>
+    		<@s.set name="chalkboardImageName" value="%{'Chalkboard_'+#currentCharacter.toString()+'.png'}" />
+    		<@s.url id="url" value="%{'/hangman/images/'+#chalkboardImageName}" />
+    		<img height="36" alt="<@s.property value="%{#currentCharacter}" />"
+        		src="<@s.property value="%{#url}" />" width="36" border="0"/>
+    	<#else>
+    		<@s.url id="url" value="/hangman/images/Chalkboard_underscroll.png" />
+    		<img height="36" alt="_"
+        		src="<@s.property value="%{#url}" />" width="36" border="0"/>
+    	</#if>
+</...@s.iterator>
+</#if>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/help.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/help.jsp b/apps/showcase/src/main/webapp/WEB-INF/help.jsp
new file mode 100644
index 0000000..08d84ac
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/help.jsp
@@ -0,0 +1,32 @@
+<%@taglib prefix="s" uri="/struts-tags" %>
+<html>
+<head>
+    <title>Struts2 Showcase . Getting Support</title>
+</head>
+
+<body>
+	<div class="page-header">
+		<h1>Getting support</h1>
+	</div>
+
+
+	<div class="container-fluid">
+		<div class="row-fluid">
+			<div class="span4" style="text-align: center;">
+				<img src='<s:url value="/images/struts.gif"/>' alt="Struts Logo" width="290" height="80"/>
+			</div>
+			<div class="span4" style="text-align: center;">
+				<div class="alert alert-info">
+					Use this mailing list if you encounter problems while developing and using with Struts.
+				</div>
+				<a href="http://struts.apache.org/mail.html" class="btn btn-large btn-info"><i class="icon-share"></i> User List</a>
+			</div>
+			<div class="span4" style="text-align: center;">
+				<div class="alert alert-info">
+					The Struts 2 website.
+				</div>
+				<a href="http://struts.apache.org/2.x/" class="btn btn-large btn-info"><i class="icon-share"></i> Struts 2</a>
+		</div>
+	</div>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/integration/modelDriven.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/integration/modelDriven.jsp b/apps/showcase/src/main/webapp/WEB-INF/integration/modelDriven.jsp
new file mode 100644
index 0000000..dc0b1f4
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/integration/modelDriven.jsp
@@ -0,0 +1,44 @@
+<%@ taglib prefix="s" uri="/struts-tags" %>
+<html>
+<head>
+	<title>Struts2 Showcase - Struts1 Integration</title>
+	<s:head/>
+</head>
+
+<body>
+
+<div class="page-header">
+	<h1>Struts1 Integration</h1>
+</div>
+
+<div class="container-fluid">
+	<div class="row-fluid">
+		<div class="span12">
+
+
+			<s:form action="saveGangster" namespace="/integration">
+
+				<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/integration/modelDrivenResult.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/integration/modelDrivenResult.jsp b/apps/showcase/src/main/webapp/WEB-INF/integration/modelDrivenResult.jsp
new file mode 100644
index 0000000..7d11f4c
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/integration/modelDrivenResult.jsp
@@ -0,0 +1,43 @@
+<%@ taglib prefix="s" uri="/struts-tags" %>
+<html>
+<head>
+	<title>Struts2 Showcase - Struts1 Integration - 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>Struts1 Integration - Result</h1>
+</div>
+
+<div class="container-fluid">
+	<div class="row-fluid">
+		<div class="span12">
+
+			<s:actionmessage cssClass="alert alert-info"/>
+			<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>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/interactive/demo.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/interactive/demo.jsp b/apps/showcase/src/main/webapp/WEB-INF/interactive/demo.jsp
new file mode 100644
index 0000000..e69de29

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/interactive/example-action.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/interactive/example-action.jsp b/apps/showcase/src/main/webapp/WEB-INF/interactive/example-action.jsp
new file mode 100644
index 0000000..aaf5ce9
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/interactive/example-action.jsp
@@ -0,0 +1,76 @@
+<%
+    request.setAttribute("decorator", "none");
+    response.setHeader("Cache-Control","no-cache"); //HTTP 1.1
+    response.setHeader("Pragma","no-cache"); //HTTP 1.0
+    response.setDateHeader ("Expires", 0); //prevents caching at the proxy server
+%>
+<pre style="font-style: normal;">
+<span class="kw">package</span> org.apache.struts2.showcase.action;
+
+<span class="kw">import</span> java.util.Arrays;
+<span class="kw">import</span> java.util.Date;
+<span class="kw">import</span> java.util.HashMap;
+<span class="kw">import</span> java.util.List;
+<span class="kw">import</span> java.util.Map;
+
+<span class="kw">import</span> com.opensymphony.xwork2.ActionSupport;
+
+<span class="kw">public class</span> ExampleAction <span class="kw">extends</span> ActionSupport {
+    <span class="kw">public static final</span> String CONSTANT = "Struts Rocks!";
+        
+    <span class="kw">public static</span> Date getCurrentDate() {
+        return new Date();
+    }
+    
+    <span class="kw">public</span> String getName() {
+        return "John Galt";
+    }
+
+    <span class="kw">public</span> String[] getBands() {
+        return new String[] { "Pink Floyd", "Metallica", "Guns & Roses" };
+    }
+
+    <span class="kw">public</span> List&lt;String&gt; getMovies() {
+        return Arrays.asList("Lord of the Rings", "Matrix");
+    }
+
+    <span class="kw">public</span> Book getBook() {
+        <span class="kw">return</span> new Book("Iliad", "Homer");
+    }
+
+    <span class="kw">public</span> Map&lt;String, Book&gt; getBooks() {
+        Map&lt;String, Book&gt; books = new HashMap&lt;String, Book&gt;();
+        books.put("Iliad", new Book("Iliad", "Homer"));
+        books.put("The Republic", new Book("The Replublic", "Plato"));
+        books.put("Thus Spake Zarathustra", new Book("Thus Spake Zarathustra",
+            "Friedrich Nietzsche"));
+        return books;
+    }
+}
+
+<span class="kw">class</span> Book {
+    <span class="kw">private</span> String title;
+    <span class="kw">private</span> String author;
+
+    <span class="kw">public</span> Book(String title, String author) {
+        this.title = title;
+        this.author = author;
+    }
+
+    <span class="kw">public</span> String getTitle() {
+        <span class="kw">return</span> title;
+    }
+
+    <span class="kw">public void</span> setTitle(String title) {
+        this.title = title;
+    }
+
+    <span class="kw">public</span> String getAuthor() {
+        return author;
+    }
+
+    <span class="kw">public void</span> setAuthor(String author) {
+        this.author = author;
+    }
+}
+</pre>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/interactive/index.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/interactive/index.jsp b/apps/showcase/src/main/webapp/WEB-INF/interactive/index.jsp
new file mode 100644
index 0000000..987a39a
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/interactive/index.jsp
@@ -0,0 +1,241 @@
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<%@ taglib prefix="s" uri="/struts-tags" %>
+<%@ taglib prefix="sx" uri="/struts-dojo-tags" %>
+
+<html>
+<head>
+    <title>OGNL and tags demo</title>
+    <s:url var="struts" value="/struts" includeParams="none"/>
+    <s:url var="jspEval" action="jspEval" namespace="/nodecorate" includeParams="none"/>
+    <s:url var="viewClass" value="/interactive/example-action.jsp" includeParams="none"/>
+    <s:url var="ognlBase" value="/interactive/ognl_" includeParams="none"/>
+    <s:url var="jspBase" value="/interactive/jsp_" includeParams="none"/>
+    
+    <script src="${struts}/webconsole.js"></script>
+    <sx:head/>
+    <script>
+        var index = -1;
+        var runningOgnl = true;
+        var ognlBase = "${ognlBase}";
+        var jspBase = "${jspBase}";
+        var ognlCount = 9;
+        var jspCount = 5;
+        
+        dojo.addOnLoad(function() {
+            var classSrc = dojo.byId("classSrc");
+            dojo.io.updateNode(classSrc, "${viewClass}");
+            dojo.html.hide("previous");
+            dojo.html.hide("next");
+        });
+        
+        dojo.event.topic.subscribe("/reloadGuide", function() {
+            next();
+        });
+        
+        function startOgnl() {
+            selectOGNLTab();
+            index = -1;
+            runningOgnl = true;
+            change(1);
+            updateNavigation();
+        }
+        
+        function startJSP() {
+            selectJSPTab();
+            index = -1;
+            runningOgnl = false;
+            change(1);
+            updateNavigation();
+        }
+        
+        function execOgnl(id) {
+            var exp = dojo.string.trim(dojo.byId(id ? id : "example").innerHTML);
+            dojo.byId("wc-command").value = exp;
+            
+            keyEvent({keyCode : 13}, '${jspEval}');
+        }
+        
+        function execJSP(id) {
+            var exp = dojo.string.trim(dojo.byId(id ? id : "example").innerHTML);
+            dojo.byId("jsp").value = unscape(exp);
+            
+            dojo.event.topic.publish("/evalJSP")
+        }
+        
+        function unscape(str) {
+            return str.replace(/&amp;/gm, "&").replace(/&lt;/gm, "<").replace(/&gt;/gm, ">").replace(/&quot;/gm, '"');
+        }
+        
+        function selectClassSrcTab() {
+            dojo.widget.byId("mainTabContainer").selectTab("classTab");
+        }
+        
+        function selectJSPTab() {
+            dojo.widget.byId("mainTabContainer").selectTab("jspTab");
+        }
+        
+        function selectOGNLTab() {
+            dojo.widget.byId("mainTabContainer").selectTab("ognlTab");
+        }
+       
+        function change(delta) {
+            index+=delta;
+            
+            var url = (runningOgnl ? ognlBase : jspBase) + index + ".jsp";
+            var bind = dojo.widget.byId("guideBind");
+            bind.href = url;
+            dojo.event.topic.publish("/loadContent");
+            updateNavigation();
+        }
+        
+        function updateNavigation() {
+            if(index <= 0) {
+                dojo.html.hide("previous");
+            } else {
+                dojo.html.show("previous");
+            }
+            
+            var top = runningOgnl ? ognlCount : jspCount;
+            
+            if(index == top - 1) {
+                dojo.html.hide("next");
+            } else {
+                dojo.html.show("next");
+            }
+        }
+    </script>
+    
+    <style type="">
+        .wc-results {
+            overflow: auto; 
+            margin: 0px; 
+            padding: 5px; 
+            font-family: courier; 
+            color: white; 
+            background-color: black; 
+            height: 200px;
+        }
+        .wc-results pre {
+            display: inline;
+        }
+        .wc-command {
+            margin: 1px 0 0 0; 
+        }
+        .shell {
+            width: 100%;
+        }
+       
+        .jsp {
+            border-style: solid;
+            width: 100%;
+            height: 200px;
+        }
+        .jspResult {
+            border-style: none;
+            width: 100%;
+            height: 200px;
+            padding: 5px;
+        }
+        .jspResultHeader {
+            background-color: #818EBD;
+            color: white;
+            width: 100%;
+            height: 15px;
+        }
+        .jspResultHeader span {
+            padding: 5px;
+        }
+        .classSrc {
+            font-family:Courier;
+            font-size:11px;
+            line-height:13px;
+            overflow: auto; 
+            height: 400px;
+            width: 100%;
+        }
+        .tabContainer {
+            width: 1000px;
+            margin: 0 auto;
+        }
+        .guideContainer {
+            width: 600px;
+            border-width: 1px;
+            border-style: solid;
+            margin: 0 auto;
+        }
+        .guide {
+            padding: 5px;
+        }
+        pre {
+            font-family:Verdana,Geneva,Arial,Helvetica,sans-serif;
+            font-style: italic;
+        }
+        span.kw {
+            color: rgb(127, 0, 85);
+            font-weight: bold;;
+        }
+    </style>
+</head>
+
+<sx:bind id="guideBind" targets="guide" listenTopics="/loadContent"/>
+
+<body>
+    <sx:tabbedpanel id="mainTabContainer" cssClass="tabContainer">
+        <sx:div label="OGNL Console" id="ognlTab">
+            <div id="shell" class="shell">
+               <form onsubmit="return false" id="wc-form">
+                    <div class="wc-results" id="wc-result">
+                         Welcome to the OGNL console!
+                         <br />
+                         :-&gt;
+                    </div>
+                    <input type="hidden" name="debug" value="command" />
+                    OGNL Expression <input name="expression" onkeyup="keyEvent(event, '${jspEval}')" class="input-xxlarge wc-command" id="wc-command" type="text" />
+                </form>
+            </div>
+        </sx:div>
+        <sx:div label="JSP Console" id="jspTab">
+            <table style="width: 100%" cellpadding="1">
+                <tr valign="top">
+                    <td width="50%">
+                       <form theme="simple" namespace="/nodecorate" action="jspEval" method="post">
+                           <s:textarea cssClass="jsp" theme="simple" name="jsp" />
+                           <sx:submit
+                                value="Eval JSP Fragment" 
+                                href="%{#jspEval}" 
+                                targets="jspResult" 
+                                listenTopics="/evalJSP"/>
+                       </form>
+                    </td>
+                    <td width="50%">
+                        <div class="jspResultHeader">
+                            <span>JSP Eval Result</span>
+                        </div>
+                        <div id="jspResult" class="jspResult">
+                        </div>
+                    </td>
+                </tr>
+            </table>    
+        </sx:div>
+        <sx:div label="Class on top of the Value Stack" id="classTab">
+            <div id="classSrc" class="classSrc">
+            </div>
+        </sx:div>
+    </sx:tabbedpanel>
+    <br/><br/>
+    <div class="guideContainer">
+        <div class="jspResultHeader">
+            <span>Interactive Guide</span>
+        </div>
+        <sx:div id="guide" listenTopics="/reloadGuide" cssClass="guide">
+            <p><a href="#" onclick="startOgnl()">Start OGNL Interactive Demo</a></p>
+            <p><a href="#" onclick="startJSP()">Start JSP Interactive Demo</a></p>
+        </sx:div>   
+        <div>
+            <a href="#" id="previous" onclick="change(-1)" style="float: left"><< Previous</a>
+            <a href="#" id="next" onclick="change(1)" style="float: right">Next >></a>
+        </div>
+    </div>
+</body>
+
+</html>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/interactive/jsp_0.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/interactive/jsp_0.jsp b/apps/showcase/src/main/webapp/WEB-INF/interactive/jsp_0.jsp
new file mode 100644
index 0000000..b6787d4
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/interactive/jsp_0.jsp
@@ -0,0 +1,62 @@
+<%
+    request.setAttribute("decorator", "none");
+    response.setHeader("Cache-Control","no-cache"); //HTTP 1.1
+    response.setHeader("Pragma","no-cache"); //HTTP 1.0
+    response.setDateHeader ("Expires", 0); //prevents caching at the proxy server
+%>
+<p>
+    <b>String Attributes</b>
+</p>
+<p>
+    Some tag attributes are expected to be Strings in which case String literals
+    can be passed as the value, like the <i>href</i> attribute in the <i>a</i> tag.
+</p>
+<p>
+    <i>
+        &lt;s:a href=&quot;http://struts.apache.org/&quot; /&gt; 
+    </i>
+</p>
+<p>
+   If the value that you want to use in one of these string literal attributes is stored on the Value Stack,
+   then the <i>%{#name}</i> syntax (alternative syntax) needs to be used. Assuming there is a value
+   with the name "url" stored on the stack:
+</p>
+<p>
+    <i>
+        &lt;s:a href=&quot;%{#url}&quot; /&gt;
+    </i>
+</p>
+<p>
+  will create an anchor and use the value of "url" for the <i>href</i> attribute.
+</p>
+<p>
+    <b>Value Attributes</b>
+</p>
+<p>
+    Other attributes expect an object as their value(not an string literal). In these attributes you can specify
+    the name of a variable stored on the Value Stack, and the tag will look it up and use it. Like the
+    <i>value</i> attribute in the <i>property</i> tag. Assuming there is an object stored on the Value Stack with
+    the name "movie", then:
+</p>
+<p>
+    <i>
+        &lt;s:property value=&quot;movie&quot; /&gt;
+    </i>
+</p>
+<p>
+  will print the value to the page. To pass an String literal to an attribute that expects a value use the <i>%{'string'}</i>
+  notation.
+</p>
+<p>
+  If you don't remember if an attribute expects an string literal or a value, you can always use the <i>%{value}</i> notation:
+</p>
+<p>
+    <i>
+        &lt;s:a href=&quot;%{'http://struts.apache.org/'}&quot; /&gt;
+        <br />
+        &lt;s:property value=&quot;%{#movie}&quot; /&gt;
+    </i>
+</p>
+<p>
+    <a href="#" onclick="window.open('http://struts.apache.org/2.x/docs/tag-syntax.html')">[More details]</a>
+</p>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/interactive/jsp_1.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/interactive/jsp_1.jsp b/apps/showcase/src/main/webapp/WEB-INF/interactive/jsp_1.jsp
new file mode 100644
index 0000000..a96ab7a
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/interactive/jsp_1.jsp
@@ -0,0 +1,52 @@
+<%
+    request.setAttribute("decorator", "none");
+    response.setHeader("Cache-Control","no-cache"); //HTTP 1.1
+    response.setHeader("Pragma","no-cache"); //HTTP 1.0
+    response.setDateHeader ("Expires", 0); //prevents caching at the proxy server
+%>
+<p>
+    <b>Print property value, using the <i>property tag</i></b>
+</p>
+<p>
+    On the OGNL demo you learned how to access values from the Value Stack using OGNL expressions.
+    The <i>property</i> tag is used to print to the page the result of an OGNL expression. The expression
+    is specified in the <i>value</i> attribute.
+</p>
+<p>To print the value of the expression <i>name</i> to the page type:
+<p>
+    <i id="example0">
+        &lt;s:property value=&quot;name&quot; /&gt;
+    </i>
+</p>
+<p>
+    on the JSP console and hit enter. <a href="#" onclick="execJSP('example0')">Do it for me</a>
+</p>
+<p>
+    As you saw in the OGNL demo, to print a property of an object that is not on top of the stack,
+    use the <i>#object.property</i> notation.
+</p>
+<p>To print the value for the key "struts.view_uri" in <i>request</i> to the page type:
+<p>
+    <i id="example1">
+        &lt;s:property value=&quot;#request['struts.view_uri']&quot; /&gt;
+    </i>
+</p>
+<p>
+    on the JSP console and hit enter. <a href="#" onclick="execJSP('example1')">Do it for me</a>
+</p>
+<p>
+    <b>Print property value, using the <i>$</i> operator</b>
+</p>
+<p>Use the <i>${name}</i> notation to print values from the Value Stack to the page.
+<p>To print the value of the expression <i>name</i> to the page type:
+<p>
+    <i id="example2">
+        &#36;{name}
+    </i>
+</p>
+<p>
+    on the JSP console and hit enter. <a href="#" onclick="execJSP('example2')">Do it for me</a>
+</p>
+<p>
+    <a href="#" onclick="window.open('http://struts.apache.org/2.x/docs/property.html')">[More details]</a>
+</p>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/interactive/jsp_2.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/interactive/jsp_2.jsp b/apps/showcase/src/main/webapp/WEB-INF/interactive/jsp_2.jsp
new file mode 100644
index 0000000..565a7ec
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/interactive/jsp_2.jsp
@@ -0,0 +1,54 @@
+<%
+    request.setAttribute("decorator", "none");
+    response.setHeader("Cache-Control","no-cache"); //HTTP 1.1
+    response.setHeader("Pragma","no-cache"); //HTTP 1.0
+    response.setDateHeader ("Expires", 0); //prevents caching at the proxy server
+%>
+<p>
+    <b><i>if</i> tag</b>
+</p>
+<p>
+    The <i>if</i> tag allows you to optionally execute a JSP section. Multiple <i>elseif</i> tags
+    and one <i>else</i> tag can be associated to an <i>if tag</i>.
+</p>
+<p>    
+    To say hello to John Galt type:
+</p>
+<p>
+    <pre id="example0">
+        &lt;s:if test="name == 'John Galt'"&gt;
+            Hi John
+        &lt;/s:if&gt;
+        &lt;s:else&gt;
+            I don't know you!
+        &lt;/s:else&gt;
+    </pre>
+</p>
+<p>
+    on the JSP console and hit enter. <a href="#" onclick="execJSP('example0')">Do it for me</a>
+</p>
+<p>
+    <b><i>iterator</i> tag</b>
+</p>
+<p>
+    The <i>iterator</i> tag loops over an <i>Iterable</i> object one object at a time into
+    the Value Stack (the value will be on top of the stack).
+</p>
+<p>    
+    To print the all the elements in the "bands" property type:
+</p>
+<p>
+    <pre id="example1">
+        &lt;s:iterator value="bands"&gt;
+            &lt;s:property /&gt;
+            &lt;br /&gt;
+        &lt;/s:iterator&gt;
+    </pre>
+</p>
+<p>
+    on the JSP console and hit enter. <a href="#" onclick="execJSP('example1')">Do it for me</a>
+</p>
+<p>
+    <a href="#" onclick="window.open('http://struts.apache.org/2.x/docs/property.html')">[More on the <i>if</i> tag]</a>
+    <a href="#" onclick="window.open('http://struts.apache.org/2.x/docs/iterator.html')">[More on the <i>iterator</i> tag]</a>
+</p>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/interactive/jsp_3.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/interactive/jsp_3.jsp b/apps/showcase/src/main/webapp/WEB-INF/interactive/jsp_3.jsp
new file mode 100644
index 0000000..483db12
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/interactive/jsp_3.jsp
@@ -0,0 +1,65 @@
+<%
+    request.setAttribute("decorator", "none");
+    response.setHeader("Cache-Control","no-cache"); //HTTP 1.1
+    response.setHeader("Pragma","no-cache"); //HTTP 1.0
+    response.setDateHeader ("Expires", 0); //prevents caching at the proxy server
+%>
+<p>
+    <b><i>set</i> tag</b>
+</p>
+<p>
+    The <i>set</i> tag sets the variable with the name specified in the <i>name</i> attribute to 
+    the value specified in the <i>value</i> attribute in the scope
+    entered in the <i>scope</i> attribute. The available scopes are:
+    <ul>
+        <li>application - application scope according to servlet spec</li>
+        <li>session - session scope according to servlet spec</li>
+        <li>request - request scope according to servlet spec</li>
+        <li>page - page scope according to servlet sepc</li>
+        <li>action - the value will be set in the request scope and Struts' action context</li>
+        
+    </ul>
+</p>
+<p>    
+    This example sets <i>favouriteBand</i> in the request scope to the first element of the <i>bands</i> property:
+</p>
+<p>
+    <pre id="example0">
+        &lt;s:set name="favouriteBand" value="bands[0]" /&gt;
+        &lt;s:property value="#favouriteBand" /&gt;
+    </pre>
+</p>
+<p>
+    <a href="#" onclick="execJSP('example0')">Do it for me</a>
+</p>
+<p>
+    <b><i>url</i> tag</b>
+</p>
+<p>
+    The <i>url</i> tag is used to build urls (who would have guessed!). To build an url mapping to
+    an action, set the <i>namespace</i> and <i>action</i> attributes. The url will be stored under
+    the name specified in the <i>id</i> attribute. <b>url tag uses the <i>id</i> attribute while 
+    the <i>set</i> tag uses name</b>. To specify a value (no action lookup), just use the <i>value</i>
+    attribute. <i>param</i> tags can be nested inside the <i>url</i> tag to add parameters to the url.
+</p>
+<p>    
+    First link creates a url that maps to an action, second one creates a url to google, passing one parameter:
+</p>
+<p>
+    <pre id="example1">
+        &lt;s:url id="evalAction" namespace="/nodecorate" action="jspEval" /&gt;
+        &lt;s:a href="%{#evalAction}" &gt;Eval&lt;/s:a&gt;
+        
+        &lt;s:url id="google" value="http://www.google.com" &gt;
+            &lt;s:param name="q" value="%{'Struts 2'}" /&gt; 
+        &lt;/s:url&gt;
+        &lt;s:a href="%{#google}" &gt;Eval&lt;/s:a&gt;
+    </pre>
+</p>
+<p>
+   <a href="#" onclick="execJSP('example1')">Do it for me</a>
+</p>
+<p>
+    <a href="#" onclick="window.open('http://struts.apache.org/2.x/docs/set.html')">[More on the <i>set</i> tag]</a>
+    <a href="#" onclick="window.open('http://struts.apache.org/2.x/docs/url.html')">[More on the <i>url</i> tag]</a>
+</p>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/interactive/jsp_4.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/interactive/jsp_4.jsp b/apps/showcase/src/main/webapp/WEB-INF/interactive/jsp_4.jsp
new file mode 100644
index 0000000..8d63ee5
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/interactive/jsp_4.jsp
@@ -0,0 +1,16 @@
+<%
+    request.setAttribute("decorator", "none");
+    response.setHeader("Cache-Control","no-cache"); //HTTP 1.1
+    response.setHeader("Pragma","no-cache"); //HTTP 1.0
+    response.setDateHeader ("Expires", 0); //prevents caching at the proxy server
+%>
+<p>
+    <b>More on JSP tags</b>
+</p>
+<p>
+  Struts 2 provides many more tags which you can learn about 
+  <a href="#" onclick="window.open('http://cwiki.apache.org/confluence/display/WW/Tag+Reference')">here</a>
+</p>
+<br/>
+You can keep playing with the JSP console or 
+<a href="#" onclick="startOgnl()">Start OGNL Interactive Demo</a>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/interactive/ognl_0.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/interactive/ognl_0.jsp b/apps/showcase/src/main/webapp/WEB-INF/interactive/ognl_0.jsp
new file mode 100644
index 0000000..7f441e4
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/interactive/ognl_0.jsp
@@ -0,0 +1,30 @@
+<%
+    request.setAttribute("decorator", "none");
+    response.setHeader("Cache-Control","no-cache"); //HTTP 1.1
+    response.setHeader("Pragma","no-cache"); //HTTP 1.0
+    response.setDateHeader ("Expires", 0); //prevents caching at the proxy server
+%>
+<p>
+    <b>Accessing properties</b>
+</p>
+<p>
+    The framework uses a standard naming context to evaluate OGNL expressions. 
+    The top level object dealing with OGNL is a Map (usually referred as a context map or context).
+    OGNL has a notion of there being a root (or default) object within the context. 
+    In OGNL expressions, the properties of the root object can be referenced without any special "marker" notion.
+    References to other objects are marked with a pound sign (#).
+    
+    In this example (and in your JSP pages) the last action executed will be on the top of the stack. 
+</p>
+<p>    
+    <a href="#" onclick="selectClassSrcTab()">This action</a> is available on the third tab above. 
+    To access the <i>name</i> field type:
+</p>
+<p>
+    <i id="example">
+        name
+    </i>
+</p>
+<p>
+    on the OGNL console and hit enter. <a href="#" onclick="execOgnl()">Do it for me</a>
+</p>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/interactive/ognl_1.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/interactive/ognl_1.jsp b/apps/showcase/src/main/webapp/WEB-INF/interactive/ognl_1.jsp
new file mode 100644
index 0000000..17505bd
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/interactive/ognl_1.jsp
@@ -0,0 +1,28 @@
+<%
+    request.setAttribute("decorator", "none");
+    response.setHeader("Cache-Control","no-cache"); //HTTP 1.1
+    response.setHeader("Pragma","no-cache"); //HTTP 1.0
+    response.setDateHeader ("Expires", 0); //prevents caching at the proxy server
+%>
+<p>
+    <b>Accessing nested properties</b>
+</p>
+<p>
+    To access nested properties, use the dot "." operator to concatenate the property names. The action
+    class has a <i>book</i> field, with <i>title</i> and <i>author</i> fields.
+</p>
+<p>
+    To access the name of the book type:
+</p>
+<p>
+    <i id="example">
+        book.title
+    </i>
+</p>
+<p>
+    on the OGNL console and hit enter. <a href="#" onclick="execOgnl()">Do it for me</a>
+</p>
+<br/>
+<p>
+    <a href="#" onclick="window.open('http://www.ognl.org/2.6.9/Documentation/html/LanguageGuide/properties.html')">[More details]</a>
+</p>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/interactive/ognl_2.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/interactive/ognl_2.jsp b/apps/showcase/src/main/webapp/WEB-INF/interactive/ognl_2.jsp
new file mode 100644
index 0000000..c1716db
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/interactive/ognl_2.jsp
@@ -0,0 +1,43 @@
+<%
+    request.setAttribute("decorator", "none");
+    response.setHeader("Cache-Control","no-cache"); //HTTP 1.1
+    response.setHeader("Pragma","no-cache"); //HTTP 1.0
+    response.setDateHeader ("Expires", 0); //prevents caching at the proxy server
+%>
+<p>
+    <b>Accessing properties inside Arrays</b>
+</p>
+<p>
+    To access properties inside arrays, use the brackets "[]" operators with the desired index(starting from 0). The action
+    class has an array of String in the field <i>bands</i>.
+</p>
+<p>
+    To access the second element in the <i>bands</i> array type:
+</p>
+<p>
+    <i id="example0">
+        bands[1]
+    </i>
+</p>
+<p>
+    on the OGNL console and hit enter. <a href="#" onclick="execOgnl('example0')">Do it for me</a>
+</p>
+<p>
+    <b>Accessing properties inside Lists</b>
+</p>
+<p>Lists can be accessed on the same way. The action class has a List of String on the field <i>movies</i>.</p>
+<p>
+    To access the first element in the <i>movies</i> list type:
+</p>
+<p>
+    <i id="example1">
+        movies[0]
+    </i>
+</p>
+<p>
+    on the OGNL console and hit enter.  <a href="#" onclick="execOgnl('example1')">Do it for me</a>
+</p>
+<br/>
+<p>
+    <a href="#" onclick="window.open('http://www.ognl.org/2.6.9/Documentation/html/LanguageGuide/indexing.html#N10184')">[More details]</a>
+</p>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/interactive/ognl_3.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/interactive/ognl_3.jsp b/apps/showcase/src/main/webapp/WEB-INF/interactive/ognl_3.jsp
new file mode 100644
index 0000000..03c3095
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/interactive/ognl_3.jsp
@@ -0,0 +1,54 @@
+<%
+    request.setAttribute("decorator", "none");
+    response.setHeader("Cache-Control","no-cache"); //HTTP 1.1
+    response.setHeader("Pragma","no-cache"); //HTTP 1.0
+    response.setDateHeader ("Expires", 0); //prevents caching at the proxy server
+%>
+<p>
+    <b>Accessing properties inside Maps</b>
+</p>
+<p>
+    To access properties inside maps, use the brackets "[]" operators with the desired key. The action
+    class has a map of Book objects in the field <i>books</i>.
+</p>
+<p>
+    To access the book with key "Iliad" in the <i>books</i> map type:
+</p>
+<p>
+    <i id="example0">
+        books['Iliad']
+    </i>
+</p>
+<p>
+    on the OGNL console and hit enter. <a href="#" onclick="execOgnl('example0')">Do it for me</a>
+</p>
+<p>If the key does not have spaces in it, you can access an element in the map, using the dot "." operator.</p>
+<p>
+    To access the book with key "Iliad" in the <i>books</i> map type:
+</p>
+<p>
+    <i id="example1">
+        books.Iliad
+    </i>
+</p>
+<p>
+    on the OGNL console and hit enter. <a href="#" onclick="execOgnl('example1')">Do it for me</a>
+</p>
+<p>
+    Note that the object returned is of type Book. If you want to access one of its properties, you can do so using the dot
+    "." operator as you did before.</p>
+<p>
+    To access the <i>author</i> property of the book with key "Iliad" in the <i>books</i> map type:
+</p>
+<p>
+    <i id="example2">
+        books['Iliad'].author
+    </i>
+</p>
+<p>
+    on the OGNL console and hit enter. <a href="#" onclick="execOgnl('example2')">Do it for me</a>
+</p>
+<br/>
+<p>
+    <a href="#" onclick="window.open('http://www.ognl.org/2.6.9/Documentation/html/LanguageGuide/indexing.html#N10184')">[More details]</a>
+</p>

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/interactive/ognl_4.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/interactive/ognl_4.jsp b/apps/showcase/src/main/webapp/WEB-INF/interactive/ognl_4.jsp
new file mode 100644
index 0000000..7e158d5
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/interactive/ognl_4.jsp
@@ -0,0 +1,32 @@
+<%
+    request.setAttribute("decorator", "none");
+    response.setHeader("Cache-Control","no-cache"); //HTTP 1.1
+    response.setHeader("Pragma","no-cache"); //HTTP 1.0
+    response.setDateHeader ("Expires", 0); //prevents caching at the proxy server
+%>
+<p>
+    <b>Accessing properties on the stack</b>
+</p>
+<p>
+   Object that are not on the top of the Value Stack are accessed using the "#name" notation. 
+   Some objects are always pushed into the stack by Struts, like:
+</p>
+<ul>
+    <li>#application</li>
+    <li>#session</li>
+    <li>#request</li>
+    <li>#parameters</li>
+</ul>
+<p>To see the value of the first parameter type:</p>
+<p>
+    <i id="example">
+        #parameters['debug'][0]
+    </i>
+</p>
+<p>
+    on the OGNL console and hit enter.  <a href="#" onclick="execOgnl()">Do it for me</a>
+</p>
+<br/>
+<p>
+    <a href="#" onclick="window.open('http://struts.apache.org/2.x/docs/ognl.html')">[More details]</a>
+</p>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/interactive/ognl_5.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/interactive/ognl_5.jsp b/apps/showcase/src/main/webapp/WEB-INF/interactive/ognl_5.jsp
new file mode 100644
index 0000000..5624567
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/interactive/ognl_5.jsp
@@ -0,0 +1,25 @@
+<%
+    request.setAttribute("decorator", "none");
+    response.setHeader("Cache-Control","no-cache"); //HTTP 1.1
+    response.setHeader("Pragma","no-cache"); //HTTP 1.0
+    response.setDateHeader ("Expires", 0); //prevents caching at the proxy server
+%>
+<p>
+    <b>Calling methods</b>
+</p>
+<p>
+  OGNL follows Java's syntax to execute a method.
+</p>
+<p>To execute the <i>getTitle()</i> method on the <i>book</i> object type:</p>
+<p>
+    <i id="example">
+        book.getTitle() 
+    </i>
+</p>
+<p>
+    on the OGNL console and hit enter.  <a href="#" onclick="execOgnl()">Do it for me</a>
+</p>
+<br/>
+<p>
+    <a href="#" onclick="window.open('http://www.ognl.org/2.6.9/Documentation/html/LanguageGuide/methods.html')">[More details]</a>
+</p>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/interactive/ognl_6.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/interactive/ognl_6.jsp b/apps/showcase/src/main/webapp/WEB-INF/interactive/ognl_6.jsp
new file mode 100644
index 0000000..91466e1
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/interactive/ognl_6.jsp
@@ -0,0 +1,43 @@
+<%
+    request.setAttribute("decorator", "none");
+    response.setHeader("Cache-Control","no-cache"); //HTTP 1.1
+    response.setHeader("Pragma","no-cache"); //HTTP 1.0
+    response.setDateHeader ("Expires", 0); //prevents caching at the proxy server
+%>
+<p>
+    <b>Expressions</b>
+</p>
+<p>
+  OGNL supports expressions using primitive values.
+</p>
+<p>Arithmetic:</p>
+<p>
+    <i id="example0">
+        (6 - 2)/2
+    </i>
+</p>
+<p>
+    on the OGNL console and hit enter.  <a href="#" onclick="execOgnl('example0')">Do it for me</a>
+</p>
+<p>Logical:</p>
+<p>
+    <i id="example1">
+        (true || false) and true
+    </i>
+</p>
+<p>
+    on the OGNL console and hit enter.  <a href="#" onclick="execOgnl('example1')">Do it for me</a>
+</p>
+<p>Equality:</p>
+<p>
+    <i id="example2">
+        'a' == 'a'
+    </i>
+</p>
+<p>
+    on the OGNL console and hit enter.  <a href="#" onclick="execOgnl('example2')">Do it for me</a>
+</p>
+<p>
+    OGNL supports many more operators and expressions, see <a href="#" onclick="window.open('http://www.ognl.org/2.6.9/Documentation/html/LanguageGuide/apa.html#operators')">[Operators Reference]</a>
+    for more details.
+</p>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/interactive/ognl_7.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/interactive/ognl_7.jsp b/apps/showcase/src/main/webapp/WEB-INF/interactive/ognl_7.jsp
new file mode 100644
index 0000000..a0318ab
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/interactive/ognl_7.jsp
@@ -0,0 +1,55 @@
+<%
+    request.setAttribute("decorator", "none");
+    response.setHeader("Cache-Control","no-cache"); //HTTP 1.1
+    response.setHeader("Pragma","no-cache"); //HTTP 1.0
+    response.setDateHeader ("Expires", 0); //prevents caching at the proxy server
+%>
+<p><b>Creating arrays</b></p>
+<p>
+    OGNL follows Java syntax to create arrys.
+</p>
+<p>
+    Create an array of integers:
+</p>
+<p>
+    <i id="example0">
+        new int[] {0, 1, 2}
+    </i>
+</p>
+<p>
+    on the OGNL console and hit enter. <a href="#" onclick="execOgnl('example0')">Do it for me</a>
+</p>
+<p><b>Creating lists</b></p>
+<p>
+    To create a list, enclose a list of comma separated expression in a pair of braces.
+</p>
+<p>
+    Create a list of Strings:
+</p>
+<p>
+    <i id="example1">
+        {'Is', 'there', 'any', 'body', 'out', 'there?'}
+    </i>
+</p>
+<p>
+    on the OGNL console and hit enter. <a href="#" onclick="execOgnl('example1')">Do it for me</a>
+</p>
+<p><b>Creating maps</b></p>
+<p>
+    To create a map, use the syntax #@MAP_TYPE@{key:value}.
+</p>
+<p>
+    Create a LinkedHashMap:
+</p>
+<p>
+    <i id="example2">
+        #@java.util.LinkedHashMap@{'name': 'John Galt', 'job' : 'Engineer'}
+    </i>
+</p>
+<p>
+    on the OGNL console and hit enter. <a href="#" onclick="execOgnl('example2')">Do it for me</a>
+</p>
+<br/>
+<p>
+    <a href="#" onclick="window.open('http://www.ognl.org/2.6.9/Documentation/html/LanguageGuide/collectionConstruction.html#listConstruction')">[More details]</a>
+</p>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/interactive/ognl_8.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/interactive/ognl_8.jsp b/apps/showcase/src/main/webapp/WEB-INF/interactive/ognl_8.jsp
new file mode 100644
index 0000000..3a2cc6e
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/interactive/ognl_8.jsp
@@ -0,0 +1,18 @@
+<%
+    request.setAttribute("decorator", "none");
+    response.setHeader("Cache-Control","no-cache"); //HTTP 1.1
+    response.setHeader("Pragma","no-cache"); //HTTP 1.0
+    response.setDateHeader ("Expires", 0); //prevents caching at the proxy server
+%>
+<p>
+    <b>More on OGNL</b>
+</p>
+<p>
+  There are a lot of OGNL features that we have not covered on this short tutorial. 
+</p>
+<br/>
+<p>
+    To learn more see the <a href="#" onclick="window.open('http://www.ognl.org/2.6.9/Documentation/html/LanguageGuide/index.html')">[OGNL Documentation]</a>
+</p>
+You can keep playing with the OGNL console or 
+<a href="#" onclick="startJSP()">Start JSP Interactive Demo</a>
\ No newline at end of file


[10/10] git commit: Reverts security constraint

Posted by lu...@apache.org.
Reverts security constraint


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

Branch: refs/heads/feature/move-jsps-under-webinf
Commit: c0a312a82209a5dae219e10245b3a55c0408aadf
Parents: 65eb975
Author: Lukasz Lenart <lu...@apache.org>
Authored: Sun Mar 2 22:17:12 2014 +0100
Committer: Lukasz Lenart <lu...@apache.org>
Committed: Sun Mar 2 22:17:12 2014 +0100

----------------------------------------------------------------------
 apps/portlet/src/main/webapp/WEB-INF/web.xml | 17 -----------------
 1 file changed, 17 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/struts/blob/c0a312a8/apps/portlet/src/main/webapp/WEB-INF/web.xml
----------------------------------------------------------------------
diff --git a/apps/portlet/src/main/webapp/WEB-INF/web.xml b/apps/portlet/src/main/webapp/WEB-INF/web.xml
index d4a3c79..f424419 100644
--- a/apps/portlet/src/main/webapp/WEB-INF/web.xml
+++ b/apps/portlet/src/main/webapp/WEB-INF/web.xml
@@ -28,21 +28,4 @@
     	</listener-class>
     </listener>
 
-    <!-- Restricts access to pure JSP files - access available only via Struts action -->
-    <security-constraint>
-        <display-name>No direct JSP access</display-name>
-        <web-resource-collection>
-            <web-resource-name>No-JSP</web-resource-name>
-            <url-pattern>*.jsp</url-pattern>
-        </web-resource-collection>
-        <auth-constraint>
-            <role-name>no-users</role-name>
-        </auth-constraint>
-    </security-constraint>
-
-    <security-role>
-        <description>Don't assign users to this role</description>
-        <role-name>no-users</role-name>
-    </security-role>
-
 </web-app>


[06/10] Moves showcase related JSPs under WEB-INF

Posted by lu...@apache.org.
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


[02/10] Moves showcase related JSPs under WEB-INF

Posted by lu...@apache.org.
http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/interactive/ognl_7.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/interactive/ognl_7.jsp b/apps/showcase/src/main/webapp/interactive/ognl_7.jsp
deleted file mode 100644
index a0318ab..0000000
--- a/apps/showcase/src/main/webapp/interactive/ognl_7.jsp
+++ /dev/null
@@ -1,55 +0,0 @@
-<%
-    request.setAttribute("decorator", "none");
-    response.setHeader("Cache-Control","no-cache"); //HTTP 1.1
-    response.setHeader("Pragma","no-cache"); //HTTP 1.0
-    response.setDateHeader ("Expires", 0); //prevents caching at the proxy server
-%>
-<p><b>Creating arrays</b></p>
-<p>
-    OGNL follows Java syntax to create arrys.
-</p>
-<p>
-    Create an array of integers:
-</p>
-<p>
-    <i id="example0">
-        new int[] {0, 1, 2}
-    </i>
-</p>
-<p>
-    on the OGNL console and hit enter. <a href="#" onclick="execOgnl('example0')">Do it for me</a>
-</p>
-<p><b>Creating lists</b></p>
-<p>
-    To create a list, enclose a list of comma separated expression in a pair of braces.
-</p>
-<p>
-    Create a list of Strings:
-</p>
-<p>
-    <i id="example1">
-        {'Is', 'there', 'any', 'body', 'out', 'there?'}
-    </i>
-</p>
-<p>
-    on the OGNL console and hit enter. <a href="#" onclick="execOgnl('example1')">Do it for me</a>
-</p>
-<p><b>Creating maps</b></p>
-<p>
-    To create a map, use the syntax #@MAP_TYPE@{key:value}.
-</p>
-<p>
-    Create a LinkedHashMap:
-</p>
-<p>
-    <i id="example2">
-        #@java.util.LinkedHashMap@{'name': 'John Galt', 'job' : 'Engineer'}
-    </i>
-</p>
-<p>
-    on the OGNL console and hit enter. <a href="#" onclick="execOgnl('example2')">Do it for me</a>
-</p>
-<br/>
-<p>
-    <a href="#" onclick="window.open('http://www.ognl.org/2.6.9/Documentation/html/LanguageGuide/collectionConstruction.html#listConstruction')">[More details]</a>
-</p>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/interactive/ognl_8.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/interactive/ognl_8.jsp b/apps/showcase/src/main/webapp/interactive/ognl_8.jsp
deleted file mode 100644
index 3a2cc6e..0000000
--- a/apps/showcase/src/main/webapp/interactive/ognl_8.jsp
+++ /dev/null
@@ -1,18 +0,0 @@
-<%
-    request.setAttribute("decorator", "none");
-    response.setHeader("Cache-Control","no-cache"); //HTTP 1.1
-    response.setHeader("Pragma","no-cache"); //HTTP 1.0
-    response.setDateHeader ("Expires", 0); //prevents caching at the proxy server
-%>
-<p>
-    <b>More on OGNL</b>
-</p>
-<p>
-  There are a lot of OGNL features that we have not covered on this short tutorial. 
-</p>
-<br/>
-<p>
-    To learn more see the <a href="#" onclick="window.open('http://www.ognl.org/2.6.9/Documentation/html/LanguageGuide/index.html')">[OGNL Documentation]</a>
-</p>
-You can keep playing with the OGNL console or 
-<a href="#" onclick="startJSP()">Start JSP Interactive Demo</a>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/jsf/employee/edit.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/jsf/employee/edit.jsp b/apps/showcase/src/main/webapp/jsf/employee/edit.jsp
deleted file mode 100644
index 6f1d219..0000000
--- a/apps/showcase/src/main/webapp/jsf/employee/edit.jsp
+++ /dev/null
@@ -1,113 +0,0 @@
-<%--
-
- 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/jsf/employee/list.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/jsf/employee/list.jsp b/apps/showcase/src/main/webapp/jsf/employee/list.jsp
deleted file mode 100644
index 403c92e..0000000
--- a/apps/showcase/src/main/webapp/jsf/employee/list.jsp
+++ /dev/null
@@ -1,75 +0,0 @@
-<%--
-
- 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/jsf/index.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/jsf/index.jsp b/apps/showcase/src/main/webapp/jsf/index.jsp
deleted file mode 100644
index 9685a84..0000000
--- a/apps/showcase/src/main/webapp/jsf/index.jsp
+++ /dev/null
@@ -1,35 +0,0 @@
-<%@ 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/modelDriven/modelDriven.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/modelDriven/modelDriven.jsp b/apps/showcase/src/main/webapp/modelDriven/modelDriven.jsp
deleted file mode 100644
index d51533e..0000000
--- a/apps/showcase/src/main/webapp/modelDriven/modelDriven.jsp
+++ /dev/null
@@ -1,42 +0,0 @@
-<%@ 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/modelDriven/modelDrivenResult.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/modelDriven/modelDrivenResult.jsp b/apps/showcase/src/main/webapp/modelDriven/modelDrivenResult.jsp
deleted file mode 100644
index d80b966..0000000
--- a/apps/showcase/src/main/webapp/modelDriven/modelDrivenResult.jsp
+++ /dev/null
@@ -1,42 +0,0 @@
-<%@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/person/edit-person.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/person/edit-person.jsp b/apps/showcase/src/main/webapp/person/edit-person.jsp
deleted file mode 100644
index a7b0d98..0000000
--- a/apps/showcase/src/main/webapp/person/edit-person.jsp
+++ /dev/null
@@ -1,53 +0,0 @@
-<%@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/person/index.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/person/index.jsp b/apps/showcase/src/main/webapp/person/index.jsp
deleted file mode 100644
index f7db6cf..0000000
--- a/apps/showcase/src/main/webapp/person/index.jsp
+++ /dev/null
@@ -1 +0,0 @@
-<% 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/person/list-people.ftl
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/person/list-people.ftl b/apps/showcase/src/main/webapp/person/list-people.ftl
deleted file mode 100644
index ac29b17..0000000
--- a/apps/showcase/src/main/webapp/person/list-people.ftl
+++ /dev/null
@@ -1,44 +0,0 @@
-<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/person/new-person.ftl
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/person/new-person.ftl b/apps/showcase/src/main/webapp/person/new-person.ftl
deleted file mode 100644
index 6e99f07..0000000
--- a/apps/showcase/src/main/webapp/person/new-person.ftl
+++ /dev/null
@@ -1,49 +0,0 @@
-<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/showcase.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/showcase.jsp b/apps/showcase/src/main/webapp/showcase.jsp
deleted file mode 100644
index bb23e78..0000000
--- a/apps/showcase/src/main/webapp/showcase.jsp
+++ /dev/null
@@ -1,30 +0,0 @@
-<%-- 
-    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/tags/non-ui/actionPrefix/actionPrefix.ftl
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/tags/non-ui/actionPrefix/actionPrefix.ftl b/apps/showcase/src/main/webapp/tags/non-ui/actionPrefix/actionPrefix.ftl
deleted file mode 100644
index f87b6d4..0000000
--- a/apps/showcase/src/main/webapp/tags/non-ui/actionPrefix/actionPrefix.ftl
+++ /dev/null
@@ -1,25 +0,0 @@
-<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/tags/non-ui/actionPrefix/actionPrefixExample.ftl
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/tags/non-ui/actionPrefix/actionPrefixExample.ftl b/apps/showcase/src/main/webapp/tags/non-ui/actionPrefix/actionPrefixExample.ftl
deleted file mode 100644
index 84d477f..0000000
--- a/apps/showcase/src/main/webapp/tags/non-ui/actionPrefix/actionPrefixExample.ftl
+++ /dev/null
@@ -1,54 +0,0 @@
-<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/tags/non-ui/actionPrefix/methodPrefix.ftl
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/tags/non-ui/actionPrefix/methodPrefix.ftl b/apps/showcase/src/main/webapp/tags/non-ui/actionPrefix/methodPrefix.ftl
deleted file mode 100644
index 836bb22..0000000
--- a/apps/showcase/src/main/webapp/tags/non-ui/actionPrefix/methodPrefix.ftl
+++ /dev/null
@@ -1,25 +0,0 @@
-<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/tags/non-ui/actionPrefix/normalSubmit.ftl
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/tags/non-ui/actionPrefix/normalSubmit.ftl b/apps/showcase/src/main/webapp/tags/non-ui/actionPrefix/normalSubmit.ftl
deleted file mode 100644
index e30d88c..0000000
--- a/apps/showcase/src/main/webapp/tags/non-ui/actionPrefix/normalSubmit.ftl
+++ /dev/null
@@ -1,24 +0,0 @@
-<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/tags/non-ui/actionPrefix/redirectActionPrefix.ftl
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/tags/non-ui/actionPrefix/redirectActionPrefix.ftl b/apps/showcase/src/main/webapp/tags/non-ui/actionPrefix/redirectActionPrefix.ftl
deleted file mode 100644
index f21fc45..0000000
--- a/apps/showcase/src/main/webapp/tags/non-ui/actionPrefix/redirectActionPrefix.ftl
+++ /dev/null
@@ -1,28 +0,0 @@
-<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/tags/non-ui/actionTag/includedPage.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/tags/non-ui/actionTag/includedPage.jsp b/apps/showcase/src/main/webapp/tags/non-ui/actionTag/includedPage.jsp
deleted file mode 100644
index abfa253..0000000
--- a/apps/showcase/src/main/webapp/tags/non-ui/actionTag/includedPage.jsp
+++ /dev/null
@@ -1 +0,0 @@
-<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/tags/non-ui/actionTag/includedPage2.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/tags/non-ui/actionTag/includedPage2.jsp b/apps/showcase/src/main/webapp/tags/non-ui/actionTag/includedPage2.jsp
deleted file mode 100644
index 6cdc040..0000000
--- a/apps/showcase/src/main/webapp/tags/non-ui/actionTag/includedPage2.jsp
+++ /dev/null
@@ -1,2 +0,0 @@
-
-<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/tags/non-ui/actionTag/includedPage3.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/tags/non-ui/actionTag/includedPage3.jsp b/apps/showcase/src/main/webapp/tags/non-ui/actionTag/includedPage3.jsp
deleted file mode 100644
index 4ebbcc7..0000000
--- a/apps/showcase/src/main/webapp/tags/non-ui/actionTag/includedPage3.jsp
+++ /dev/null
@@ -1,2 +0,0 @@
-
-<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/tags/non-ui/actionTag/showActionTagDemo.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/tags/non-ui/actionTag/showActionTagDemo.jsp b/apps/showcase/src/main/webapp/tags/non-ui/actionTag/showActionTagDemo.jsp
deleted file mode 100644
index 1fb5b44..0000000
--- a/apps/showcase/src/main/webapp/tags/non-ui/actionTag/showActionTagDemo.jsp
+++ /dev/null
@@ -1,52 +0,0 @@
-<%@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/tags/non-ui/date.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/tags/non-ui/date.jsp b/apps/showcase/src/main/webapp/tags/non-ui/date.jsp
deleted file mode 100644
index 8581d8f..0000000
--- a/apps/showcase/src/main/webapp/tags/non-ui/date.jsp
+++ /dev/null
@@ -1,114 +0,0 @@
-<%@ 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/tags/non-ui/debug.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/tags/non-ui/debug.jsp b/apps/showcase/src/main/webapp/tags/non-ui/debug.jsp
deleted file mode 100644
index 26c49a5..0000000
--- a/apps/showcase/src/main/webapp/tags/non-ui/debug.jsp
+++ /dev/null
@@ -1,30 +0,0 @@
-<%@ 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/tags/non-ui/ifTag/testIf.ftl
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/tags/non-ui/ifTag/testIf.ftl b/apps/showcase/src/main/webapp/tags/non-ui/ifTag/testIf.ftl
deleted file mode 100644
index 4b9fab2..0000000
--- a/apps/showcase/src/main/webapp/tags/non-ui/ifTag/testIf.ftl
+++ /dev/null
@@ -1,618 +0,0 @@
-<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/tags/non-ui/ifTag/testIf.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/tags/non-ui/ifTag/testIf.jsp b/apps/showcase/src/main/webapp/tags/non-ui/ifTag/testIf.jsp
deleted file mode 100644
index c049283..0000000
--- a/apps/showcase/src/main/webapp/tags/non-ui/ifTag/testIf.jsp
+++ /dev/null
@@ -1,619 +0,0 @@
-<%@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/tags/non-ui/iteratorTag/appendIteratorTagDemoResult.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/tags/non-ui/iteratorTag/appendIteratorTagDemoResult.jsp b/apps/showcase/src/main/webapp/tags/non-ui/iteratorTag/appendIteratorTagDemoResult.jsp
deleted file mode 100644
index 32b9fec..0000000
--- a/apps/showcase/src/main/webapp/tags/non-ui/iteratorTag/appendIteratorTagDemoResult.jsp
+++ /dev/null
@@ -1,34 +0,0 @@
-<%@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/tags/non-ui/iteratorTag/iteratorGeneratorTagDemoResult.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/tags/non-ui/iteratorTag/iteratorGeneratorTagDemoResult.jsp b/apps/showcase/src/main/webapp/tags/non-ui/iteratorTag/iteratorGeneratorTagDemoResult.jsp
deleted file mode 100644
index 5ebb9fc..0000000
--- a/apps/showcase/src/main/webapp/tags/non-ui/iteratorTag/iteratorGeneratorTagDemoResult.jsp
+++ /dev/null
@@ -1,29 +0,0 @@
-<%@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/tags/non-ui/iteratorTag/mergeIteratorTagDemoResult.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/tags/non-ui/iteratorTag/mergeIteratorTagDemoResult.jsp b/apps/showcase/src/main/webapp/tags/non-ui/iteratorTag/mergeIteratorTagDemoResult.jsp
deleted file mode 100644
index 15cab7d..0000000
--- a/apps/showcase/src/main/webapp/tags/non-ui/iteratorTag/mergeIteratorTagDemoResult.jsp
+++ /dev/null
@@ -1,33 +0,0 @@
-<%@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/tags/non-ui/iteratorTag/showAppendIteratorTagDemo.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/tags/non-ui/iteratorTag/showAppendIteratorTagDemo.jsp b/apps/showcase/src/main/webapp/tags/non-ui/iteratorTag/showAppendIteratorTagDemo.jsp
deleted file mode 100644
index 259cfc4..0000000
--- a/apps/showcase/src/main/webapp/tags/non-ui/iteratorTag/showAppendIteratorTagDemo.jsp
+++ /dev/null
@@ -1,28 +0,0 @@
-<%@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/tags/non-ui/iteratorTag/showIteratorGeneratorTagDemo.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/tags/non-ui/iteratorTag/showIteratorGeneratorTagDemo.jsp b/apps/showcase/src/main/webapp/tags/non-ui/iteratorTag/showIteratorGeneratorTagDemo.jsp
deleted file mode 100644
index e5a0665..0000000
--- a/apps/showcase/src/main/webapp/tags/non-ui/iteratorTag/showIteratorGeneratorTagDemo.jsp
+++ /dev/null
@@ -1,29 +0,0 @@
-<%@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/tags/non-ui/iteratorTag/showMergeIteratorTagDemo.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/tags/non-ui/iteratorTag/showMergeIteratorTagDemo.jsp b/apps/showcase/src/main/webapp/tags/non-ui/iteratorTag/showMergeIteratorTagDemo.jsp
deleted file mode 100644
index 54d2c38..0000000
--- a/apps/showcase/src/main/webapp/tags/non-ui/iteratorTag/showMergeIteratorTagDemo.jsp
+++ /dev/null
@@ -1,29 +0,0 @@
-<%@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/tags/non-ui/iteratorTag/subsetIteratorTagDemo.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/tags/non-ui/iteratorTag/subsetIteratorTagDemo.jsp b/apps/showcase/src/main/webapp/tags/non-ui/iteratorTag/subsetIteratorTagDemo.jsp
deleted file mode 100644
index e14de24..0000000
--- a/apps/showcase/src/main/webapp/tags/non-ui/iteratorTag/subsetIteratorTagDemo.jsp
+++ /dev/null
@@ -1,29 +0,0 @@
-<%@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/tags/non-ui/iteratorTag/subsetIteratorTagDemoResult.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/tags/non-ui/iteratorTag/subsetIteratorTagDemoResult.jsp b/apps/showcase/src/main/webapp/tags/non-ui/iteratorTag/subsetIteratorTagDemoResult.jsp
deleted file mode 100644
index 22f8be6..0000000
--- a/apps/showcase/src/main/webapp/tags/non-ui/iteratorTag/subsetIteratorTagDemoResult.jsp
+++ /dev/null
@@ -1,30 +0,0 @@
-<%@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/tags/ui/actionTagExampleCalled.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/tags/ui/actionTagExampleCalled.jsp b/apps/showcase/src/main/webapp/tags/ui/actionTagExampleCalled.jsp
deleted file mode 100644
index 0c496a9..0000000
--- a/apps/showcase/src/main/webapp/tags/ui/actionTagExampleCalled.jsp
+++ /dev/null
@@ -1,2 +0,0 @@
-<%@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/tags/ui/actionTagExampleCalling.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/tags/ui/actionTagExampleCalling.jsp b/apps/showcase/src/main/webapp/tags/ui/actionTagExampleCalling.jsp
deleted file mode 100644
index 750465d..0000000
--- a/apps/showcase/src/main/webapp/tags/ui/actionTagExampleCalling.jsp
+++ /dev/null
@@ -1,24 +0,0 @@
-<%@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/tags/ui/componentTagExample.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/tags/ui/componentTagExample.jsp b/apps/showcase/src/main/webapp/tags/ui/componentTagExample.jsp
deleted file mode 100644
index dca5b0f..0000000
--- a/apps/showcase/src/main/webapp/tags/ui/componentTagExample.jsp
+++ /dev/null
@@ -1,69 +0,0 @@
-<%@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/tags/ui/datepicker/index.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/tags/ui/datepicker/index.jsp b/apps/showcase/src/main/webapp/tags/ui/datepicker/index.jsp
deleted file mode 100644
index db9c7fb..0000000
--- a/apps/showcase/src/main/webapp/tags/ui/datepicker/index.jsp
+++ /dev/null
@@ -1,33 +0,0 @@
-<%@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/tags/ui/dynamicTreeSelect.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/tags/ui/dynamicTreeSelect.jsp b/apps/showcase/src/main/webapp/tags/ui/dynamicTreeSelect.jsp
deleted file mode 100644
index 2c1cd2e..0000000
--- a/apps/showcase/src/main/webapp/tags/ui/dynamicTreeSelect.jsp
+++ /dev/null
@@ -1,6 +0,0 @@
-<%@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/tags/ui/example.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/tags/ui/example.jsp b/apps/showcase/src/main/webapp/tags/ui/example.jsp
deleted file mode 100644
index 0e89c03..0000000
--- a/apps/showcase/src/main/webapp/tags/ui/example.jsp
+++ /dev/null
@@ -1,149 +0,0 @@
-<%@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/tags/ui/example.vm
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/tags/ui/example.vm b/apps/showcase/src/main/webapp/tags/ui/example.vm
deleted file mode 100644
index 23a5d58..0000000
--- a/apps/showcase/src/main/webapp/tags/ui/example.vm
+++ /dev/null
@@ -1,39 +0,0 @@
-<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/tags/ui/exampleSubmited.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/tags/ui/exampleSubmited.jsp b/apps/showcase/src/main/webapp/tags/ui/exampleSubmited.jsp
deleted file mode 100644
index 5ef2126..0000000
--- a/apps/showcase/src/main/webapp/tags/ui/exampleSubmited.jsp
+++ /dev/null
@@ -1,58 +0,0 @@
-<%@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>