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}
- #set ( $startCount = $startCount + 1)
- #end
- </td>
- </tr>
- <tr>
- <td>Favourite Cartoon Characters (Right):</td>
- <td>
- #set ( $startCount = 1)
- #foreach( $item in $rightSideCartoonCharacters)
- $startCount.${item}
- #set ( $startCount = $startCount + 1)
- #end
- </td>
- </tr>
- </table>
-
- #surl ("id=url" "value=index.jsp")
- #sa("href=${url}")Back to index.jsp#end
- </div>
- </div>
-</div>
-</body>
-</html>
http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/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 />
- </s:iterator>
- </td>
- </tr>
- <tr>
- <td>Non Favourite Cartoons:</td>
- <td>
- <s:iterator value="notFavouriteCartoonCharacters" status="stat">
- <s:property value="%{#stat.count}" />.<s:property />
- </s:iterator>
- </td>
- </tr>
- <tr>
- <td>Favourite Cars:</td>
- <td>
- <s:iterator value="favouriteCars" status="stat">
- <s:property value="%{#stat.count}" />.<s:property />
- </s:iterator>
- </td>
- </tr>
- <tr>
- <td>Non Favourite Cars:</td>
- <td>
- <s:iterator value="notFavouriteCars" status="stat">
- <s:property value="%{#stat.count}" />.<s:property />
- </s:iterator>
- </td>
- </tr>
- <tr>
- <td>Favourite Motorcycles:</td>
- <td>
- <s:iterator value="favouriteMotorcycles" status="stat">
- <s:property value="%{#stat.count}" />.<s:property />
- </s:iterator>
- </td>
- </tr>
- <tr>
- <td>Non Favourite Motorcycles:</td>
- <td>
- <s:iterator value="notFavouriteMotorcycles" status="stat">
- <s:property value="%{#stat.count}" />.<s:property />
- </s:iterator>
- </td>
- </tr>
- <tr>
- <td>Favourite Countries:</td>
- <td>
- <s:iterator value="favouriteCountries" status="stat">
- <s:property value="%{#stat.count}" />.<s:property />
- </s:iterator>
- </td>
- </tr>
- <tr>
- <td>Non Favourite Countries:</td>
- <td>
- <s:iterator value="notFavouriteCountries" status="stat">
- <s:property value="%{#stat.count}" />.<s:property />
- </s:iterator>
- </td>
- </tr>
- <tr>
- <td>Favourite Sports:</td>
- <td>
- <s:iterator value="favouriteSports" status="stat">
- <s:property value="%{#stat.count}" />.<s:property />
- </s:iterator>
- </td>
- </tr>
-
- <tr>
- <td>Non Favourite Sports:</td>
- <td>
- <s:iterator value="nonfavouriteSports" status="stat">
- <s:property value="%{#stat.count}" />.<s:property />
- </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 />
- </s:iterator>
- </td>
- </tr>
- <tr>
- <td>Prioritised Favourite Cars:</td>
- <td>
- <s:iterator value="prioritisedFavouriteCars" status="stat">
- <s:property value="%{#stat.count}" />.<s:property />
- </s:iterator>
- </td>
- </tr>
- <tr>
- <td>Prioritised Favourite Countries</td>
- <td>
- <s:iterator value="prioritisedFavouriteCountries" status="stat">
- <s:property value="%{#stat.count}" />.<s:property />
- </s:iterator>
- </td>
- </tr>
- <tr>
- <td>Favourite Cities</td>
- <td>
- <s:iterator value="favouriteCities" status="stat">
- <s:property value="%{#stat.count}" />.<s:property />
- </s:iterator>
- </td>
- </tr>
- <tr>
- <td>Favourite Numbers</td>
- <td>
- <s:iterator value="favouriteNumbers" status="stat">
- <s:property value="%{#stat.count}" />.<s:property />
- </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>
-
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 />
+ </s:iterator>
+ </td>
+ </tr>
+ <tr>
+ <td>Non Favourite Cartoons:</td>
+ <td>
+ <s:iterator value="notFavouriteCartoonCharacters" status="stat">
+ <s:property value="%{#stat.count}" />.<s:property />
+ </s:iterator>
+ </td>
+ </tr>
+ <tr>
+ <td>Favourite Cars:</td>
+ <td>
+ <s:iterator value="favouriteCars" status="stat">
+ <s:property value="%{#stat.count}" />.<s:property />
+ </s:iterator>
+ </td>
+ </tr>
+ <tr>
+ <td>Non Favourite Cars:</td>
+ <td>
+ <s:iterator value="notFavouriteCars" status="stat">
+ <s:property value="%{#stat.count}" />.<s:property />
+ </s:iterator>
+ </td>
+ </tr>
+ <tr>
+ <td>Favourite Motorcycles:</td>
+ <td>
+ <s:iterator value="favouriteMotorcycles" status="stat">
+ <s:property value="%{#stat.count}" />.<s:property />
+ </s:iterator>
+ </td>
+ </tr>
+ <tr>
+ <td>Non Favourite Motorcycles:</td>
+ <td>
+ <s:iterator value="notFavouriteMotorcycles" status="stat">
+ <s:property value="%{#stat.count}" />.<s:property />
+ </s:iterator>
+ </td>
+ </tr>
+ <tr>
+ <td>Favourite Countries:</td>
+ <td>
+ <s:iterator value="favouriteCountries" status="stat">
+ <s:property value="%{#stat.count}" />.<s:property />
+ </s:iterator>
+ </td>
+ </tr>
+ <tr>
+ <td>Non Favourite Countries:</td>
+ <td>
+ <s:iterator value="notFavouriteCountries" status="stat">
+ <s:property value="%{#stat.count}" />.<s:property />
+ </s:iterator>
+ </td>
+ </tr>
+ <tr>
+ <td>Favourite Sports:</td>
+ <td>
+ <s:iterator value="favouriteSports" status="stat">
+ <s:property value="%{#stat.count}" />.<s:property />
+ </s:iterator>
+ </td>
+ </tr>
+
+ <tr>
+ <td>Non Favourite Sports:</td>
+ <td>
+ <s:iterator value="nonfavouriteSports" status="stat">
+ <s:property value="%{#stat.count}" />.<s:property />
+ </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 />
+ </s:iterator>
+ </td>
+ </tr>
+ <tr>
+ <td>Prioritised Favourite Cars:</td>
+ <td>
+ <s:iterator value="prioritisedFavouriteCars" status="stat">
+ <s:property value="%{#stat.count}" />.<s:property />
+ </s:iterator>
+ </td>
+ </tr>
+ <tr>
+ <td>Prioritised Favourite Countries</td>
+ <td>
+ <s:iterator value="prioritisedFavouriteCountries" status="stat">
+ <s:property value="%{#stat.count}" />.<s:property />
+ </s:iterator>
+ </td>
+ </tr>
+ <tr>
+ <td>Favourite Cities</td>
+ <td>
+ <s:iterator value="favouriteCities" status="stat">
+ <s:property value="%{#stat.count}" />.<s:property />
+ </s:iterator>
+ </td>
+ </tr>
+ <tr>
+ <td>Favourite Numbers</td>
+ <td>
+ <s:iterator value="favouriteNumbers" status="stat">
+ <s:property value="%{#stat.count}" />.<s:property />
+ </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<String> 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<String, Book> getBooks() {
- Map<String, Book> books = new HashMap<String, Book>();
- 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(/&/gm, "&").replace(/</gm, "<").replace(/>/gm, ">").replace(/"/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 />
- :->
- </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>
- <s:a href="http://struts.apache.org/" />
- </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>
- <s:a href="%{#url}" />
- </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>
- <s:property value="movie" />
- </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>
- <s:a href="%{'http://struts.apache.org/'}" />
- <br />
- <s:property value="%{#movie}" />
- </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">
- <s:property value="name" />
- </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">
- <s:property value="#request['struts.view_uri']" />
- </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">
- ${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">
- <s:if test="name == 'John Galt'">
- Hi John
- </s:if>
- <s:else>
- I don't know you!
- </s:else>
- </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">
- <s:iterator value="bands">
- <s:property />
- <br />
- </s:iterator>
- </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">
- <s:set name="favouriteBand" value="bands[0]" />
- <s:property value="#favouriteBand" />
- </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">
- <s:url id="evalAction" namespace="/nodecorate" action="jspEval" />
- <s:a href="%{#evalAction}" >Eval</s:a>
-
- <s:url id="google" value="http://www.google.com" >
- <s:param name="q" value="%{'Struts 2'}" />
- </s:url>
- <s:a href="%{#google}" >Eval</s:a>
- </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>
+
[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<String> 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<String, Book> getBooks() {
+ Map<String, Book> books = new HashMap<String, Book>();
+ 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(/&/gm, "&").replace(/</gm, "<").replace(/>/gm, ">").replace(/"/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 />
+ :->
+ </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>
+ <s:a href="http://struts.apache.org/" />
+ </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>
+ <s:a href="%{#url}" />
+ </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>
+ <s:property value="movie" />
+ </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>
+ <s:a href="%{'http://struts.apache.org/'}" />
+ <br />
+ <s:property value="%{#movie}" />
+ </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">
+ <s:property value="name" />
+ </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">
+ <s:property value="#request['struts.view_uri']" />
+ </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">
+ ${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">
+ <s:if test="name == 'John Galt'">
+ Hi John
+ </s:if>
+ <s:else>
+ I don't know you!
+ </s:else>
+ </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">
+ <s:iterator value="bands">
+ <s:property />
+ <br />
+ </s:iterator>
+ </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">
+ <s:set name="favouriteBand" value="bands[0]" />
+ <s:property value="#favouriteBand" />
+ </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">
+ <s:url id="evalAction" namespace="/nodecorate" action="jspEval" />
+ <s:a href="%{#evalAction}" >Eval</s:a>
+
+ <s:url id="google" value="http://www.google.com" >
+ <s:param name="q" value="%{'Struts 2'}" />
+ </s:url>
+ <s:a href="%{#google}" >Eval</s:a>
+ </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 »</a> pages.</p>
+ </div>
+
+ </div>
+ </div>
+ </div>
+
+</body>
+</html>
http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/actionPrefix/actionPrefix.ftl
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/actionPrefix/actionPrefix.ftl b/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/actionPrefix/actionPrefix.ftl
new file mode 100644
index 0000000..f87b6d4
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/actionPrefix/actionPrefix.ftl
@@ -0,0 +1,25 @@
+<html>
+<head>
+ <title>Struts2 Showcase - Non UI Tags - Action Prefix (Freemarker)</title>
+</head>
+<body>
+<div class="page-header">
+ <h1>Non Ui Tag - Action Prefix (Freemarker)</h1>
+</div>
+
+<div class="container-fluid">
+ <div class="row-fluid">
+ <div class="span12">
+
+ <p>You have come to this page because you used an <strong>action</strong> prefix.<p/>
+
+ <p>The text you've entered is ${text?default('')?html}<p/>
+
+ <@s.a href="javascript:history.back();" cssClass="btn btn-info"><i class="icon icon-arrow-left"></i> Back</...@s.a>
+ </div>
+ </div>
+</div>
+</body>
+</html>
+
+
http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/actionPrefix/actionPrefixExample.ftl
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/actionPrefix/actionPrefixExample.ftl b/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/actionPrefix/actionPrefixExample.ftl
new file mode 100644
index 0000000..84d477f
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/actionPrefix/actionPrefixExample.ftl
@@ -0,0 +1,54 @@
+<html>
+<head>
+ <title>Struts2 Showcase - Non UI Tags - Action Prefix (Freemarker)</title>
+</head>
+<body>
+<div class="page-header">
+ <h1>Non Ui Tag - Action Prefix (Freemarker)</h1>
+</div>
+
+<div class="container-fluid">
+ <div class="row-fluid">
+ <div class="span12">
+
+ <b>Action Prefix</b><br/>
+ By clicking on 'action prefix' button, the request will go to the action alias 'actionPrefix'
+ instead of the normal 'submit' action alias. <p/><p/>
+
+ <b>Method Prefix</b><br/>
+ By clicking on the 'method prefix' button, the request will cause Struts to invoke 'submit'
+ action alias's 'alternateMethod' method instead of the default 'execute' method.<p/>
+
+ <b>Redirect Prefix</b><br/>
+ By clicking on the 'redirect prefix' button, the request will get redirected to www.google.com
+ instead<p/>
+
+ <b>Redirect Action Prefix</b><br/>
+ By clicking on the 'redirect-action prefix' button, the request will get redirected to
+ an action alias of 'redirectActionPrefix' instead of 'submit' action alias. Since this is a
+ redirect (a new request is issue from the client), the text entered will be lost.<p/>
+
+
+ <@s.url id="url" action="viewSource" namespace="/tags/non-ui/actionPrefix" />
+ The JSP code can be read <@s.a href="%{#url}">here</...@s.a>.
+
+
+ <@s.form action="submit" namespace="/tags/non-ui/actionPrefix" method="POST">
+
+ <@s.textfield label="Enter Some Text" name="text" />
+
+ <@s.submit action="actionPrefix" value="%{'action prefix'}" cssClass="btn" />
+
+ <@s.submit method="alternateMethod" value="%{'method prefix'}" cssClass="btn" />
+
+ <@s.submit value="Normal Submit" cssClass="btn" />
+
+ <@s.submit action="redirectActionPrefixAction" value="%{'redirectAction without prefix'}" cssClass="btn" />
+
+ </...@s.form>
+ </div>
+ </div>
+</div>
+</body>
+</html>
+
http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/actionPrefix/methodPrefix.ftl
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/actionPrefix/methodPrefix.ftl b/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/actionPrefix/methodPrefix.ftl
new file mode 100644
index 0000000..836bb22
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/actionPrefix/methodPrefix.ftl
@@ -0,0 +1,25 @@
+<html>
+<head>
+ <title>Struts2 Showcase - Non UI Tags - Action Prefix (Freemarker)</title>
+</head>
+<body>
+<div class="page-header">
+ <h1>Non Ui Tag - Action Prefix (Freemarker)</h1>
+</div>
+
+<div class="container-fluid">
+ <div class="row-fluid">
+ <div class="span12">
+
+ <p>You have come to this page because you used an <strong>method</strong> prefix.<p/>
+
+ <p>The text you've enter is ${text?default('')?html}<p/>
+
+ <@s.a href="javascript:history.back();" cssClass="btn btn-info"><i class="icon icon-arrow-left"></i> Back</...@s.a>
+ </div>
+ </div>
+</div>
+</body>
+</html>
+
+
http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/actionPrefix/normalSubmit.ftl
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/actionPrefix/normalSubmit.ftl b/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/actionPrefix/normalSubmit.ftl
new file mode 100644
index 0000000..e30d88c
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/actionPrefix/normalSubmit.ftl
@@ -0,0 +1,24 @@
+<html>
+<head>
+ <title>Struts2 Showcase - Non UI Tags - Action Prefix (Freemarker)</title>
+</head>
+<body>
+<div class="page-header">
+ <h1>Non Ui Tag - Action Prefix (Freemarker)</h1>
+</div>
+
+<div class="container-fluid">
+ <div class="row-fluid">
+ <div class="span12">
+
+ <p>You have come to this page because you did a normal submit.<p/>
+
+ <p>The text you've enter is %{text}<p/>
+
+ <@s.a href="javascript:history.back();" cssClass="btn btn-info"><i class="icon icon-arrow-left"></i> Back</...@s.a>
+ </div>
+ </div>
+</div>
+</body>
+</html>
+
http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/actionPrefix/redirectActionPrefix.ftl
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/actionPrefix/redirectActionPrefix.ftl b/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/actionPrefix/redirectActionPrefix.ftl
new file mode 100644
index 0000000..f21fc45
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/actionPrefix/redirectActionPrefix.ftl
@@ -0,0 +1,28 @@
+<html>
+<head>
+ <title>Struts2 Showcase - Non UI Tags - Action Prefix (Freemarker)</title>
+</head>
+<body>
+<div class="page-header">
+ <h1>Non Ui Tag - Action Prefix (Freemarker)</h1>
+</div>
+
+<div class="container-fluid">
+ <div class="row-fluid">
+ <div class="span12">
+
+ <p>You have come to this page because you used an 'redirect-action' prefix.<p/>
+
+ <p>Because this is a <strong>redirect-action</strong>, the text will be lost, due to a redirection
+ implies a new request being issued from the client.<p/>
+
+ The text you've enter is ${text?default('')?html}<p/>
+
+ <@s.a href="javascript:history.back();" cssClass="btn btn-info"><i class="icon icon-arrow-left"></i> Back</...@s.a>
+ </div>
+ </div>
+</div>
+</body>
+</html>
+
+
http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/actionTag/includedPage.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/actionTag/includedPage.jsp b/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/actionTag/includedPage.jsp
new file mode 100644
index 0000000..abfa253
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/actionTag/includedPage.jsp
@@ -0,0 +1 @@
+<h2>This is INCLUDED by the action tag</h2>
http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/actionTag/includedPage2.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/actionTag/includedPage2.jsp b/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/actionTag/includedPage2.jsp
new file mode 100644
index 0000000..6cdc040
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/actionTag/includedPage2.jsp
@@ -0,0 +1,2 @@
+
+<h2>This is INCLUDED by the action tag (Page2)</h2>
http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/actionTag/includedPage3.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/actionTag/includedPage3.jsp b/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/actionTag/includedPage3.jsp
new file mode 100644
index 0000000..4ebbcc7
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/actionTag/includedPage3.jsp
@@ -0,0 +1,2 @@
+
+<h2>This is INCLUDED by the action tag (Page3)</h2>
http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/actionTag/showActionTagDemo.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/actionTag/showActionTagDemo.jsp b/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/actionTag/showActionTagDemo.jsp
new file mode 100644
index 0000000..1fb5b44
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/actionTag/showActionTagDemo.jsp
@@ -0,0 +1,52 @@
+<%@taglib prefix="s" uri="/struts-tags" %>
+<html>
+<head>
+ <title>Struts2 Showcase - Non-Ui Tag - Action Tag </title>
+</head>
+<body>
+
+<div class="page-header">
+ <h1>Non-Ui Tag - Action Tag</h1>
+</div>
+
+<div class="container-fluid">
+ <div class="row-fluid">
+ <div class="span12">
+
+ <div class="well">
+ <h2> This is Not - Included by the Action Tag</h2>
+ </div>
+
+
+ <!-- lets include the first page many times -->
+ <div class="well">
+ <s:action name="includePage" namespace="/tags/non-ui/actionTag" executeResult="true" />
+ <s:action name="includePage" namespace="/tags/non-ui/actionTag" executeResult="true" />
+ <s:action name="includePage" namespace="/tags/non-ui/actionTag" executeResult="true" />
+ </div>
+
+
+ <!-- lets include the second page many times -->
+ <div class="well">
+ <s:action name="includePage2" namespace="/tags/non-ui/actionTag" executeResult="true" />
+ <s:action name="includePage2" namespace="/tags/non-ui/actionTag" executeResult="true" />
+ <s:action name="includePage2" namespace="/tags/non-ui/actionTag" executeResult="true" />
+ </div>
+
+
+ <!-- lets include the third page many time -->
+ <div class="well">
+ <s:action name="includePage3" namespace="/tags/non-ui/actionTag" executeResult="true" />
+ <s:action name="includePage3" namespace="/tags/non-ui/actionTag" executeResult="true" />
+ <s:action name="includePage3" namespace="/tags/non-ui/actionTag" executeResult="true" />
+ </div>
+
+
+ <s:url var="url" action="lookAtSource" namespace="/tags/non-ui/actionTag" />
+ <s:a href="%{#url}" cssClass="btn btn-info">Source</s:a>
+ </div>
+ </div>
+</div>
+</body>
+</html>
+
http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/date.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/date.jsp b/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/date.jsp
new file mode 100644
index 0000000..8581d8f
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/date.jsp
@@ -0,0 +1,114 @@
+<%@ taglib prefix="s" uri="/struts-tags" %>
+<html>
+<head>
+ <title>Struts2 Showcase - Non UI Tags Example - Date</title>
+</head>
+
+<body>
+<div class="page-header">
+ <h1>Non UI Tags Example - Date</h1>
+</div>
+
+<div class="container-fluid">
+ <div class="row-fluid">
+ <div class="span12">
+
+ <s:action var="myDate" name="date" namespace="/" executeResult="false" />
+
+ <table class="table table-striped table-bordered table-hover table-condensed">
+ <tr>
+ <th>Name</th>
+ <th>Format</th>
+ <th>Output</th>
+ </tr>
+ <tr>
+ <td><strong>Before date</strong></td>
+ <td>toString()</td>
+ <td><s:property value="#myDate.before.toString()"/></td>
+ </tr>
+ <tr>
+ <td><strong>Past date</strong></td>
+ <td>toString()</td>
+ <td><s:property value="#myDate.past.toString()"/></td>
+ </tr>
+ <tr>
+ <td><strong>Now date</strong></td>
+ <td>toString()</td>
+ <td><s:property value="#myDate.now.toString()"/></td>
+ </tr>
+ <tr>
+ <td><strong>Future date</strong></td>
+ <td>toString()</td>
+ <td><s:property value="#myDate.future.toString()"/></td>
+ </tr>
+ <tr>
+ <td><strong>After date</strong></td>
+ <td>toString()</td>
+ <td><s:property value="#myDate.after.toString()"/></td>
+ </tr>
+ <tr>
+ <td><strong>Current date</strong></td>
+ <td>yyyy/MM/dd hh:mm:ss</td>
+ <td><s:date name="#myDate.now" format="yyyy/MM/dd hh:mm:ss" /></td>
+ </tr>
+ <tr>
+ <td><strong>Current date</strong></td>
+ <td>dd.MM.yyyy hh:mm:ss</td>
+ <td><s:date name="#myDate.now" format="dd.MM.yyyy hh:mm:ss" /></td>
+ </tr>
+ <tr>
+ <td><strong>Current time (24h)</strong></td>
+ <td>HH:mm:ss</td>
+ <td><s:date name="#myDate.now" format="HH:mm:ss" /></td>
+ </tr>
+ <tr>
+ <td><strong>Before date</strong></td>
+ <td>MMM, dd yyyy</td>
+ <td><s:date name="#myDate.before" format="MMM, dd yyyy" /></td>
+ </tr>
+ <tr>
+ <td><strong>Before date</strong></td>
+ <td>nice</td>
+ <td><s:date name="#myDate.before" nice="true"/></td>
+ </tr>
+ <tr>
+ <td><strong>After date</strong></td>
+ <td>dd.MM.yyyy</td>
+ <td><s:date name="#myDate.after" format="dd.MM.yyyy" /></td>
+ </tr>
+ <tr>
+ <td><strong>After date</strong></td>
+ <td>nice</td>
+ <td><s:date name="#myDate.after" nice="true"/></td>
+ </tr>
+ <tr>
+ <td><strong>Past date</strong></td>
+ <td>dd/MM/yyyy hh:mm</td>
+ <td><s:date name="#myDate.past" format="dd/MM/yyyy hh:mm"/></td>
+ </tr>
+ <tr>
+ <td><strong>Future date</strong></td>
+ <td>MM-dd-yy</td>
+ <td><s:date name="#myDate.past" format="MM-dd-yy"/></td>
+ </tr>
+ <tr>
+ <td><strong>Future date (fallback)</strong></td>
+ <td>fallback</td>
+ <td><s:date name="#myDate.future" /></td>
+ </tr>
+ <tr>
+ <td><strong>Past date</strong></td>
+ <td>nice</td>
+ <td><s:date name="#myDate.past" nice="true"/></td>
+ </tr>
+ <tr>
+ <td><strong>Future date</strong></td>
+ <td>nice</td>
+ <td><s:date name="#myDate.future" nice="true"/></td>
+ </tr>
+ </table>
+ </div>
+ </div>
+</div>
+</body>
+</html>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/debug.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/debug.jsp b/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/debug.jsp
new file mode 100644
index 0000000..26c49a5
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/debug.jsp
@@ -0,0 +1,30 @@
+<%@ taglib prefix="s" uri="/struts-tags" %>
+<html>
+<head>
+ <title>Struts2 Showcase - Non UI Tags Example - Debug</title>
+</head>
+
+<body>
+<div class="page-header">
+ <h1>Debug Tag Usage</h1>
+</div>
+
+<div class="container-fluid">
+ <div class="row-fluid">
+ <div class="span12">
+
+ <p/>
+ This page shows a simple example of using the debug tag. <br/>
+ Just add <tt style="font-size: 12px; font-weight:bold;color: blue;"><s:debug /></tt> to your JSP page
+ and you will see the debug link.
+ <p/>
+
+ <p>
+ Just click on the Debug label to see the Struts ValueStack Debug information.
+ <p/>
+ <s:debug />
+ </div>
+ </div>
+</div>
+</body>
+</html>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/ifTag/testIf.ftl
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/ifTag/testIf.ftl b/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/ifTag/testIf.ftl
new file mode 100644
index 0000000..4b9fab2
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/ifTag/testIf.ftl
@@ -0,0 +1,618 @@
+<html>
+<head>
+ <title>Struts2 Showcase - Non Ui Tag - Test If Tag (Freemarker)</title>
+ <s:head/>
+</head>
+<body>
+<div class="page-header">
+ <h1>Non Ui Tag - Test If Tag (Freemarker)</h1>
+</div>
+
+<div class="container-fluid">
+ <div class="row-fluid">
+ <div class="span12">
+ <p>
+ This is a simple freemarker template to test the If Tag (using freemarker directive).
+ There's quite a few combination being tested. The characters in bold and non-bold should be the same.
+ </p>
+
+
+ <b>1 - Foo -</b>
+ <@s.if test="true">
+ Foo
+ </...@s.if>
+ <@s.else>
+ Bar
+ </...@s.else>
+ <br/>
+ <b>2 - Bar -</b>
+ <@s.if test="false">
+ Foo
+ </...@s.if>
+ <@s.else>
+ Bar
+ </...@s.else>
+ <br/>
+ <b>3 - FooFooFoo - </b>
+ <@s.if test="true">
+ Foo
+ <@s.if test="true">
+ FooFoo
+ </...@s.if>
+ <@s.else>
+ BarBar
+ </...@s.else>
+ </...@s.if>
+ <@s.else>
+ Bar
+ </...@s.else>
+ <br/>
+ <b>4 - FooBarBar - </b>
+ <@s.if test="true">
+ Foo
+ <@s.if test="false">
+ FooFoo
+ </...@s.if>
+ <@s.else>
+ BarBar
+ </...@s.else>
+ </...@s.if>
+ <br/>
+ <b>5 - BarFooFoo - </b>
+ <@s.if test="false">
+ Foo
+ </...@s.if>
+ <@s.else>
+ Bar
+ <@s.if test="true">
+ FooFoo
+ </...@s.if>
+ <@s.else>
+ BarBar
+ </...@s.else>
+ </...@s.else>
+ <br/>
+ <b>6 - BarBarBar - </b>
+ <@s.if test="false">
+ Foo
+ </...@s.if>
+ <@s.else>
+ Bar
+ <@s.if test="false">
+ FooFoo
+ </...@s.if>
+ <@s.else>
+ BarBar
+ </...@s.else>
+ </...@s.else>
+ <br/>
+ <b>7 - Foo - </b>
+ <@s.if test="true">
+ Foo
+ </...@s.if>
+ <@s.elseif test="false">
+ Moo
+ </...@s.elseif>
+ <@s.else>
+ Bar
+ </...@s.else>
+ <br/>
+ <b>8 - Moo - </b>
+ <@s.if test="false">
+ Foo
+ </...@s.if>
+ <@s.elseif test="true">
+ Moo
+ </...@s.elseif>
+ <@s.else>
+ Bar
+ </...@s.else>
+ <br/>
+ <b>9 - Bar - </b>
+ <@s.if test="false">
+ Foo
+ </...@s.if>
+ <@s.elseif test="false">
+ Moo
+ </...@s.elseif>
+ <@s.else>
+ Bar
+ </...@s.else>
+ <br/>
+ <b>10 - FooFooFoo - </b>
+ <@s.if test="true">
+ Foo
+ <@s.if test="true">
+ FooFoo
+ </...@s.if>
+ <@s.elseif test="false">
+ MooMoo
+ </...@s.elseif>
+ <@s.else>
+ BarBar
+ </...@s.else>
+ </...@s.if>
+ <@s.elseif test="false">
+ Moo
+ </...@s.elseif>
+ <@s.else>
+ Bar
+ </...@s.else>
+ <br/>
+ <b>11 - FooMooMoo - </b>
+ <@s.if test="true">
+ Foo
+ <@s.if test="false">
+ FooFoo
+ </...@s.if>
+ <@s.elseif test="true">
+ MooMoo
+ </...@s.elseif>
+ <@s.else>
+ BarBar
+ </...@s.else>
+ </...@s.if>
+ <@s.elseif test="false">
+ Moo
+ </...@s.elseif>
+ <@s.else>
+ Bar
+ </...@s.else>
+ <br/>
+ <b>12 - FooBarBar - </b>
+ <@s.if test="true">
+ Foo
+ <@s.if test="false">
+ FooFoo
+ </...@s.if>
+ <@s.elseif test="false">
+ MooMoo
+ </...@s.elseif>
+ <@s.else>
+ BarBar
+ </...@s.else>
+ </...@s.if>
+ <@s.elseif test="false">
+ Moo
+ </...@s.elseif>
+ <@s.else>
+ Bar
+ </...@s.else>
+ <br/>
+ <b>13 - MooFooFoo - </b>
+ <@s.if test="false">
+ Foo
+ </...@s.if>
+ <@s.elseif test="true">
+ Moo
+ <@s.if test="true">
+ FooFoo
+ </...@s.if>
+ <@s.elseif test="false">
+ MooMoo
+ </...@s.elseif>
+ <@s.else>
+ BarBar
+ </...@s.else>
+ </...@s.elseif>
+ <@s.else>
+ Bar
+ </...@s.else>
+ <br/>
+ <b>14 - MooMooMoo - </b>
+ <@s.if test="false">
+ Foo
+ </...@s.if>
+ <@s.elseif test="true">
+ Moo
+ <@s.if test="false">
+ FooFoo
+ </...@s.if>
+ <@s.elseif test="true">
+ MooMoo
+ </...@s.elseif>
+ <@s.else>
+ BarBar
+ </...@s.else>
+ </...@s.elseif>
+ <@s.else>
+ Bar
+ </...@s.else>
+ <br/>
+ <b>15 - MooBarBar - </b>
+ <@s.if test="false">
+ Foo
+ </...@s.if>
+ <@s.elseif test="true">
+ Moo
+ <@s.if test="false">
+ FooFoo
+ </...@s.if>
+ <@s.elseif test="false">
+ MooMoo
+ </...@s.elseif>
+ <@s.else>
+ BarBar
+ </...@s.else>
+ </...@s.elseif>
+ <@s.else>
+ Bar
+ </...@s.else>
+ <br/>
+ <b>16 - BarFooFoo - </b>
+ <@s.if test="false">
+ Foo
+ </...@s.if>
+ <@s.elseif test="false">
+ Moo
+ </...@s.elseif>
+ <@s.else>
+ Bar
+ <@s.if test="true">
+ FooFoo
+ </...@s.if>
+ <@s.elseif test="false">
+ MooMoo
+ </...@s.elseif>
+ <@s.else>
+ BarBar
+ </...@s.else>
+ </...@s.else>
+ <br/>
+ <b>17 - BarMooMoo - </b>
+ <@s.if test="false">
+ Foo
+ </...@s.if>
+ <@s.elseif test="false">
+ Moo
+ </...@s.elseif>
+ <@s.else>
+ Bar
+ <@s.if test="false">
+ FooFoo
+ </...@s.if>
+ <@s.elseif test="true">
+ MooMoo
+ </...@s.elseif>
+ <@s.else>
+ BarBar
+ </...@s.else>
+ </...@s.else>
+ <br/>
+ <b>18 - BarBarBar - </b>
+ <@s.if test="false">
+ Foo
+ </...@s.if>
+ <@s.elseif test="false">
+ Moo
+ </...@s.elseif>
+ <@s.else>
+ Bar
+ <@s.if test="false">
+ FooFoo
+ </...@s.if>
+ <@s.elseif test="false">
+ MooMoo
+ </...@s.elseif>
+ <@s.else>
+ BarBar
+ </...@s.else>
+ </...@s.else>
+
+ <br/>
+ <b>19 - Foo - </b>
+ <@s.if test="true">
+ Foo
+ </...@s.if>
+
+ <br/>
+ <b>20 - ** should not display anything ** - </b>
+ <@s.if test="false">
+ Foo
+ </...@s.if>
+
+ <br/>
+ <b>21 FooFooFoo - </b>
+ <@s.if test="true">
+ Foo
+ <@s.if test="true">
+ FooFoo
+ </...@s.if>
+ </...@s.if>
+ <@s.else>
+ Bar
+ </...@s.else>
+
+ <br/>
+ <b>22 - Foo - </b>
+ <@s.if test="true">
+ Foo
+ <@s.if test="false">
+ FooFoo
+ </...@s.if>
+ </...@s.if>
+ <@s.else>
+ Bar
+ </...@s.else>
+
+ <br/>
+ <b>23 - BarFooFoo - </b>
+ <@s.if test="false">
+ Foo
+ </...@s.if>
+ <@s.else>
+ Bar
+ <@s.if test="true">
+ FooFoo
+ </...@s.if>
+ </...@s.else>
+
+ <br/>
+ <b>24 - Bar - </b>
+ <@s.if test="false">
+ Foo
+ </...@s.if>
+ <@s.else>
+ Bar
+ <@s.if test="false">
+ FooFoo
+ </...@s.if>
+ </...@s.else>
+
+ <br/>
+ <b>25 - FooFooFoo</b>
+ <@s.if test="true">
+ Foo
+ <@s.if test="true">
+ FooFoo
+ </...@s.if>
+ <@s.elseif test="false">
+ MooMoo
+ </...@s.elseif>
+ </...@s.if>
+ <@s.elseif test="false">
+ Moo
+ </...@s.elseif>
+ <@s.else>
+ Bar
+ </...@s.else>
+
+ <br/>
+ <b>26 - FooMooMoo</b>
+ <@s.if test="true">
+ Foo
+ <@s.if test="false">
+ FooFoo
+ </...@s.if>
+ <@s.elseif test="true">
+ MooMoo
+ </...@s.elseif>
+ </...@s.if>
+ <@s.elseif test="false">
+ Moo
+ </...@s.elseif>
+ <@s.else>
+ Bar
+ </...@s.else>
+
+ <br/>
+ <b>27 - Foo - </b>
+ <@s.if test="true">
+ Foo
+ <@s.if test="false">
+ FooFoo
+ </...@s.if>
+ <@s.elseif test="false">
+ MooMoo
+ </...@s.elseif>
+ </...@s.if>
+ <@s.elseif test="false">
+ Moo
+ </...@s.elseif>
+ <@s.else>
+ Bar
+ </...@s.else>
+
+ <br/>
+ <b>28 - MooFooFoo</b>
+ <@s.if test="false">
+ Foo
+ </...@s.if>
+ <@s.elseif test="true">
+ Moo
+ <@s.if test="true">
+ FooFoo
+ </...@s.if>
+ <@s.elseif test="false">
+ MooMoo
+ </...@s.elseif>
+ </...@s.elseif>
+ <@s.else>
+ Bar
+ </...@s.else>
+
+ <br/>
+ <b>29 - MooMooMoo</b>
+ <@s.if test="false">
+ Foo
+ </...@s.if>
+ <@s.elseif test="true">
+ Moo
+ <@s.if test="false">
+ FooFoo
+ </...@s.if>
+ <@s.elseif test="true">
+ MooMoo
+ </...@s.elseif>
+ </...@s.elseif>
+ <@s.else>
+ Bar
+ </...@s.else>
+
+ <br/>
+ <b>30 - Moo - </b>
+ <@s.if test="false">
+ Foo
+ </...@s.if>
+ <@s.elseif test="true">
+ Moo
+ <@s.if test="false">
+ FooFoo
+ </...@s.if>
+ <@s.elseif test="false">
+ MooMoo
+ </...@s.elseif>
+ </...@s.elseif>
+ <@s.else>
+ Bar
+ </...@s.else>
+
+ <br/>
+ <b>31 - BarFooFoo - </b>
+ <@s.if test="false">
+ Foo
+ </...@s.if>
+ <@s.elseif test="false">
+ Moo
+ </...@s.elseif>
+ <@s.else>
+ Bar
+ <@s.if test="true">
+ FooFoo
+ </...@s.if>
+ <@s.elseif test="false">
+ MooMoo
+ </...@s.elseif>
+ </...@s.else>
+
+ <br/>
+ <b>32 - BarMooMoo - </b>
+ <@s.if test="false">
+ Foo
+ </...@s.if>
+ <@s.elseif test="false">
+ Moo
+ </...@s.elseif>
+ <@s.else>
+ Bar
+ <@s.if test="false">
+ FooFoo
+ </...@s.if>
+ <@s.elseif test="true">
+ MooMoo
+ </...@s.elseif>
+ </...@s.else>
+
+ <br/>
+ <b>33 - Bar - </b>
+ <@s.if test="false">
+ Foo
+ </...@s.if>
+ <@s.elseif test="false">
+ Moo
+ </...@s.elseif>
+ <@s.else>
+ Bar
+ <@s.if test="false">
+ FooFoo
+ </...@s.if>
+ <@s.elseif test="false">
+ MooMoo
+ </...@s.elseif>
+ </...@s.else>
+
+ <br/>
+ <b>34 - FooFooFoo - </b>
+ <@s.if test="true">
+ Foo
+ <@s.if test="true">
+ FooFoo
+ </...@s.if>
+ </...@s.if>
+ <@s.elseif test="false">
+ Moo
+ </...@s.elseif>
+ <@s.else>
+ Bar
+ </...@s.else>
+
+ <br/>
+ <b>35 - Foo - </b>
+ <@s.if test="true">
+ Foo
+ <@s.if test="false">
+ FooFoo
+ </...@s.if>
+ </...@s.if>
+ <@s.elseif test="false">
+ Moo
+ </...@s.elseif>
+ <@s.else>
+ Bar
+ </...@s.else>
+
+ <br/>
+ <b>36 - MooFooFoo - </b>
+ <@s.if test="false">
+ Foo
+ </...@s.if>
+ <@s.elseif test="true">
+ Moo
+ <@s.if test="true">
+ FooFoo
+ </...@s.if>
+ </...@s.elseif>
+ <@s.else>
+ Bar
+ </...@s.else>
+
+ <br/>
+ <b>37 - Moo - </b>
+ <@s.if test="false">
+ Foo
+ </...@s.if>
+ <@s.elseif test="true">
+ Moo
+ <@s.if test="false">
+ FooFoo
+ </...@s.if>
+ </...@s.elseif>
+ <@s.else>
+ Bar
+ </...@s.else>
+
+ <br/>
+ <b>38 - BarFooFoo - </b>
+ <@s.if test="false">
+ Foo
+ </...@s.if>
+ <@s.elseif test="false">
+ Moo
+ </...@s.elseif>
+ <@s.else>
+ Bar
+ <@s.if test="true">
+ FooFoo
+ </...@s.if>
+ </...@s.else>
+
+ <br/>
+ <b>39 - Bar - </b>
+ <@s.if test="false">
+ Foo
+ </...@s.if>
+ <@s.elseif test="false">
+ Moo
+ </...@s.elseif>
+ <@s.else>
+ Bar
+ <@s.if test="false">
+ FooFoo
+ </...@s.if>
+ </...@s.else>
+ </div>
+ </div>
+</div>
+</body>
+</html>
+
http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/ifTag/testIf.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/ifTag/testIf.jsp b/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/ifTag/testIf.jsp
new file mode 100644
index 0000000..c049283
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/ifTag/testIf.jsp
@@ -0,0 +1,619 @@
+<%@taglib prefix="s" uri="/struts-tags" %>
+<html>
+<head>
+ <title>Struts2 Showcase - Non Ui Tag - Test If Tag</title>
+ <s:head/>
+</head>
+<body>
+<div class="page-header">
+ <h1>Non Ui Tag - Test If Tag</h1>
+</div>
+
+<div class="container-fluid">
+ <div class="row-fluid">
+ <div class="span12">
+ <p>
+ This is a simple jsp to test the If Tag. There's quite a few combination being tested.
+ The characters in bold an non-bold should be the same.
+ </p>
+
+
+ <b>1 - Foo -</b>
+ <s:if test="true">
+ Foo
+ </s:if>
+ <s:else>
+ Bar
+ </s:else>
+ <br/>
+ <b>2 - Bar -</b>
+ <s:if test="false">
+ Foo
+ </s:if>
+ <s:else>
+ Bar
+ </s:else>
+ <br/>
+ <b>3 - FooFooFoo - </b>
+ <s:if test="true">
+ Foo
+ <s:if test="true">
+ FooFoo
+ </s:if>
+ <s:else>
+ BarBar
+ </s:else>
+ </s:if>
+ <s:else>
+ Bar
+ </s:else>
+ <br/>
+ <b>4 - FooBarBar - </b>
+ <s:if test="true">
+ Foo
+ <s:if test="false">
+ FooFoo
+ </s:if>
+ <s:else>
+ BarBar
+ </s:else>
+ </s:if>
+ <br/>
+ <b>5 - BarFooFoo - </b>
+ <s:if test="false">
+ Foo
+ </s:if>
+ <s:else>
+ Bar
+ <s:if test="true">
+ FooFoo
+ </s:if>
+ <s:else>
+ BarBar
+ </s:else>
+ </s:else>
+ <br/>
+ <b>6 - BarBarBar - </b>
+ <s:if test="false">
+ Foo
+ </s:if>
+ <s:else>
+ Bar
+ <s:if test="false">
+ FooFoo
+ </s:if>
+ <s:else>
+ BarBar
+ </s:else>
+ </s:else>
+ <br/>
+ <b>7 - Foo - </b>
+ <s:if test="true">
+ Foo
+ </s:if>
+ <s:elseif test="false">
+ Moo
+ </s:elseif>
+ <s:else>
+ Bar
+ </s:else>
+ <br/>
+ <b>8 - Moo - </b>
+ <s:if test="false">
+ Foo
+ </s:if>
+ <s:elseif test="true">
+ Moo
+ </s:elseif>
+ <s:else>
+ Bar
+ </s:else>
+ <br/>
+ <b>9 - Bar - </b>
+ <s:if test="false">
+ Foo
+ </s:if>
+ <s:elseif test="false">
+ Moo
+ </s:elseif>
+ <s:else>
+ Bar
+ </s:else>
+ <br/>
+ <b>10 - FooFooFoo - </b>
+ <s:if test="true">
+ Foo
+ <s:if test="true">
+ FooFoo
+ </s:if>
+ <s:elseif test="false">
+ MooMoo
+ </s:elseif>
+ <s:else>
+ BarBar
+ </s:else>
+ </s:if>
+ <s:elseif test="false">
+ Moo
+ </s:elseif>
+ <s:else>
+ Bar
+ </s:else>
+ <br/>
+ <b>11 - FooMooMoo - </b>
+ <s:if test="true">
+ Foo
+ <s:if test="false">
+ FooFoo
+ </s:if>
+ <s:elseif test="true">
+ MooMoo
+ </s:elseif>
+ <s:else>
+ BarBar
+ </s:else>
+ </s:if>
+ <s:elseif test="false">
+ Moo
+ </s:elseif>
+ <s:else>
+ Bar
+ </s:else>
+ <br/>
+ <b>12 - FooBarBar - </b>
+ <s:if test="true">
+ Foo
+ <s:if test="false">
+ FooFoo
+ </s:if>
+ <s:elseif test="false">
+ MooMoo
+ </s:elseif>
+ <s:else>
+ BarBar
+ </s:else>
+ </s:if>
+ <s:elseif test="false">
+ Moo
+ </s:elseif>
+ <s:else>
+ Bar
+ </s:else>
+ <br/>
+ <b>13 - MooFooFoo - </b>
+ <s:if test="false">
+ Foo
+ </s:if>
+ <s:elseif test="true">
+ Moo
+ <s:if test="true">
+ FooFoo
+ </s:if>
+ <s:elseif test="false">
+ MooMoo
+ </s:elseif>
+ <s:else>
+ BarBar
+ </s:else>
+ </s:elseif>
+ <s:else>
+ Bar
+ </s:else>
+ <br/>
+ <b>14 - MooMooMoo - </b>
+ <s:if test="false">
+ Foo
+ </s:if>
+ <s:elseif test="true">
+ Moo
+ <s:if test="false">
+ FooFoo
+ </s:if>
+ <s:elseif test="true">
+ MooMoo
+ </s:elseif>
+ <s:else>
+ BarBar
+ </s:else>
+ </s:elseif>
+ <s:else>
+ Bar
+ </s:else>
+ <br/>
+ <b>15 - MooBarBar - </b>
+ <s:if test="false">
+ Foo
+ </s:if>
+ <s:elseif test="true">
+ Moo
+ <s:if test="false">
+ FooFoo
+ </s:if>
+ <s:elseif test="false">
+ MooMoo
+ </s:elseif>
+ <s:else>
+ BarBar
+ </s:else>
+ </s:elseif>
+ <s:else>
+ Bar
+ </s:else>
+ <br/>
+ <b>16 - BarFooFoo - </b>
+ <s:if test="false">
+ Foo
+ </s:if>
+ <s:elseif test="false">
+ Moo
+ </s:elseif>
+ <s:else>
+ Bar
+ <s:if test="true">
+ FooFoo
+ </s:if>
+ <s:elseif test="false">
+ MooMoo
+ </s:elseif>
+ <s:else>
+ BarBar
+ </s:else>
+ </s:else>
+ <br/>
+ <b>17 - BarMooMoo - </b>
+ <s:if test="false">
+ Foo
+ </s:if>
+ <s:elseif test="false">
+ Moo
+ </s:elseif>
+ <s:else>
+ Bar
+ <s:if test="false">
+ FooFoo
+ </s:if>
+ <s:elseif test="true">
+ MooMoo
+ </s:elseif>
+ <s:else>
+ BarBar
+ </s:else>
+ </s:else>
+ <br/>
+ <b>18 - BarBarBar - </b>
+ <s:if test="false">
+ Foo
+ </s:if>
+ <s:elseif test="false">
+ Moo
+ </s:elseif>
+ <s:else>
+ Bar
+ <s:if test="false">
+ FooFoo
+ </s:if>
+ <s:elseif test="false">
+ MooMoo
+ </s:elseif>
+ <s:else>
+ BarBar
+ </s:else>
+ </s:else>
+
+ <br/>
+ <b>19 - Foo - </b>
+ <s:if test="true">
+ Foo
+ </s:if>
+
+ <br/>
+ <b>20 - ** should not display anything ** - </b>
+ <s:if test="false">
+ Foo
+ </s:if>
+
+ <br/>
+ <b>21 FooFooFoo - </b>
+ <s:if test="true">
+ Foo
+ <s:if test="true">
+ FooFoo
+ </s:if>
+ </s:if>
+ <s:else>
+ Bar
+ </s:else>
+
+ <br/>
+ <b>22 - Foo - </b>
+ <s:if test="true">
+ Foo
+ <s:if test="false">
+ FooFoo
+ </s:if>
+ </s:if>
+ <s:else>
+ Bar
+ </s:else>
+
+ <br/>
+ <b>23 - BarFooFoo - </b>
+ <s:if test="false">
+ Foo
+ </s:if>
+ <s:else>
+ Bar
+ <s:if test="true">
+ FooFoo
+ </s:if>
+ </s:else>
+
+ <br/>
+ <b>24 - Bar - </b>
+ <s:if test="false">
+ Foo
+ </s:if>
+ <s:else>
+ Bar
+ <s:if test="false">
+ FooFoo
+ </s:if>
+ </s:else>
+
+ <br/>
+ <b>25 - FooFooFoo</b>
+ <s:if test="true">
+ Foo
+ <s:if test="true">
+ FooFoo
+ </s:if>
+ <s:elseif test="false">
+ MooMoo
+ </s:elseif>
+ </s:if>
+ <s:elseif test="false">
+ Moo
+ </s:elseif>
+ <s:else>
+ Bar
+ </s:else>
+
+ <br/>
+ <b>26 - FooMooMoo</b>
+ <s:if test="true">
+ Foo
+ <s:if test="false">
+ FooFoo
+ </s:if>
+ <s:elseif test="true">
+ MooMoo
+ </s:elseif>
+ </s:if>
+ <s:elseif test="false">
+ Moo
+ </s:elseif>
+ <s:else>
+ Bar
+ </s:else>
+
+ <br/>
+ <b>27 - Foo - </b>
+ <s:if test="true">
+ Foo
+ <s:if test="false">
+ FooFoo
+ </s:if>
+ <s:elseif test="false">
+ MooMoo
+ </s:elseif>
+ </s:if>
+ <s:elseif test="false">
+ Moo
+ </s:elseif>
+ <s:else>
+ Bar
+ </s:else>
+
+ <br/>
+ <b>28 - MooFooFoo</b>
+ <s:if test="false">
+ Foo
+ </s:if>
+ <s:elseif test="true">
+ Moo
+ <s:if test="true">
+ FooFoo
+ </s:if>
+ <s:elseif test="false">
+ MooMoo
+ </s:elseif>
+ </s:elseif>
+ <s:else>
+ Bar
+ </s:else>
+
+ <br/>
+ <b>29 - MooMooMoo</b>
+ <s:if test="false">
+ Foo
+ </s:if>
+ <s:elseif test="true">
+ Moo
+ <s:if test="false">
+ FooFoo
+ </s:if>
+ <s:elseif test="true">
+ MooMoo
+ </s:elseif>
+ </s:elseif>
+ <s:else>
+ Bar
+ </s:else>
+
+ <br/>
+ <b>30 - Moo - </b>
+ <s:if test="false">
+ Foo
+ </s:if>
+ <s:elseif test="true">
+ Moo
+ <s:if test="false">
+ FooFoo
+ </s:if>
+ <s:elseif test="false">
+ MooMoo
+ </s:elseif>
+ </s:elseif>
+ <s:else>
+ Bar
+ </s:else>
+
+ <br/>
+ <b>31 - BarFooFoo - </b>
+ <s:if test="false">
+ Foo
+ </s:if>
+ <s:elseif test="false">
+ Moo
+ </s:elseif>
+ <s:else>
+ Bar
+ <s:if test="true">
+ FooFoo
+ </s:if>
+ <s:elseif test="false">
+ MooMoo
+ </s:elseif>
+ </s:else>
+
+ <br/>
+ <b>32 - BarMooMoo - </b>
+ <s:if test="false">
+ Foo
+ </s:if>
+ <s:elseif test="false">
+ Moo
+ </s:elseif>
+ <s:else>
+ Bar
+ <s:if test="false">
+ FooFoo
+ </s:if>
+ <s:elseif test="true">
+ MooMoo
+ </s:elseif>
+ </s:else>
+
+ <br/>
+ <b>33 - Bar - </b>
+ <s:if test="false">
+ Foo
+ </s:if>
+ <s:elseif test="false">
+ Moo
+ </s:elseif>
+ <s:else>
+ Bar
+ <s:if test="false">
+ FooFoo
+ </s:if>
+ <s:elseif test="false">
+ MooMoo
+ </s:elseif>
+ </s:else>
+
+
+ <br/>
+ <b>34 - FooFooFoo - </b>
+ <s:if test="true">
+ Foo
+ <s:if test="true">
+ FooFoo
+ </s:if>
+ </s:if>
+ <s:elseif test="false">
+ Moo
+ </s:elseif>
+ <s:else>
+ Bar
+ </s:else>
+
+ <br/>
+ <b>35 - Foo - </b>
+ <s:if test="true">
+ Foo
+ <s:if test="false">
+ FooFoo
+ </s:if>
+ </s:if>
+ <s:elseif test="false">
+ Moo
+ </s:elseif>
+ <s:else>
+ Bar
+ </s:else>
+
+ <br/>
+ <b>36 - MooFooFoo - </b>
+ <s:if test="false">
+ Foo
+ </s:if>
+ <s:elseif test="true">
+ Moo
+ <s:if test="true">
+ FooFoo
+ </s:if>
+ </s:elseif>
+ <s:else>
+ Bar
+ </s:else>
+
+ <br/>
+ <b>37 - Moo - </b>
+ <s:if test="false">
+ Foo
+ </s:if>
+ <s:elseif test="true">
+ Moo
+ <s:if test="false">
+ FooFoo
+ </s:if>
+ </s:elseif>
+ <s:else>
+ Bar
+ </s:else>
+
+ <br/>
+ <b>38 - BarFooFoo - </b>
+ <s:if test="false">
+ Foo
+ </s:if>
+ <s:elseif test="false">
+ Moo
+ </s:elseif>
+ <s:else>
+ Bar
+ <s:if test="true">
+ FooFoo
+ </s:if>
+ </s:else>
+
+ <br/>
+ <b>39 - Bar - </b>
+ <s:if test="false">
+ Foo
+ </s:if>
+ <s:elseif test="false">
+ Moo
+ </s:elseif>
+ <s:else>
+ Bar
+ <s:if test="false">
+ FooFoo
+ </s:if>
+ </s:else>
+ </div>
+ </div>
+</div>
+</body>
+</html>
http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/iteratorTag/appendIteratorTagDemoResult.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/iteratorTag/appendIteratorTagDemoResult.jsp b/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/iteratorTag/appendIteratorTagDemoResult.jsp
new file mode 100644
index 0000000..32b9fec
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/iteratorTag/appendIteratorTagDemoResult.jsp
@@ -0,0 +1,34 @@
+<%@taglib prefix="s" uri="/struts-tags" %>
+<html>
+<head>
+ <title>Struts2 Showcase - Non Ui Tag - AppendIterator Tag</title>
+ <s:head/>
+</head>
+<body>
+<div class="page-header">
+ <h1>Non Ui Tag - AppendIterator Tag Demo</h1>
+</div>
+
+<div class="container-fluid">
+ <div class="row-fluid">
+ <div class="span12">
+
+ <s:generator var="iterator1" separator="," val="%{iteratorValue1}" />
+ <s:generator var="iterator2" separator="," val="%{iteratorValue2}" />
+
+ <s:append id="appendedIterator">
+ <s:param value="%{#attr.iterator1}" />
+ <s:param value="%{#attr.iterator2}" />
+ </s:append>
+
+ <s:iterator value="#appendedIterator">
+ <s:property /><br/>
+ </s:iterator>
+
+ <s:url var="url" action="showAppendTagDemo" namespace="/tags/non-ui/appendIteratorTag" />
+ <s:a href="%{#url}" cssClass="btn btn-info"><i class="icon icon-arrow-left"></i> Back To Input</s:a>
+ </div>
+ </div>
+</div>
+</body>
+</html>
http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/iteratorTag/iteratorGeneratorTagDemoResult.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/iteratorTag/iteratorGeneratorTagDemoResult.jsp b/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/iteratorTag/iteratorGeneratorTagDemoResult.jsp
new file mode 100644
index 0000000..5ebb9fc
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/iteratorTag/iteratorGeneratorTagDemoResult.jsp
@@ -0,0 +1,29 @@
+<%@taglib prefix="s" uri="/struts-tags" %>
+<html>
+<head>
+ <title>Struts2 Showcase - Non Ui Tag - Iterator Generator Tag Demo</title>
+ <s:head/>
+</head>
+<body>
+<div class="page-header">
+ <h1>Non Ui Tag - Iterator Generator Tag Demo</h1>
+</div>
+
+<div class="container-fluid">
+ <div class="row-fluid">
+ <div class="span12">
+
+ <s:generator val="%{value}" separator="%{separator}" count="%{count}">
+ <s:iterator value="%{top}">
+ <s:property /><br/>
+ </s:iterator>
+ </s:generator>
+
+
+ <s:url var="url" action="showGeneratorTagDemo" namespace="/tags/non-ui/iteratorGeneratorTag" />
+ <s:a href="%{#url}" cssClass="btn btn-info"><i class="icon icon-arrow-left"></i> Back To Input</s:a>
+ </div>
+ </div>
+</div>
+</body>
+</html>
http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/iteratorTag/mergeIteratorTagDemoResult.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/iteratorTag/mergeIteratorTagDemoResult.jsp b/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/iteratorTag/mergeIteratorTagDemoResult.jsp
new file mode 100644
index 0000000..15cab7d
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/iteratorTag/mergeIteratorTagDemoResult.jsp
@@ -0,0 +1,33 @@
+<%@taglib prefix="s" uri="/struts-tags" %>
+<html>
+<head>
+ <title>Struts2 Showcase - Non Ui Tag - MergeIterator Tag</title>
+ <s:head/>
+</head>
+<body>
+<div class="page-header">
+ <h1>Non Ui Tag - MergeIterator Tag</h1>
+</div>
+
+<div class="container-fluid">
+ <div class="row-fluid">
+ <div class="span12">
+ <s:generator var="iterator1" val="%{iteratorValue1}" separator="," />
+ <s:generator var="iterator2" val="%{iteratorValue2}" separator="," />
+
+ <s:merge var="mergedIterator">
+ <s:param value="%{#attr.iterator1}" />
+ <s:param value="%{#attr.iterator2}" />
+ </s:merge>
+
+ <s:iterator value="%{#mergedIterator}">
+ <s:property /><br/>
+ </s:iterator>
+
+ <s:url var="url" action="showMergeTagDemo" namespace="/tags/non-ui/mergeIteratorTag" />
+ <s:a href="%{#url}" cssClass="btn btn-info"><i class="icon icon-arrow-left"></i> Back To Input</s:a>
+ </div>
+ </div>
+</div>
+</body>
+</html>
http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/iteratorTag/showAppendIteratorTagDemo.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/iteratorTag/showAppendIteratorTagDemo.jsp b/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/iteratorTag/showAppendIteratorTagDemo.jsp
new file mode 100644
index 0000000..259cfc4
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/iteratorTag/showAppendIteratorTagDemo.jsp
@@ -0,0 +1,28 @@
+<%@taglib prefix="s" uri="/struts-tags" %>
+<html>
+<head>
+ <title>Struts2 Showcase - Non Ui Tag - AppendIterator Tag</title>
+ <s:head/>
+</head>
+<body>
+<div class="page-header">
+ <h1>Non Ui Tag - AppendIterator Tag Demo</h1>
+</div>
+
+<div class="container-fluid">
+ <div class="row-fluid">
+ <div class="span12">
+
+ <s:actionerror cssClass="alert alert-error"/>
+ <s:fielderror cssClass="alert alert-error"/>
+
+ <s:form action="submitAppendTagDemo" namespace="/tags/non-ui/appendIteratorTag" method="POST">
+ <s:textfield label="iterator 1 values (comma separated)" name="iteratorValue1" />
+ <s:textfield label="iterator 2 values (comma separated)" name="iteratorValue2" />
+ <s:submit cssClass="btn btn-primary"/>
+ </s:form>
+ </div>
+ </div>
+</div>
+</body>
+</html>
http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/iteratorTag/showIteratorGeneratorTagDemo.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/iteratorTag/showIteratorGeneratorTagDemo.jsp b/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/iteratorTag/showIteratorGeneratorTagDemo.jsp
new file mode 100644
index 0000000..e5a0665
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/iteratorTag/showIteratorGeneratorTagDemo.jsp
@@ -0,0 +1,29 @@
+<%@taglib prefix="s" uri="/struts-tags" %>
+<html>
+<head>
+ <title>Struts2 Showcase - Non Ui Tag - Iterator Generator Tag Demo</title>
+ <s:head/>
+</head>
+<body>
+<div class="page-header">
+ <h1>Non Ui Tag - Iterator Generator Tag Demo</h1>
+</div>
+
+<div class="container-fluid">
+ <div class="row-fluid">
+ <div class="span12">
+
+ <s:actionerror cssClass="alert alert-error"/>
+ <s:fielderror cssClass="alert alert-error"/>
+
+ <s:form action="submitGeneratorTagDemo" namespace="/tags/non-ui/iteratorGeneratorTag" method="POST">
+ <s:textfield label="Value" name="value" />
+ <s:textfield label="Separator" name="separator" />
+ <s:textfield label="Count" name="count" />
+ <s:submit cssClass="btn btn-primary"/>
+ </s:form>
+ </div>
+ </div>
+</div>
+</body>
+</html>
http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/iteratorTag/showMergeIteratorTagDemo.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/iteratorTag/showMergeIteratorTagDemo.jsp b/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/iteratorTag/showMergeIteratorTagDemo.jsp
new file mode 100644
index 0000000..54d2c38
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/iteratorTag/showMergeIteratorTagDemo.jsp
@@ -0,0 +1,29 @@
+<%@taglib prefix="s" uri="/struts-tags" %>
+<html>
+<head>
+ <title>Struts2 Showcase - Non Ui Tag - MergeIterator Tag</title>
+ <s:head/>
+</head>
+<body>
+<div class="page-header">
+ <h1>Non Ui Tag - MergeIterator Tag</h1>
+</div>
+
+<div class="container-fluid">
+ <div class="row-fluid">
+ <div class="span12">
+
+ <s:actionerror cssClass="alert alert-error"/>
+ <s:fielderror cssClass="alert alert-error"/>
+
+ <s:form action="submitMergeTagDemo" namespace="/tags/non-ui/mergeIteratorTag" method="POST">
+ <s:textfield label="Iterator 1 Value (Comma Separated)" name="iteratorValue1" />
+ <s:textfield label="Iterator 2 Value (Comma Separated)" name="iteratorValue2" />
+ <s:submit cssClass="btn btn-primary"/>
+ </s:form>
+
+ </div>
+ </div>
+</div>
+</body>
+</html>
http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/iteratorTag/subsetIteratorTagDemo.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/iteratorTag/subsetIteratorTagDemo.jsp b/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/iteratorTag/subsetIteratorTagDemo.jsp
new file mode 100644
index 0000000..e14de24
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/iteratorTag/subsetIteratorTagDemo.jsp
@@ -0,0 +1,29 @@
+<%@taglib prefix="s" uri="/struts-tags" %>
+<html>
+<head>
+ <title>Struts2 Showcase - Non Ui Tag - SubsetTag Demo</title>
+ <s:head/>
+</head>
+<body>
+<div class="page-header">
+ <h1>Non Ui Tag - SubsetTag Demo</h1>
+</div>
+
+<div class="container-fluid">
+ <div class="row-fluid">
+ <div class="span12">
+
+ <s:actionerror cssClass="alert alert-error"/>
+ <s:fielderror cssClass="alert alert-error"/>
+
+ <s:form action="submitSubsetTagDemo" namespace="/tags/non-ui/subsetIteratorTag" method="POST">
+ <s:textfield label="Iterator value (comma separated)" name="iteratorValue" />
+ <s:textfield label="Count" name="count" />
+ <s:textfield label="Start" name="start" />
+ <s:submit cssClass="btn btn-primary"/>
+ </s:form>
+ </div>
+ </div>
+</div>
+</body>
+</html>
http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/iteratorTag/subsetIteratorTagDemoResult.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/iteratorTag/subsetIteratorTagDemoResult.jsp b/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/iteratorTag/subsetIteratorTagDemoResult.jsp
new file mode 100644
index 0000000..22f8be6
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/tags/non-ui/iteratorTag/subsetIteratorTagDemoResult.jsp
@@ -0,0 +1,30 @@
+<%@taglib prefix="s" uri="/struts-tags" %>
+<html>
+<head>
+ <title>Struts2 Showcase - Non Ui Tag - SubsetTag Demo</title>
+ <s:head/>
+</head>
+<body>
+<div class="page-header">
+ <h1>Non Ui Tag - SubsetTag Demo</h1>
+</div>
+
+<div class="container-fluid">
+ <div class="row-fluid">
+ <div class="span12">
+
+ <s:generator var="iterator" val="%{iteratorValue}" separator="," />
+
+ <s:subset count="%{count}" start="%{start}" source="%{#attr.iterator}" >
+ <s:iterator>
+ <s:property /><br/>
+ </s:iterator>
+ </s:subset>
+
+ <s:url var="url" action="showSubsetTagDemo" namespace="/tags/non-ui/subsetIteratorTag" />
+ <s:a href="%{#url}" cssClass="btn btn-info"><i class="icon icon-arrow-left"></i> Back To Input</s:a>
+ </div>
+ </div>
+</div>
+</body>
+</html>
http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/tags/ui/actionTagExampleCalled.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/tags/ui/actionTagExampleCalled.jsp b/apps/showcase/src/main/webapp/WEB-INF/tags/ui/actionTagExampleCalled.jsp
new file mode 100644
index 0000000..c97dc67
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/tags/ui/actionTagExampleCalled.jsp
@@ -0,0 +1,2 @@
+<%@taglib prefix="s" uri="/struts-tags" %>
+This text is from the called class
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/tags/ui/actionTagExampleCalling.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/tags/ui/actionTagExampleCalling.jsp b/apps/showcase/src/main/webapp/WEB-INF/tags/ui/actionTagExampleCalling.jsp
new file mode 100644
index 0000000..160851c
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/tags/ui/actionTagExampleCalling.jsp
@@ -0,0 +1,24 @@
+<%@taglib prefix="s" uri="/struts-tags" %>
+<html>
+<head>
+ <title>Struts2 Showcase - UI Tags - Action Tag</title>
+ <s:head/>
+</head>
+<body>
+<div class="page-header">
+ <h1>UI Tags - Action Tag</h1>
+</div>
+
+<div class="container-fluid">
+ <div class="row-fluid">
+ <div class="span12">
+ <b>Example 1:</b>
+ This example calls an action and includes the output on the page
+ <p id="example1" class="well">
+ <s:action namespace="/tags/ui" name="actionTagExample" executeResult="true"/>
+ </p>
+ </div>
+ </div>
+</div>
+</body>
+</html>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/tags/ui/componentTagExample.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/tags/ui/componentTagExample.jsp b/apps/showcase/src/main/webapp/WEB-INF/tags/ui/componentTagExample.jsp
new file mode 100644
index 0000000..dca5b0f
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/tags/ui/componentTagExample.jsp
@@ -0,0 +1,69 @@
+<%@taglib prefix="s" uri="/struts-tags" %>
+<html>
+<head>
+ <title>Struts2 Showcase - UI Tags - Component Tag</title>
+ <s:head/>
+</head>
+<body>
+<div class="page-header">
+ <h1>UI Tags - Component Tag</h1>
+</div>
+
+<div class="container-fluid">
+ <div class="row-fluid">
+ <div class="span12">
+ <p>This example tries to demonstrates the usage of <s:component ... > tag.<p/>
+
+ <p>To have a look at the source of this jsp page click
+ <s:url var="url" action="showComponentTagExampleCode" namespace="/tags/ui"/>
+ <s:a href="%{#url}">here</s:a>
+ <p/>
+
+ <b>Example 1:</b>
+ <p>This example load the template from the webapp context path using
+ the default (ftl) as its template.
+ <s:component
+ theme="customTheme"
+ templateDir="customTemplateDir"
+ template="ftlCustomTemplate">
+ <s:param name="paramName" value="%{'paramValue1'}" />
+ </s:component>
+ <p/>
+
+ <b>Example 2:</b>
+ <p>This example load the template from the webapp context path using
+ jsp as its template (notice the *.jsp extension to the template).
+ <s:component
+ theme="customTheme"
+ templateDir="customTemplateDir"
+ template="jspCustomTemplate.jsp">
+ <s:param name="paramName" value="%{'paramValue2'}" />
+ </s:component>
+ <p/>
+
+ <b>Example 3</b>
+ <p>This example load the template from the webapp context path,
+ using the default template directory and theme (default to
+ 'template' and 'xhtml' respectively)
+ <s:component template="mytemplate.jsp">
+ <s:param name="paramName" value="%{'paramValue3'}" />
+ </s:component>
+ <p/>
+
+
+ <b>Example 4</b>
+ <p>This example load the template from the webapp classpath using
+ a custom themplate directory and theme.
+ <s:component
+ theme="myTheme"
+ templateDir="myTemplateDir"
+ template="myAnotherTemplate">
+ <s:param name="paramName" value="%{'paramValue4'}" />
+ </s:component>
+ <p/>
+ </div>
+ </div>
+</div>
+</body>
+</html>
+
http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/tags/ui/datepicker/index.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/tags/ui/datepicker/index.jsp b/apps/showcase/src/main/webapp/WEB-INF/tags/ui/datepicker/index.jsp
new file mode 100644
index 0000000..db9c7fb
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/tags/ui/datepicker/index.jsp
@@ -0,0 +1,33 @@
+<%@taglib prefix="s" uri="/struts-tags" %>
+<%@ taglib prefix="sx" uri="/struts-dojo-tags" %>
+<html>
+<head>
+ <title>Struts2 Showcase - UI Tags - Datepicker Tag</title>
+ <sx:head extraLocales="en-us,nl-nl,de-de" />
+</head>
+<body>
+<div class="page-header">
+ <h1>UI Tags - Datepicker Tag</h1>
+</div>
+
+<div class="container-fluid">
+ <div class="row-fluid">
+ <div class="span12">
+ <table>
+ <sx:datetimepicker label="toggleType='wipe'" value="%{'2006-10-31'}" toggleType="wipe" toggleDuration="300" name="test"/>
+ <sx:datetimepicker label="toggleType='explode'" value="%{'2006-07-22'}" toggleType="explode" toggleDuration="500" id="dp2"/>
+ <sx:datetimepicker label="toggleType='fade'" value="%{'2006-06-30'}" toggleType="fade" toggleDuration="500"/>
+ <sx:datetimepicker label="With value='today'" name="dddp1" value="%{'today'}" />
+ <sx:datetimepicker label="US format, empty" name="dddp2" language="en-us" />
+ <sx:datetimepicker label="US format with initial date of 2006-06-26" name="dddp3" value="%{'2006-06-26'}" language="en-us" />
+ <sx:datetimepicker label="With initial date of 1969-04-25 and a custom format dd/MM/yyyy" name="dddp5" value="%{'25/04/1969'}" displayFormat="dd/MM/yyyy" />
+ <sx:datetimepicker label="In German" name="dddp7" value="%{'2006-06-28'}" language="de-de" />
+ <sx:datetimepicker label="In Dutch" name="dddp8" value="%{'2006-06-28'}" language="nl-nl" />
+ <sx:datetimepicker label="US format with initial date of 2006-06-26 and long formatting (parse not supported)" name="dddp12" value="%{'2006-06-26'}" formatLength="long" language="en-us" />
+ <sx:datetimepicker label="German format with initial date of 2006-06-26 and long formatting (parse not supported)" name="dddp13" value="%{'2006-06-26'}" formatLength="long" language="de" />
+ </table>
+ </div>
+ </div>
+</div>
+</body>
+</html>
http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/tags/ui/dynamicTreeSelect.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/tags/ui/dynamicTreeSelect.jsp b/apps/showcase/src/main/webapp/WEB-INF/tags/ui/dynamicTreeSelect.jsp
new file mode 100644
index 0000000..2c1cd2e
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/tags/ui/dynamicTreeSelect.jsp
@@ -0,0 +1,6 @@
+<%@taglib prefix="s" uri="/struts-tags" %>
+
+Id:<s:property value="%{nodeId}" /><br/>
+Name:<s:property value="%{nodeName}" /><br/>
+
+
http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/tags/ui/example.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/tags/ui/example.jsp b/apps/showcase/src/main/webapp/WEB-INF/tags/ui/example.jsp
new file mode 100644
index 0000000..0e89c03
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/tags/ui/example.jsp
@@ -0,0 +1,149 @@
+<%@taglib prefix="s" uri="/struts-tags" %>
+<%@ taglib prefix="sx" uri="/struts-dojo-tags" %>
+<html>
+<head>
+ <title>Struts2 Showcase - UI Tags Example</title>
+ <s:head/>
+ <sx:head />
+</head>
+<body>
+<div class="page-header">
+ <h1>UI Tags Example</h1>
+</div>
+
+<div class="container-fluid">
+ <div class="row-fluid">
+ <div class="span12">
+
+ <s:actionerror cssClass="alert alert-error"/>
+ <s:actionmessage cssClass="alert alert-info"/>
+ <s:fielderror cssClass="alert alert-error"/>
+
+
+ <s:form action="exampleSubmit" enctype="multipart/form-data" javascriptTooltip="true">
+ <s:textfield
+ label="Name"
+ name="name"
+ tooltip="Enter your Name here"/>
+
+ <sx:datetimepicker
+ tooltip="Select Your Birthday"
+ label="Birthday"
+ name="birthday" />
+
+ <sx:datetimepicker
+ tooltip="Enter the time you wake up"
+ label="Wake up time"
+ name="wakeup"
+ type="time"/>
+
+ <s:textarea
+ tooltip="Enter your Biography"
+ label="Biography"
+ name="bio"
+ cols="20"
+ rows="3"/>
+
+ <s:select
+ tooltip="Choose Your Favourite Color"
+ label="Favorite Color"
+ list="{'Red', 'Blue', 'Green'}"
+ name="favouriteColor"
+ emptyOption="true"
+ headerKey="None"
+ headerValue="None"/>
+
+ <s:select
+ tooltip="Choose Your Favourite Language"
+ label="Favourite Language"
+ list="favouriteLanguages"
+ name="favouriteLanguage"
+ listKey="key"
+ listValue="description"
+ listCssStyle="style"
+ emptyOption="true"
+ headerKey="None"
+ headerValue="None"/>
+
+ <s:checkboxlist
+ tooltip="Choose your Friends"
+ label="Friends"
+ list="{'Wes', 'Patrick', 'Jason', 'Jay', 'Toby', 'Rene'}"
+ name="friends"/>
+
+ <s:radio
+ tooltip="Choose your Best Friend"
+ label="Best Friend"
+ list="{'Wes', 'Patrick', 'Jason', 'Jay', 'Toby', 'Rene'}"
+ name="bestFriend"
+ cssErrorClass="foo" />
+
+ <s:checkbox
+ tooltip="Confirmed that your are Over 18"
+ label="Age 18+"
+ name="legalAge"/>
+
+ <s:doubleselect
+ tooltip="Choose Your State"
+ label="State"
+ name="region" list="{'North', 'South'}"
+ value="'South'"
+ doubleValue="'Florida'"
+ doubleList="top == 'North' ? {'Oregon', 'Washington'} : {'Texas', 'Florida'}"
+ doubleName="state"
+ headerKey="-1"
+ headerValue="---------- Please Select ----------"
+ emptyOption="true" />
+
+ <s:doubleselect
+ tooltip="Choose your Vehical"
+ label="Favourite Vehical"
+ name="favouriteVehicalType"
+ list="vehicalTypeList"
+ listKey="key"
+ listValue="description"
+ value="'MotorcycleKey'"
+ doubleValue="'YamahaKey'"
+ doubleList="vehicalSpecificList"
+ doubleListKey="key"
+ doubleListValue="description"
+ doubleName="favouriteVehicalSpecific" headerKey="-1"
+ headerValue="---------- Please Select ----------"
+ emptyOption="true" />
+
+ <s:file
+ tooltip="Upload Your Picture"
+ label="Picture"
+ name="picture" />
+
+ <s:optiontransferselect
+ tooltip="Select Your Favourite Cartoon Characters"
+ label="Favourite Cartoons Characters"
+ name="leftSideCartoonCharacters"
+ leftTitle="Left Title"
+ rightTitle="Right Title"
+ list="{'Popeye', 'He-Man', 'Spiderman'}"
+ multiple="true"
+ headerKey="headerKey"
+ headerValue="--- Please Select ---"
+ emptyOption="true"
+ doubleList="{'Superman', 'Mickey Mouse', 'Donald Duck'}"
+ doubleName="rightSideCartoonCharacters"
+ doubleHeaderKey="doubleHeaderKey"
+ doubleHeaderValue="--- Please Select ---"
+ doubleEmptyOption="true"
+ doubleMultiple="true" />
+
+ <s:textarea
+ label="Your Thougths"
+ name="thoughts"
+ tooltip="Enter your thoughts here" />
+
+ <s:submit cssClass="btn btn-primary"/>
+ <s:reset cssClass="btn btn-danger" onclick="alert('Resetting form now... Press OK to continue!');" />
+ </s:form>
+ </div>
+ </div>
+</div>
+</body>
+</html>
http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/tags/ui/example.vm
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/tags/ui/example.vm b/apps/showcase/src/main/webapp/WEB-INF/tags/ui/example.vm
new file mode 100644
index 0000000..23a5d58
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/tags/ui/example.vm
@@ -0,0 +1,39 @@
+<html>
+<head>
+ <title>Struts2 Showcase - UI Tags Example (Velocity)</title>
+ #shead()
+ #sxhead()
+</head>
+<body>
+<div class="page-header">
+ <h1>UI Tags Example (Velocity)</h1>
+</div>
+
+<div class="container-fluid">
+ <div class="row-fluid">
+ <div class="span12">
+
+ #sform ("action=exampleSubmitVelocity" "method=post" "enctype=multipart/form-data")
+ #stextfield ("label=Name" "name=name")
+ #sxdatetimepicker ("label=Birthday" "name=birthday")
+ #sxdatetimepicker ("label=Wake up time" "name=wakeup" "type=time")
+ #stextarea ("label=Biography" "name=bio" "cols=20" "rows=3")
+ #sselect ("label=Favourite Color" "list={'Red', 'Blue', 'Green'}" "name=favouriteColor" "emptyOption=true" "headerKey=None" "headerValue=None")
+ #sselect ("label=Favourite Language" "list=favouriteLanguages" "name=favouriteLanguage" "listKey=key" "listValue=description" "emptyOption=true" "headerKey=None" "headerValue=None")
+ #scheckboxlist ("label=Friends" "list={'Patrick', 'Jason', 'Jay', 'Toby', 'Rene'}" "name=friends")
+ #scheckbox ("label=Age 18+" "name=legalAge")
+ #sdoubleselect ("label=State" "name=region" "list={'North', 'South'}" "value='North'" "doubleValue='Florida'" "doubleList=top == 'North' ? {'Oregon', 'Washington'} : {'Texas', 'Florida'}" "doubleName=state" "headerKey=-1" "headerValue=---------- Please Select ----------" "emptyOption=true" )
+ #sdoubleselect ("label=Favourite Vehical" "name=favouriteVehicalType" "list=vehicalTypeList" "listKey=key" "listValue=description" "value='MotorcycleKey'" "doubleValue='YamahaKey'" "doubleList=vehicalSpecificList" "doubleListKey=key" "doubleListValue=description" "doubleName=favouriteVehicalSpecific" "headerKey=-1" "headerValue=---------- Please Select ----------" "emptyOption=true" )
+ #sfile ("label=Picture" "name=picture")
+ #soptiontransferselect ("label=Favourite Cartoons Characters" "name=leftSideCartoonCharacters" "leftTitle=Left Title" "rightTitle=Right Title" "list={'Popeye', 'He-Man', 'Spiderman'}" "multiple=true" "headerKey=headerKey" "headerValue=--- Please Select ---" "emptyOption=true" "doubleList={'Superman', 'Mickey Mouse', 'Donald Duck'}" "doubleName=rightSideCartoonCharacters" "doubleHeaderKey=doubleHeaderKey" "doubleHeaderValue=--- Please Select ---" "doubleEmptyOption=true" "doubleMultiple=true" )
+ #ssubmit("cssClass=btn btn-primary")
+ #sreset("cssClass=btn btn-danger")
+ #end
+
+ #surl ("id=url" "value=index.jsp")
+ <a href="${url}" class="btn btn-info"><i class="icon icon-arrow-left"></i> Back to index.jsp</a>
+ </div>
+ </div>
+</div>
+</body>
+</html>
http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/tags/ui/exampleSubmited.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/tags/ui/exampleSubmited.jsp b/apps/showcase/src/main/webapp/WEB-INF/tags/ui/exampleSubmited.jsp
new file mode 100644
index 0000000..5ef2126
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/tags/ui/exampleSubmited.jsp
@@ -0,0 +1,58 @@
+<%@taglib prefix="s" uri="/struts-tags" %>
+<html>
+<head>
+ <title>Struts2 Showcase - UI Tags Example - Example Submited</title>
+ <s:head/>
+</head>
+<body>
+<div class="page-header">
+ <h1>UI Tags Example - Example Submited</h1>
+</div>
+
+<div class="container-fluid">
+ <div class="row-fluid">
+ <div class="span12">
+ <table class="table table-striped table-bordered table-hover table-condensed">
+ <s:label label="Name" name="name" />
+ <s:label label="Birthday" name="birthday" />
+ <tr>
+ <td><label class="label">Wake up time:</label></td>
+ <td>
+ <s:date name="wakeup" format="hh:mm aa" />
+ </td>
+ </tr>
+ <s:label label="Biography" name="bio" />
+ <s:label label="Favourite Color" name="favouriteColor" />
+ <s:label label="Friends" name="friends" />
+ <s:label label="Best Friend" name="bestFriend" />
+ <s:label label="Legal Age" name="legalAge" />
+ <s:label label="Region" name="region" />
+ <s:label label="State" name="state" />
+ <s:label label="Picture" name="picture" />
+ <s:label label="Favourite Language" name="favouriteLanguage" />
+ <s:label label="Favourite Vehical Type" name="favouriteVehicalType" />
+ <s:label label="Favourite Vehical Specific" name="favouriteVehicalSpecific" />
+ <tr>
+ <td><label class="label">Favourite Cartoon Characters (Left):</label></td>
+ <td>
+ <s:iterator value="leftSideCartoonCharacters" status="stat">
+ <s:property value="%{#stat.count}" />.<s:property value="top" />
+ </s:iterator>
+ </td>
+ </tr>
+ <tr>
+ <td><label class="label">Favourite Cartoon Characters (Right):</label></td>
+ <td>
+ <s:iterator value="rightSideCartoonCharacters" status="stat">
+ <s:property value="%{#stat.count}" />.<s:property value="top" />
+ </s:iterator>
+ </td>
+ </tr>
+ <s:label label="Thoughts" name="thoughts" />
+
+ </table>
+ </div>
+ </div>
+</div>
+</body>
+</html>
http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/tags/ui/exampleSubmited.vm
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/tags/ui/exampleSubmited.vm b/apps/showcase/src/main/webapp/WEB-INF/tags/ui/exampleSubmited.vm
new file mode 100644
index 0000000..9646a4f
--- /dev/null
+++ b/apps/showcase/src/main/webapp/WEB-INF/tags/ui/exampleSubmited.vm
@@ -0,0 +1,61 @@
+<html>
+<head>
+ <title>Struts2 Showcase - UI Tags Example (Velocity) - Example Submited </title>
+</head>
+<body>
+<div class="page-header">
+ <h1>UI Tags Example (Velocity) - Example Submited</h1>
+</div>
+
+<div class="container-fluid">
+ <div class="row-fluid">
+ <div class="span12">
+
+ <table>
+ #slabel ("label=Name" "name=name")
+ #slabel ("label=Birthday" "name=birthday")
+ <tr>
+ <td><label class="label">Wake up time:</label></td>
+ <td>
+ #sdate ("name=wakeup" "format=hh:mm aa")
+ </td>
+ </tr>
+ #slabel ("label=Biography" "name=bio")
+ #slabel ("label=Favourite Color" "name=favouriteColor")
+ #slabel ("label=Friends" "name=friends")
+ #slabel ("label=Legal Age" "name=legalAge")
+ #slabel ("label=Region" "name=region")
+ #slabel ("label=State" "name=state")
+ #slabel ("label=Picture" "name=picture")
+ #slabel ("label=Favourite Language" "name=favouriteLanguage")
+ #slabel ("label=Favourite Vehical Type" "name=favouriteVehicalType")
+ #slabel ("label=Favourite Vehical Specific" "name=favouriteVehicalSpecific")
+ <tr>
+ <td>Favourite Cartoon Characters (Left):</td>
+ <td>
+ #set ( $startCount = 1)
+ #foreach( $item in $leftSideCartoonCharacters)
+ $startCount.${item}
+ #set ( $startCount = $startCount + 1)
+ #end
+ </td>
+ </tr>
+ <tr>
+ <td>Favourite Cartoon Characters (Right):</td>
+ <td>
+ #set ( $startCount = 1)
+ #foreach( $item in $rightSideCartoonCharacters)
+ $startCount.${item}
+ #set ( $startCount = $startCount + 1)
+ #end
+ </td>
+ </tr>
+ </table>
+
+ #surl ("id=url" "value=index.jsp")
+ #sa("href=${url}")Back to index.jsp#end
+ </div>
+ </div>
+</div>
+</body>
+</html>
http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/tags/ui/images/backgroundImage.jpg
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/tags/ui/images/backgroundImage.jpg b/apps/showcase/src/main/webapp/WEB-INF/tags/ui/images/backgroundImage.jpg
new file mode 100644
index 0000000..0f9cb92
Binary files /dev/null and b/apps/showcase/src/main/webapp/WEB-INF/tags/ui/images/backgroundImage.jpg differ
http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/WEB-INF/tags/ui/images/leopard.jpg
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/tags/ui/images/leopard.jpg b/apps/showcase/src/main/webapp/WEB-INF/tags/ui/images/leopard.jpg
new file mode 100644
index 0000000..f67f96b
Binary files /dev/null and b/apps/showcase/src/main/webapp/WEB-INF/tags/ui/images/leopard.jpg differ
[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 »</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;"><s:debug /></tt> to your JSP page
- and you will see the debug link.
- <p/>
-
- <p>
- Just click on the Debug label to see the Struts ValueStack Debug information.
- <p/>
- <s:debug />
- </div>
- </div>
-</div>
-</body>
-</html>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/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 <s:component ... > tag.<p/>
-
- <p>To have a look at the source of this jsp page click
- <s:url var="url" action="showComponentTagExampleCode" namespace="/tags/ui"/>
- <s:a href="%{#url}">here</s:a>
- <p/>
-
- <b>Example 1:</b>
- <p>This example load the template from the webapp context path using
- the default (ftl) as its template.
- <s:component
- theme="customTheme"
- templateDir="customTemplateDir"
- template="ftlCustomTemplate">
- <s:param name="paramName" value="%{'paramValue1'}" />
- </s:component>
- <p/>
-
- <b>Example 2:</b>
- <p>This example load the template from the webapp context path using
- jsp as its template (notice the *.jsp extension to the template).
- <s:component
- theme="customTheme"
- templateDir="customTemplateDir"
- template="jspCustomTemplate.jsp">
- <s:param name="paramName" value="%{'paramValue2'}" />
- </s:component>
- <p/>
-
- <b>Example 3</b>
- <p>This example load the template from the webapp context path,
- using the default template directory and theme (default to
- 'template' and 'xhtml' respectively)
- <s:component template="mytemplate.jsp">
- <s:param name="paramName" value="%{'paramValue3'}" />
- </s:component>
- <p/>
-
-
- <b>Example 4</b>
- <p>This example load the template from the webapp classpath using
- a custom themplate directory and theme.
- <s:component
- theme="myTheme"
- templateDir="myTemplateDir"
- template="myAnotherTemplate">
- <s:param name="paramName" value="%{'paramValue4'}" />
- </s:component>
- <p/>
- </div>
- </div>
-</div>
-</body>
-</html>
-
http://git-wip-us.apache.org/repos/asf/struts/blob/65eb9751/apps/showcase/src/main/webapp/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" />
- </s:iterator>
- </td>
- </tr>
- <tr>
- <td><label class="label">Favourite Cartoon Characters (Right):</label></td>
- <td>
- <s:iterator value="rightSideCartoonCharacters" status="stat">
- <s:property value="%{#stat.count}" />.<s:property value="top" />
- </s:iterator>
- </td>
- </tr>
- <s:label label="Thoughts" name="thoughts" />
-
- </table>
- </div>
- </div>
-</div>
-</body>
-</html>