You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@struts.apache.org by lu...@apache.org on 2014/03/06 22:36:11 UTC
[01/20] git commit: Moves jsps under WEB-INF
Repository: struts
Updated Branches:
refs/heads/develop 040fd6761 -> 80cd0409c
Moves 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/6b00db2d
Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/6b00db2d
Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/6b00db2d
Branch: refs/heads/develop
Commit: 6b00db2d23acf93f83563715aa0deaeb0a245785
Parents: 7d383d6
Author: Lukasz Lenart <lu...@apache.org>
Authored: Tue Feb 25 10:56:53 2014 +0100
Committer: Lukasz Lenart <lu...@apache.org>
Committed: Tue Feb 25 10:56:53 2014 +0100
----------------------------------------------------------------------
apps/jboss-blank/src/main/resources/example.xml | 6 ++---
.../webapp/WEB-INF/jsp/example/HelloWorld.jsp | 28 ++++++++++++++++++++
.../main/webapp/WEB-INF/jsp/example/Login.jsp | 15 +++++++++++
.../main/webapp/WEB-INF/jsp/example/Menu.jsp | 3 +++
.../main/webapp/WEB-INF/jsp/example/Missing.jsp | 11 ++++++++
.../webapp/WEB-INF/jsp/example/Register.jsp | 3 +++
.../main/webapp/WEB-INF/jsp/example/Welcome.jsp | 18 +++++++++++++
.../src/main/webapp/example/HelloWorld.jsp | 28 --------------------
.../src/main/webapp/example/Login.jsp | 15 -----------
.../src/main/webapp/example/Menu.jsp | 3 ---
.../src/main/webapp/example/Missing.jsp | 11 --------
.../src/main/webapp/example/Register.jsp | 3 ---
.../src/main/webapp/example/Welcome.jsp | 18 -------------
13 files changed, 81 insertions(+), 81 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/struts/blob/6b00db2d/apps/jboss-blank/src/main/resources/example.xml
----------------------------------------------------------------------
diff --git a/apps/jboss-blank/src/main/resources/example.xml b/apps/jboss-blank/src/main/resources/example.xml
index e93d84e..d929de1 100644
--- a/apps/jboss-blank/src/main/resources/example.xml
+++ b/apps/jboss-blank/src/main/resources/example.xml
@@ -8,16 +8,16 @@
<package name="example" namespace="/example" extends="struts-default">
<action name="HelloWorld" class="example.HelloWorld">
- <result>/example/HelloWorld.jsp</result>
+ <result>/WEB-INF/jsp/example/HelloWorld.jsp</result>
</action>
<action name="Login_*" method="{1}" class="example.Login">
- <result name="input">/example/Login.jsp</result>
+ <result name="input">/WEB-INF/jsp/example/Login.jsp</result>
<result type="redirectAction">Menu</result>
</action>
<action name="*" class="example.ExampleSupport">
- <result>/example/{1}.jsp</result>
+ <result>/WEB-INF/jsp/example/{1}.jsp</result>
</action>
<!-- Add actions here -->
http://git-wip-us.apache.org/repos/asf/struts/blob/6b00db2d/apps/jboss-blank/src/main/webapp/WEB-INF/jsp/example/HelloWorld.jsp
----------------------------------------------------------------------
diff --git a/apps/jboss-blank/src/main/webapp/WEB-INF/jsp/example/HelloWorld.jsp b/apps/jboss-blank/src/main/webapp/WEB-INF/jsp/example/HelloWorld.jsp
new file mode 100644
index 0000000..938c761
--- /dev/null
+++ b/apps/jboss-blank/src/main/webapp/WEB-INF/jsp/example/HelloWorld.jsp
@@ -0,0 +1,28 @@
+<%@ page contentType="text/html; charset=UTF-8" %>
+<%@ taglib prefix="s" uri="/struts-tags" %>
+<html>
+<head>
+ <title><s:text name="HelloWorld.message"/></title>
+</head>
+
+<body>
+<h2><s:property value="message"/></h2>
+
+<h3>Languages</h3>
+<ul>
+ <li>
+ <s:url id="url" action="HelloWorld">
+ <s:param name="request_locale">en</s:param>
+ </s:url>
+ <s:a href="%{url}">English</s:a>
+ </li>
+ <li>
+ <s:url id="url" action="HelloWorld">
+ <s:param name="request_locale">es</s:param>
+ </s:url>
+ <s:a href="%{url}">Espanol</s:a>
+ </li>
+</ul>
+
+</body>
+</html>
http://git-wip-us.apache.org/repos/asf/struts/blob/6b00db2d/apps/jboss-blank/src/main/webapp/WEB-INF/jsp/example/Login.jsp
----------------------------------------------------------------------
diff --git a/apps/jboss-blank/src/main/webapp/WEB-INF/jsp/example/Login.jsp b/apps/jboss-blank/src/main/webapp/WEB-INF/jsp/example/Login.jsp
new file mode 100644
index 0000000..6438080
--- /dev/null
+++ b/apps/jboss-blank/src/main/webapp/WEB-INF/jsp/example/Login.jsp
@@ -0,0 +1,15 @@
+<%@ page contentType="text/html; charset=UTF-8" %>
+<%@ taglib prefix="s" uri="/struts-tags" %>
+<html>
+<head>
+ <title>Sign On</title>
+</head>
+
+<body>
+<s:form action="Login">
+ <s:textfield key="username"/>
+ <s:password key="password" />
+ <s:submit/>
+</s:form>
+</body>
+</html>
http://git-wip-us.apache.org/repos/asf/struts/blob/6b00db2d/apps/jboss-blank/src/main/webapp/WEB-INF/jsp/example/Menu.jsp
----------------------------------------------------------------------
diff --git a/apps/jboss-blank/src/main/webapp/WEB-INF/jsp/example/Menu.jsp b/apps/jboss-blank/src/main/webapp/WEB-INF/jsp/example/Menu.jsp
new file mode 100644
index 0000000..a74bd2c
--- /dev/null
+++ b/apps/jboss-blank/src/main/webapp/WEB-INF/jsp/example/Menu.jsp
@@ -0,0 +1,3 @@
+<%@ page contentType="text/html; charset=UTF-8" %>
+<%@ taglib prefix="s" uri="/struts-tags" %>
+<s:include value="Missing.jsp"/>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/struts/blob/6b00db2d/apps/jboss-blank/src/main/webapp/WEB-INF/jsp/example/Missing.jsp
----------------------------------------------------------------------
diff --git a/apps/jboss-blank/src/main/webapp/WEB-INF/jsp/example/Missing.jsp b/apps/jboss-blank/src/main/webapp/WEB-INF/jsp/example/Missing.jsp
new file mode 100644
index 0000000..7c01ac9
--- /dev/null
+++ b/apps/jboss-blank/src/main/webapp/WEB-INF/jsp/example/Missing.jsp
@@ -0,0 +1,11 @@
+<%@ page contentType="text/html; charset=UTF-8" %>
+<%@ taglib prefix="s" uri="/struts-tags" %>
+<html>
+<head><title>Missing Feature</title></head>
+
+<body>
+<p>
+ <s:text name="Missing.message"/>
+</p>
+</body>
+</html>
http://git-wip-us.apache.org/repos/asf/struts/blob/6b00db2d/apps/jboss-blank/src/main/webapp/WEB-INF/jsp/example/Register.jsp
----------------------------------------------------------------------
diff --git a/apps/jboss-blank/src/main/webapp/WEB-INF/jsp/example/Register.jsp b/apps/jboss-blank/src/main/webapp/WEB-INF/jsp/example/Register.jsp
new file mode 100644
index 0000000..a74bd2c
--- /dev/null
+++ b/apps/jboss-blank/src/main/webapp/WEB-INF/jsp/example/Register.jsp
@@ -0,0 +1,3 @@
+<%@ page contentType="text/html; charset=UTF-8" %>
+<%@ taglib prefix="s" uri="/struts-tags" %>
+<s:include value="Missing.jsp"/>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/struts/blob/6b00db2d/apps/jboss-blank/src/main/webapp/WEB-INF/jsp/example/Welcome.jsp
----------------------------------------------------------------------
diff --git a/apps/jboss-blank/src/main/webapp/WEB-INF/jsp/example/Welcome.jsp b/apps/jboss-blank/src/main/webapp/WEB-INF/jsp/example/Welcome.jsp
new file mode 100644
index 0000000..64ffe9b
--- /dev/null
+++ b/apps/jboss-blank/src/main/webapp/WEB-INF/jsp/example/Welcome.jsp
@@ -0,0 +1,18 @@
+<%@ page contentType="text/html; charset=UTF-8" %>
+<%@ taglib prefix="s" uri="/struts-tags" %>
+<html>
+<head>
+ <title>Welcome</title>
+ <link href="<s:url value="/css/examplecss"/>" rel="stylesheet"
+ type="text/css"/>
+</head>
+
+<body>
+<h3>Commands</h3>
+<ul>
+ <li><a href="<s:url action="Login_input"/>">Sign On</a></li>
+ <li><a href="<s:url action="Register"/>">Register</a></li>
+</ul>
+
+</body>
+</html>
http://git-wip-us.apache.org/repos/asf/struts/blob/6b00db2d/apps/jboss-blank/src/main/webapp/example/HelloWorld.jsp
----------------------------------------------------------------------
diff --git a/apps/jboss-blank/src/main/webapp/example/HelloWorld.jsp b/apps/jboss-blank/src/main/webapp/example/HelloWorld.jsp
deleted file mode 100644
index 5ca6402..0000000
--- a/apps/jboss-blank/src/main/webapp/example/HelloWorld.jsp
+++ /dev/null
@@ -1,28 +0,0 @@
-<%@ page contentType="text/html; charset=UTF-8" %>
-<%@ taglib prefix="s" uri="/struts-tags" %>
-<html>
-<head>
- <title><s:text name="HelloWorld.message"/></title>
-</head>
-
-<body>
-<h2><s:property value="message"/></h2>
-
-<h3>Languages</h3>
-<ul>
- <li>
- <s:url id="url" action="HelloWorld">
- <s:param name="request_locale">en</s:param>
- </s:url>
- <s:a href="%{url}">English</s:a>
- </li>
- <li>
- <s:url id="url" action="HelloWorld">
- <s:param name="request_locale">es</s:param>
- </s:url>
- <s:a href="%{url}">Espanol</s:a>
- </li>
-</ul>
-
-</body>
-</html>
http://git-wip-us.apache.org/repos/asf/struts/blob/6b00db2d/apps/jboss-blank/src/main/webapp/example/Login.jsp
----------------------------------------------------------------------
diff --git a/apps/jboss-blank/src/main/webapp/example/Login.jsp b/apps/jboss-blank/src/main/webapp/example/Login.jsp
deleted file mode 100644
index 2b77ac2..0000000
--- a/apps/jboss-blank/src/main/webapp/example/Login.jsp
+++ /dev/null
@@ -1,15 +0,0 @@
-<%@ page contentType="text/html; charset=UTF-8" %>
-<%@ taglib prefix="s" uri="/struts-tags" %>
-<html>
-<head>
- <title>Sign On</title>
-</head>
-
-<body>
-<s:form action="Login">
- <s:textfield key="username"/>
- <s:password key="password" />
- <s:submit/>
-</s:form>
-</body>
-</html>
http://git-wip-us.apache.org/repos/asf/struts/blob/6b00db2d/apps/jboss-blank/src/main/webapp/example/Menu.jsp
----------------------------------------------------------------------
diff --git a/apps/jboss-blank/src/main/webapp/example/Menu.jsp b/apps/jboss-blank/src/main/webapp/example/Menu.jsp
deleted file mode 100644
index 3fbc54b..0000000
--- a/apps/jboss-blank/src/main/webapp/example/Menu.jsp
+++ /dev/null
@@ -1,3 +0,0 @@
-<%@ page contentType="text/html; charset=UTF-8" %>
-<%@ taglib prefix="s" uri="/struts-tags" %>
-<s:include value="Missing.jsp"/>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/struts/blob/6b00db2d/apps/jboss-blank/src/main/webapp/example/Missing.jsp
----------------------------------------------------------------------
diff --git a/apps/jboss-blank/src/main/webapp/example/Missing.jsp b/apps/jboss-blank/src/main/webapp/example/Missing.jsp
deleted file mode 100644
index d2f0023..0000000
--- a/apps/jboss-blank/src/main/webapp/example/Missing.jsp
+++ /dev/null
@@ -1,11 +0,0 @@
-<%@ page contentType="text/html; charset=UTF-8" %>
-<%@ taglib prefix="s" uri="/struts-tags" %>
-<html>
-<head><title>Missing Feature</title></head>
-
-<body>
-<p>
- <s:text name="Missing.message"/>
-</p>
-</body>
-</html>
http://git-wip-us.apache.org/repos/asf/struts/blob/6b00db2d/apps/jboss-blank/src/main/webapp/example/Register.jsp
----------------------------------------------------------------------
diff --git a/apps/jboss-blank/src/main/webapp/example/Register.jsp b/apps/jboss-blank/src/main/webapp/example/Register.jsp
deleted file mode 100644
index 3fbc54b..0000000
--- a/apps/jboss-blank/src/main/webapp/example/Register.jsp
+++ /dev/null
@@ -1,3 +0,0 @@
-<%@ page contentType="text/html; charset=UTF-8" %>
-<%@ taglib prefix="s" uri="/struts-tags" %>
-<s:include value="Missing.jsp"/>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/struts/blob/6b00db2d/apps/jboss-blank/src/main/webapp/example/Welcome.jsp
----------------------------------------------------------------------
diff --git a/apps/jboss-blank/src/main/webapp/example/Welcome.jsp b/apps/jboss-blank/src/main/webapp/example/Welcome.jsp
deleted file mode 100644
index 23ae4b8..0000000
--- a/apps/jboss-blank/src/main/webapp/example/Welcome.jsp
+++ /dev/null
@@ -1,18 +0,0 @@
-<%@ page contentType="text/html; charset=UTF-8" %>
-<%@ taglib prefix="s" uri="/struts-tags" %>
-<html>
-<head>
- <title>Welcome</title>
- <link href="<s:url value="/css/examplecss"/>" rel="stylesheet"
- type="text/css"/>
-</head>
-
-<body>
-<h3>Commands</h3>
-<ul>
- <li><a href="<s:url action="Login_input"/>">Sign On</a></li>
- <li><a href="<s:url action="Register"/>">Register</a></li>
-</ul>
-
-</body>
-</html>
[10/20] 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/>
[14/20] 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/develop
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>
+
[11/20] 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
[06/20] 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/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
[03/20] git commit: Merge branch 'develop' into
feature/move-jsps-under-webinf
Posted by lu...@apache.org.
Merge branch 'develop' into feature/move-jsps-under-webinf
Project: http://git-wip-us.apache.org/repos/asf/struts/repo
Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/4360a066
Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/4360a066
Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/4360a066
Branch: refs/heads/develop
Commit: 4360a06662dcdb3c08d4ba9c3f8e2679eecddad1
Parents: 6f43464 9c5177c
Author: Lukasz Lenart <lu...@apache.org>
Authored: Fri Feb 28 10:17:19 2014 +0100
Committer: Lukasz Lenart <lu...@apache.org>
Committed: Fri Feb 28 10:17:19 2014 +0100
----------------------------------------------------------------------
.../xwork2/interceptor/ParametersInterceptor.java | 8 --------
.../com/opensymphony/xwork2/ognl/OgnlValueStack.java | 4 ----
.../com/opensymphony/xwork2/ognl/PropertiesJudge.java | 7 -------
.../opensymphony/xwork2/ognl/SecurityMemberAccess.java | 13 +------------
.../opensymphony/xwork2/util/LocalizedTextUtil.java | 9 ++++++++-
.../xwork2/util/MemberAccessValueStack.java | 4 ----
6 files changed, 9 insertions(+), 36 deletions(-)
----------------------------------------------------------------------
[05/20] git commit: Moves mailreader related JSPs under WEB-INF
Posted by lu...@apache.org.
Moves mailreader 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/d07e8044
Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/d07e8044
Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/d07e8044
Branch: refs/heads/develop
Commit: d07e8044beef98222f0140adb0b4e2892b6bf166
Parents: 95b309a
Author: Lukasz Lenart <lu...@apache.org>
Authored: Sun Mar 2 21:17:30 2014 +0100
Committer: Lukasz Lenart <lu...@apache.org>
Committed: Sun Mar 2 21:17:30 2014 +0100
----------------------------------------------------------------------
.../src/main/java/mailreader-support.xml | 10 +-
.../src/main/webapp/ChangePassword.jsp | 25 ----
apps/mailreader/src/main/webapp/Error.jsp | 40 -------
apps/mailreader/src/main/webapp/Footer.jsp | 6 -
apps/mailreader/src/main/webapp/Login.jsp | 30 -----
apps/mailreader/src/main/webapp/MainMenu.jsp | 25 ----
.../mailreader/src/main/webapp/Registration.jsp | 115 -------------------
.../mailreader/src/main/webapp/Subscription.jsp | 60 ----------
.../main/webapp/WEB-INF/jsp/ChangePassword.jsp | 25 ++++
.../src/main/webapp/WEB-INF/jsp/Error.jsp | 40 +++++++
.../src/main/webapp/WEB-INF/jsp/Footer.jsp | 6 +
.../src/main/webapp/WEB-INF/jsp/Login.jsp | 30 +++++
.../src/main/webapp/WEB-INF/jsp/MainMenu.jsp | 25 ++++
.../main/webapp/WEB-INF/jsp/Registration.jsp | 115 +++++++++++++++++++
.../main/webapp/WEB-INF/jsp/Subscription.jsp | 60 ++++++++++
.../src/main/webapp/WEB-INF/jsp/Welcome.jsp | 55 +++++++++
apps/mailreader/src/main/webapp/Welcome.jsp | 55 ---------
17 files changed, 361 insertions(+), 361 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/struts/blob/d07e8044/apps/mailreader/src/main/java/mailreader-support.xml
----------------------------------------------------------------------
diff --git a/apps/mailreader/src/main/java/mailreader-support.xml b/apps/mailreader/src/main/java/mailreader-support.xml
index a699543..2438cb4 100644
--- a/apps/mailreader/src/main/java/mailreader-support.xml
+++ b/apps/mailreader/src/main/java/mailreader-support.xml
@@ -12,7 +12,7 @@
</action>
<action name="Welcome" class="mailreader2.Welcome">
- <result>/Welcome.jsp</result>
+ <result>/WEB-INF/jsp/Welcome.jsp</result>
<interceptor-ref name="guest"/>
</action>
@@ -21,7 +21,7 @@
</action>
<action name="Login_*" method="{1}" class="mailreader2.Login">
- <result name="input">/Login.jsp</result>
+ <result name="input">/WEB-INF/jsp/Login.jsp</result>
<result name="cancel" type="redirectAction">Welcome</result>
<result type="redirectAction">MainMenu</result>
<result name="expired" type="chain">ChangePassword</result>
@@ -32,7 +32,7 @@
</action>
<action name="Registration_*" method="{1}" class="mailreader2.Registration">
- <result name="input">/Registration.jsp</result>
+ <result name="input">/WEB-INF/jsp/Registration.jsp</result>
<result type="redirectAction">MainMenu</result>
<interceptor-ref name="guest"/>
</action>
@@ -41,7 +41,7 @@
<package name="subscription" namespace="/" extends="mailreader-support">
<global-results>
- <result name="input">/Subscription.jsp</result>
+ <result name="input">/WEB-INF/jsp/Subscription.jsp</result>
<result type="redirectAction">Registration_input</result>
</global-results>
@@ -56,7 +56,7 @@
<package name="wildcard" namespace="/" extends="mailreader-support">
<action name="*" class="mailreader2.MailreaderSupport">
- <result>/{1}.jsp</result>
+ <result>/WEB-INF/jsp/{1}.jsp</result>
</action>
</package>
http://git-wip-us.apache.org/repos/asf/struts/blob/d07e8044/apps/mailreader/src/main/webapp/ChangePassword.jsp
----------------------------------------------------------------------
diff --git a/apps/mailreader/src/main/webapp/ChangePassword.jsp b/apps/mailreader/src/main/webapp/ChangePassword.jsp
deleted file mode 100644
index ce543d7..0000000
--- a/apps/mailreader/src/main/webapp/ChangePassword.jsp
+++ /dev/null
@@ -1,25 +0,0 @@
-<%@ page contentType="text/html; charset=UTF-8" %>
-<%@ taglib uri="/struts-tags" prefix="s" %>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
- <title><s:text name="change.title"/></title>
- <link href="<s:url value="/css/mailreader.css"/>" rel="stylesheet"
- type="text/css"/>
-</head>
-
-<body>
-
-<p>
- <s:text name="change.message"/>
-</p>
-
-<p>
- <a href="<s:url action="Login_input"/>">
- <s:text name="change.try"/>
- </a>
-</p>
-
-</body>
-</html>
http://git-wip-us.apache.org/repos/asf/struts/blob/d07e8044/apps/mailreader/src/main/webapp/Error.jsp
----------------------------------------------------------------------
diff --git a/apps/mailreader/src/main/webapp/Error.jsp b/apps/mailreader/src/main/webapp/Error.jsp
deleted file mode 100644
index 05ab5e0..0000000
--- a/apps/mailreader/src/main/webapp/Error.jsp
+++ /dev/null
@@ -1,40 +0,0 @@
-<%@ page contentType="text/html; charset=UTF-8" %>
-<%@ taglib uri="/struts-tags" prefix="s" %>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
- <title>Unexpected Error</title>
-</head>
-
-<body>
-<h2>An unexpected error has occured</h2>
-
-<p>
- Please report this error to your system administrator
- or appropriate technical support personnel.
- Thank you for your cooperation.
-</p>
-
-<hr/>
-
-<h3>Error Message</h3>
-
-<s:actionerror />
-
-<p>
- <s:property value="%{exception.message}"/>
-</p>
-
-<hr/>
-
-<h3>Technical Details</h3>
-
-<p>
- <s:property value="%{exceptionStack}"/>
-</p>
-
-<jsp:include page="Footer.jsp"/>
-
-</body>
-</html>
http://git-wip-us.apache.org/repos/asf/struts/blob/d07e8044/apps/mailreader/src/main/webapp/Footer.jsp
----------------------------------------------------------------------
diff --git a/apps/mailreader/src/main/webapp/Footer.jsp b/apps/mailreader/src/main/webapp/Footer.jsp
deleted file mode 100644
index 56d80bb..0000000
--- a/apps/mailreader/src/main/webapp/Footer.jsp
+++ /dev/null
@@ -1,6 +0,0 @@
-<%@ taglib uri="/struts-tags" prefix="s" %>
-<hr/>
-
-<p>
- <a href="<s:url action="Welcome" includeParams="none"/>"><s:text name="index.title"/></a>
-</p>
http://git-wip-us.apache.org/repos/asf/struts/blob/d07e8044/apps/mailreader/src/main/webapp/Login.jsp
----------------------------------------------------------------------
diff --git a/apps/mailreader/src/main/webapp/Login.jsp b/apps/mailreader/src/main/webapp/Login.jsp
deleted file mode 100644
index 2994793..0000000
--- a/apps/mailreader/src/main/webapp/Login.jsp
+++ /dev/null
@@ -1,30 +0,0 @@
-<%@ page contentType="text/html; charset=UTF-8" %>
-<%@ taglib uri="/struts-tags" prefix="s" %>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
- <title><s:text name="login.title"/></title>
- <link href="<s:url value="/css/mailreader.css"/>" rel="stylesheet"
- type="text/css"/>
-</head>
-
-<body onLoad="self.focus();document.Login.username.focus()">
-
-<s:actionerror />
-<s:form action="Login" validate="true">
- <s:textfield key="username" />
-
- <s:password key="password" showPassword="true"/>
-
- <s:submit key="button.logon"/>
-
- <s:reset key="button.reset"/>
-
- <s:submit action="Login_cancel" key="button.cancel"
- onclick="form.onsubmit=null"/>
-</s:form>
-
-<jsp:include page="Footer.jsp"/>
-</body>
-</html>
http://git-wip-us.apache.org/repos/asf/struts/blob/d07e8044/apps/mailreader/src/main/webapp/MainMenu.jsp
----------------------------------------------------------------------
diff --git a/apps/mailreader/src/main/webapp/MainMenu.jsp b/apps/mailreader/src/main/webapp/MainMenu.jsp
deleted file mode 100644
index bf2f044..0000000
--- a/apps/mailreader/src/main/webapp/MainMenu.jsp
+++ /dev/null
@@ -1,25 +0,0 @@
-<%@ page contentType="text/html; charset=UTF-8" %>
-<%@ taglib uri="/struts-tags" prefix="s" %>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
- <title><s:text name="mainMenu.title"/></title>
- <link href="<s:url value="/css/mailreader.css"/>" rel="stylesheet"
- type="text/css"/>
-</head>
-
-<body>
-<h3><s:text name="mainMenu.heading"/> <s:property
- value="user.fullName"/></h3>
-<ul>
- <li><a href="<s:url action="Registration_input" />">
- <s:text name="mainMenu.registration"/>
- </a>
- </li>
- <li><a href="<s:url action="Logout"/>">
- <s:text name="mainMenu.logout"/>
- </a>
-</ul>
-</body>
-</html>
http://git-wip-us.apache.org/repos/asf/struts/blob/d07e8044/apps/mailreader/src/main/webapp/Registration.jsp
----------------------------------------------------------------------
diff --git a/apps/mailreader/src/main/webapp/Registration.jsp b/apps/mailreader/src/main/webapp/Registration.jsp
deleted file mode 100644
index 1d3cf8d..0000000
--- a/apps/mailreader/src/main/webapp/Registration.jsp
+++ /dev/null
@@ -1,115 +0,0 @@
-<%@ page contentType="text/html; charset=UTF-8" %>
-<%@ taglib uri="/struts-tags" prefix="s" %>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
- <s:if test="task=='Create'">
- <title><s:text name="registration.title.create"/></title>
- </s:if>
- <s:if test="task=='Edit'">
- <title><s:text name="registration.title.edit"/></title>
- </s:if>
- <link href="<s:url value="/css/mailreader.css"/>" rel="stylesheet"
- type="text/css"/>
-</head>
-
-<body onLoad="self.focus();document.Registration_save_username.focus()">
-
-<s:actionerror/>
-<s:form action="Registration_save" validate="false">
- <s:token />
- <s:hidden name="task"/>
- <s:if test="task == 'Create'">
- <s:textfield key="username"/>
- </s:if>
- <s:else>
- <s:label key="username"/>
- <s:hidden name="username"/>
- </s:else>
-
- <s:password key="password" showPassword="true"/>
- <s:password key="password2"/>
- <s:textfield key="user.fullName"/>
- <s:textfield key="user.fromAddress"/>
- <s:textfield key="user.replyToAddress"/>
-
- <s:if test="task == 'Create'">
- <s:submit key="button.save" action="Registration_save"/>
- <s:reset key="button.reset"/>
- <s:submit action="Welcome" key="button.cancel"
- onclick="form.onsubmit=null"/>
- </s:if>
- <s:else>
- <s:submit key="button.save" action="Registration"/>
- <s:reset key="button.reset"/>
- <s:submit action="MainMenu" key="button.cancel"
- onclick="form.onsubmit=null"/>
- </s:else>
-
-</s:form>
-
-<s:if test="task == 'Edit'">
- <div align="center">
- <h3><s:text name="heading.subscriptions"/></h3>
- </div>
-
- <table border="1" width="100%">
-
- <tr>
- <th align="center" width="30%">
- <s:text name="heading.host"/>
- </th>
- <th align="center" width="25%">
- <s:text name="heading.user"/>
- </th>
- <th align="center" width="10%">
- <s:text name="heading.type"/>
- </th>
- <th align="center" width="10%">
- <s:text name="heading.autoConnect"/>
- </th>
- <th align="center" width="15%">
- <s:text name="heading.action"/>
- </th>
- </tr>
-
- <s:iterator value="user.subscriptions">
- <tr>
- <td align="left">
- <s:property value="host"/>
- </td>
- <td align="left">
- <s:property value="username"/>
- </td>
- <td align="center">
- <s:property value="type"/>
- </td>
- <td align="center">
- <s:property value="autoConnect"/>
- </td>
- <td align="center">
-
- <a href="<s:url action="Subscription_delete"><s:param name="host" value="host"/></s:url>">
- <s:text name="registration.deleteSubscription"/>
- </a>
-
- <a href="<s:url action="Subscription_edit"><s:param name="host" value="host"/></s:url>">
- <s:text name="registration.editSubscription"/>
- </a>
-
- </td>
- </tr>
- </s:iterator>
-
- </table>
-
- <a href="<s:url action="Subscription_input"/>"><s:text
- name="registration.addSubscription"/></a>
-
-</s:if>
-
-<jsp:include page="Footer.jsp"/>
-
-</body>
-</html>
http://git-wip-us.apache.org/repos/asf/struts/blob/d07e8044/apps/mailreader/src/main/webapp/Subscription.jsp
----------------------------------------------------------------------
diff --git a/apps/mailreader/src/main/webapp/Subscription.jsp b/apps/mailreader/src/main/webapp/Subscription.jsp
deleted file mode 100644
index 60cda4a..0000000
--- a/apps/mailreader/src/main/webapp/Subscription.jsp
+++ /dev/null
@@ -1,60 +0,0 @@
-<%@ page contentType="text/html; charset=UTF-8" %>
-<%@ taglib uri="/struts-tags" prefix="s" %>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
- <s:if test="task=='Create'">
- <title><s:text name="subscription.title.create"/></title>
- </s:if>
- <s:if test="task=='Edit'">
- <title><s:text name="subscription.title.edit"/></title>
- </s:if>
- <s:if test="task=='Delete'">
- <title><s:text name="subscription.title.delete"/></title>
- </s:if>
- <link href="<s:url value="/css/mailreader.css" includeParams="none"/>" rel="stylesheet"
- type="text/css"/>
-</head>
-
-<body onLoad="self.focus();document.Subscription.username.focus()">
-
-<s:actionerror/>
-<s:form action="Subscription_save" validate="true">
- <s:token />
- <s:hidden name="task"/>
- <s:label key="username" name="user.username"/>
-
- <s:if test="task == 'Create'">
- <s:textfield key="host"/>
- </s:if>
- <s:else>
- <s:label key="host"/>
- <s:hidden name="host"/>
- </s:else>
-
- <s:if test="task == 'Delete'">
- <s:label key="subscription.username"/>
- <s:label key="subscription.password"/>
- <s:label key="subscription.type"/>
- <s:label key="subscription.autoConnect"/>
- <s:submit key="button.confirm"/>
- </s:if>
- <s:else>
- <s:textfield key="subscription.username"/>
- <s:textfield key="subscription.password"/>
- <s:select key="subscription.type" list="types"/>
- <s:checkbox key="subscription.autoConnect"/>
- <s:submit key="button.save"/>
- <s:reset key="button.reset"/>
- </s:else>
-
- <s:submit action="Registration_input"
- key="button.cancel"
- onclick="form.onsubmit=null"/>
-</s:form>
-
-<jsp:include page="Footer.jsp"/>
-
-</body>
-</html>
http://git-wip-us.apache.org/repos/asf/struts/blob/d07e8044/apps/mailreader/src/main/webapp/WEB-INF/jsp/ChangePassword.jsp
----------------------------------------------------------------------
diff --git a/apps/mailreader/src/main/webapp/WEB-INF/jsp/ChangePassword.jsp b/apps/mailreader/src/main/webapp/WEB-INF/jsp/ChangePassword.jsp
new file mode 100644
index 0000000..ce543d7
--- /dev/null
+++ b/apps/mailreader/src/main/webapp/WEB-INF/jsp/ChangePassword.jsp
@@ -0,0 +1,25 @@
+<%@ page contentType="text/html; charset=UTF-8" %>
+<%@ taglib uri="/struts-tags" prefix="s" %>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title><s:text name="change.title"/></title>
+ <link href="<s:url value="/css/mailreader.css"/>" rel="stylesheet"
+ type="text/css"/>
+</head>
+
+<body>
+
+<p>
+ <s:text name="change.message"/>
+</p>
+
+<p>
+ <a href="<s:url action="Login_input"/>">
+ <s:text name="change.try"/>
+ </a>
+</p>
+
+</body>
+</html>
http://git-wip-us.apache.org/repos/asf/struts/blob/d07e8044/apps/mailreader/src/main/webapp/WEB-INF/jsp/Error.jsp
----------------------------------------------------------------------
diff --git a/apps/mailreader/src/main/webapp/WEB-INF/jsp/Error.jsp b/apps/mailreader/src/main/webapp/WEB-INF/jsp/Error.jsp
new file mode 100644
index 0000000..05ab5e0
--- /dev/null
+++ b/apps/mailreader/src/main/webapp/WEB-INF/jsp/Error.jsp
@@ -0,0 +1,40 @@
+<%@ page contentType="text/html; charset=UTF-8" %>
+<%@ taglib uri="/struts-tags" prefix="s" %>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>Unexpected Error</title>
+</head>
+
+<body>
+<h2>An unexpected error has occured</h2>
+
+<p>
+ Please report this error to your system administrator
+ or appropriate technical support personnel.
+ Thank you for your cooperation.
+</p>
+
+<hr/>
+
+<h3>Error Message</h3>
+
+<s:actionerror />
+
+<p>
+ <s:property value="%{exception.message}"/>
+</p>
+
+<hr/>
+
+<h3>Technical Details</h3>
+
+<p>
+ <s:property value="%{exceptionStack}"/>
+</p>
+
+<jsp:include page="Footer.jsp"/>
+
+</body>
+</html>
http://git-wip-us.apache.org/repos/asf/struts/blob/d07e8044/apps/mailreader/src/main/webapp/WEB-INF/jsp/Footer.jsp
----------------------------------------------------------------------
diff --git a/apps/mailreader/src/main/webapp/WEB-INF/jsp/Footer.jsp b/apps/mailreader/src/main/webapp/WEB-INF/jsp/Footer.jsp
new file mode 100644
index 0000000..56d80bb
--- /dev/null
+++ b/apps/mailreader/src/main/webapp/WEB-INF/jsp/Footer.jsp
@@ -0,0 +1,6 @@
+<%@ taglib uri="/struts-tags" prefix="s" %>
+<hr/>
+
+<p>
+ <a href="<s:url action="Welcome" includeParams="none"/>"><s:text name="index.title"/></a>
+</p>
http://git-wip-us.apache.org/repos/asf/struts/blob/d07e8044/apps/mailreader/src/main/webapp/WEB-INF/jsp/Login.jsp
----------------------------------------------------------------------
diff --git a/apps/mailreader/src/main/webapp/WEB-INF/jsp/Login.jsp b/apps/mailreader/src/main/webapp/WEB-INF/jsp/Login.jsp
new file mode 100644
index 0000000..2994793
--- /dev/null
+++ b/apps/mailreader/src/main/webapp/WEB-INF/jsp/Login.jsp
@@ -0,0 +1,30 @@
+<%@ page contentType="text/html; charset=UTF-8" %>
+<%@ taglib uri="/struts-tags" prefix="s" %>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title><s:text name="login.title"/></title>
+ <link href="<s:url value="/css/mailreader.css"/>" rel="stylesheet"
+ type="text/css"/>
+</head>
+
+<body onLoad="self.focus();document.Login.username.focus()">
+
+<s:actionerror />
+<s:form action="Login" validate="true">
+ <s:textfield key="username" />
+
+ <s:password key="password" showPassword="true"/>
+
+ <s:submit key="button.logon"/>
+
+ <s:reset key="button.reset"/>
+
+ <s:submit action="Login_cancel" key="button.cancel"
+ onclick="form.onsubmit=null"/>
+</s:form>
+
+<jsp:include page="Footer.jsp"/>
+</body>
+</html>
http://git-wip-us.apache.org/repos/asf/struts/blob/d07e8044/apps/mailreader/src/main/webapp/WEB-INF/jsp/MainMenu.jsp
----------------------------------------------------------------------
diff --git a/apps/mailreader/src/main/webapp/WEB-INF/jsp/MainMenu.jsp b/apps/mailreader/src/main/webapp/WEB-INF/jsp/MainMenu.jsp
new file mode 100644
index 0000000..bf2f044
--- /dev/null
+++ b/apps/mailreader/src/main/webapp/WEB-INF/jsp/MainMenu.jsp
@@ -0,0 +1,25 @@
+<%@ page contentType="text/html; charset=UTF-8" %>
+<%@ taglib uri="/struts-tags" prefix="s" %>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title><s:text name="mainMenu.title"/></title>
+ <link href="<s:url value="/css/mailreader.css"/>" rel="stylesheet"
+ type="text/css"/>
+</head>
+
+<body>
+<h3><s:text name="mainMenu.heading"/> <s:property
+ value="user.fullName"/></h3>
+<ul>
+ <li><a href="<s:url action="Registration_input" />">
+ <s:text name="mainMenu.registration"/>
+ </a>
+ </li>
+ <li><a href="<s:url action="Logout"/>">
+ <s:text name="mainMenu.logout"/>
+ </a>
+</ul>
+</body>
+</html>
http://git-wip-us.apache.org/repos/asf/struts/blob/d07e8044/apps/mailreader/src/main/webapp/WEB-INF/jsp/Registration.jsp
----------------------------------------------------------------------
diff --git a/apps/mailreader/src/main/webapp/WEB-INF/jsp/Registration.jsp b/apps/mailreader/src/main/webapp/WEB-INF/jsp/Registration.jsp
new file mode 100644
index 0000000..1d3cf8d
--- /dev/null
+++ b/apps/mailreader/src/main/webapp/WEB-INF/jsp/Registration.jsp
@@ -0,0 +1,115 @@
+<%@ page contentType="text/html; charset=UTF-8" %>
+<%@ taglib uri="/struts-tags" prefix="s" %>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <s:if test="task=='Create'">
+ <title><s:text name="registration.title.create"/></title>
+ </s:if>
+ <s:if test="task=='Edit'">
+ <title><s:text name="registration.title.edit"/></title>
+ </s:if>
+ <link href="<s:url value="/css/mailreader.css"/>" rel="stylesheet"
+ type="text/css"/>
+</head>
+
+<body onLoad="self.focus();document.Registration_save_username.focus()">
+
+<s:actionerror/>
+<s:form action="Registration_save" validate="false">
+ <s:token />
+ <s:hidden name="task"/>
+ <s:if test="task == 'Create'">
+ <s:textfield key="username"/>
+ </s:if>
+ <s:else>
+ <s:label key="username"/>
+ <s:hidden name="username"/>
+ </s:else>
+
+ <s:password key="password" showPassword="true"/>
+ <s:password key="password2"/>
+ <s:textfield key="user.fullName"/>
+ <s:textfield key="user.fromAddress"/>
+ <s:textfield key="user.replyToAddress"/>
+
+ <s:if test="task == 'Create'">
+ <s:submit key="button.save" action="Registration_save"/>
+ <s:reset key="button.reset"/>
+ <s:submit action="Welcome" key="button.cancel"
+ onclick="form.onsubmit=null"/>
+ </s:if>
+ <s:else>
+ <s:submit key="button.save" action="Registration"/>
+ <s:reset key="button.reset"/>
+ <s:submit action="MainMenu" key="button.cancel"
+ onclick="form.onsubmit=null"/>
+ </s:else>
+
+</s:form>
+
+<s:if test="task == 'Edit'">
+ <div align="center">
+ <h3><s:text name="heading.subscriptions"/></h3>
+ </div>
+
+ <table border="1" width="100%">
+
+ <tr>
+ <th align="center" width="30%">
+ <s:text name="heading.host"/>
+ </th>
+ <th align="center" width="25%">
+ <s:text name="heading.user"/>
+ </th>
+ <th align="center" width="10%">
+ <s:text name="heading.type"/>
+ </th>
+ <th align="center" width="10%">
+ <s:text name="heading.autoConnect"/>
+ </th>
+ <th align="center" width="15%">
+ <s:text name="heading.action"/>
+ </th>
+ </tr>
+
+ <s:iterator value="user.subscriptions">
+ <tr>
+ <td align="left">
+ <s:property value="host"/>
+ </td>
+ <td align="left">
+ <s:property value="username"/>
+ </td>
+ <td align="center">
+ <s:property value="type"/>
+ </td>
+ <td align="center">
+ <s:property value="autoConnect"/>
+ </td>
+ <td align="center">
+
+ <a href="<s:url action="Subscription_delete"><s:param name="host" value="host"/></s:url>">
+ <s:text name="registration.deleteSubscription"/>
+ </a>
+
+ <a href="<s:url action="Subscription_edit"><s:param name="host" value="host"/></s:url>">
+ <s:text name="registration.editSubscription"/>
+ </a>
+
+ </td>
+ </tr>
+ </s:iterator>
+
+ </table>
+
+ <a href="<s:url action="Subscription_input"/>"><s:text
+ name="registration.addSubscription"/></a>
+
+</s:if>
+
+<jsp:include page="Footer.jsp"/>
+
+</body>
+</html>
http://git-wip-us.apache.org/repos/asf/struts/blob/d07e8044/apps/mailreader/src/main/webapp/WEB-INF/jsp/Subscription.jsp
----------------------------------------------------------------------
diff --git a/apps/mailreader/src/main/webapp/WEB-INF/jsp/Subscription.jsp b/apps/mailreader/src/main/webapp/WEB-INF/jsp/Subscription.jsp
new file mode 100644
index 0000000..60cda4a
--- /dev/null
+++ b/apps/mailreader/src/main/webapp/WEB-INF/jsp/Subscription.jsp
@@ -0,0 +1,60 @@
+<%@ page contentType="text/html; charset=UTF-8" %>
+<%@ taglib uri="/struts-tags" prefix="s" %>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <s:if test="task=='Create'">
+ <title><s:text name="subscription.title.create"/></title>
+ </s:if>
+ <s:if test="task=='Edit'">
+ <title><s:text name="subscription.title.edit"/></title>
+ </s:if>
+ <s:if test="task=='Delete'">
+ <title><s:text name="subscription.title.delete"/></title>
+ </s:if>
+ <link href="<s:url value="/css/mailreader.css" includeParams="none"/>" rel="stylesheet"
+ type="text/css"/>
+</head>
+
+<body onLoad="self.focus();document.Subscription.username.focus()">
+
+<s:actionerror/>
+<s:form action="Subscription_save" validate="true">
+ <s:token />
+ <s:hidden name="task"/>
+ <s:label key="username" name="user.username"/>
+
+ <s:if test="task == 'Create'">
+ <s:textfield key="host"/>
+ </s:if>
+ <s:else>
+ <s:label key="host"/>
+ <s:hidden name="host"/>
+ </s:else>
+
+ <s:if test="task == 'Delete'">
+ <s:label key="subscription.username"/>
+ <s:label key="subscription.password"/>
+ <s:label key="subscription.type"/>
+ <s:label key="subscription.autoConnect"/>
+ <s:submit key="button.confirm"/>
+ </s:if>
+ <s:else>
+ <s:textfield key="subscription.username"/>
+ <s:textfield key="subscription.password"/>
+ <s:select key="subscription.type" list="types"/>
+ <s:checkbox key="subscription.autoConnect"/>
+ <s:submit key="button.save"/>
+ <s:reset key="button.reset"/>
+ </s:else>
+
+ <s:submit action="Registration_input"
+ key="button.cancel"
+ onclick="form.onsubmit=null"/>
+</s:form>
+
+<jsp:include page="Footer.jsp"/>
+
+</body>
+</html>
http://git-wip-us.apache.org/repos/asf/struts/blob/d07e8044/apps/mailreader/src/main/webapp/WEB-INF/jsp/Welcome.jsp
----------------------------------------------------------------------
diff --git a/apps/mailreader/src/main/webapp/WEB-INF/jsp/Welcome.jsp b/apps/mailreader/src/main/webapp/WEB-INF/jsp/Welcome.jsp
new file mode 100644
index 0000000..0ce3e54
--- /dev/null
+++ b/apps/mailreader/src/main/webapp/WEB-INF/jsp/Welcome.jsp
@@ -0,0 +1,55 @@
+<%@ page contentType="text/html; charset=UTF-8" %>
+<%@ taglib uri="/struts-tags" prefix="s" %>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+ <title><s:text name="index.title"/></title>
+ <link href="<s:url value="/css/mailreader.css"/>" rel="stylesheet"
+ type="text/css"/>
+</head>
+
+<body>
+<h3><s:text name="index.heading"/></h3>
+
+<ul>
+ <li><a href="<s:url action="Registration_input"/>"><s:text
+ name="index.registration"/></a></li>
+ <li><a href="<s:url action="Login_input"/>"><s:text
+ name="index.login"/></a></li>
+</ul>
+
+<h3>Language Options</h3>
+<ul>
+ <li>
+ <s:url id="en" action="Welcome">
+ <s:param name="request_locale">en</s:param>
+ </s:url>
+ <s:a href="%{en}">English</s:a>
+ </li>
+ <li>
+ <s:url id="ja" action="Welcome">
+ <s:param name="request_locale">ja</s:param>
+ </s:url>
+ <s:a href="%{ja}">Japanese</s:a>
+ </li>
+ <li>
+ <s:url id="ru" action="Welcome">
+ <s:param name="request_locale">ru</s:param>
+ </s:url>
+ <s:a href="%{ru}">Russian</s:a>
+ </li>
+</ul>
+
+<hr/>
+
+<p><s:i18n name="alternate"><a href="http://struts.apache.org/">
+ <img src="<s:text name="struts.logo.path"/>"
+ alt="<s:text name="struts.logo.alt"/>" border="0px"/>
+</a>
+</s:i18n></p>
+
+</body>
+</html>
+
http://git-wip-us.apache.org/repos/asf/struts/blob/d07e8044/apps/mailreader/src/main/webapp/Welcome.jsp
----------------------------------------------------------------------
diff --git a/apps/mailreader/src/main/webapp/Welcome.jsp b/apps/mailreader/src/main/webapp/Welcome.jsp
deleted file mode 100644
index 0ce3e54..0000000
--- a/apps/mailreader/src/main/webapp/Welcome.jsp
+++ /dev/null
@@ -1,55 +0,0 @@
-<%@ page contentType="text/html; charset=UTF-8" %>
-<%@ taglib uri="/struts-tags" prefix="s" %>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
- <title><s:text name="index.title"/></title>
- <link href="<s:url value="/css/mailreader.css"/>" rel="stylesheet"
- type="text/css"/>
-</head>
-
-<body>
-<h3><s:text name="index.heading"/></h3>
-
-<ul>
- <li><a href="<s:url action="Registration_input"/>"><s:text
- name="index.registration"/></a></li>
- <li><a href="<s:url action="Login_input"/>"><s:text
- name="index.login"/></a></li>
-</ul>
-
-<h3>Language Options</h3>
-<ul>
- <li>
- <s:url id="en" action="Welcome">
- <s:param name="request_locale">en</s:param>
- </s:url>
- <s:a href="%{en}">English</s:a>
- </li>
- <li>
- <s:url id="ja" action="Welcome">
- <s:param name="request_locale">ja</s:param>
- </s:url>
- <s:a href="%{ja}">Japanese</s:a>
- </li>
- <li>
- <s:url id="ru" action="Welcome">
- <s:param name="request_locale">ru</s:param>
- </s:url>
- <s:a href="%{ru}">Russian</s:a>
- </li>
-</ul>
-
-<hr/>
-
-<p><s:i18n name="alternate"><a href="http://struts.apache.org/">
- <img src="<s:text name="struts.logo.path"/>"
- alt="<s:text name="struts.logo.alt"/>" border="0px"/>
-</a>
-</s:i18n></p>
-
-</body>
-</html>
-
[07/20] 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>
[08/20] 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
[16/20] git commit: Updates configuration and replaces jsp with action
Posted by lu...@apache.org.
Updates configuration and replaces jsp with action
Project: http://git-wip-us.apache.org/repos/asf/struts/repo
Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/d0c90dda
Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/d0c90dda
Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/d0c90dda
Branch: refs/heads/develop
Commit: d0c90dda952ccd4539c6ecd912bce7a0f97aa014
Parents: c0a312a
Author: Lukasz Lenart <lu...@apache.org>
Authored: Mon Mar 3 21:52:54 2014 +0100
Committer: Lukasz Lenart <lu...@apache.org>
Committed: Mon Mar 3 21:52:54 2014 +0100
----------------------------------------------------------------------
.../showcase/src/main/resources/struts-ajax.xml | 27 +++++++++++
.../src/main/resources/struts-conversion.xml | 4 ++
.../src/main/resources/struts-filedownload.xml | 4 ++
.../src/main/resources/struts-integration.xml | 2 +-
.../src/main/resources/struts-interactive.xml | 5 ++
apps/showcase/src/main/resources/struts-jsf.xml | 4 ++
.../src/main/resources/struts-tags-non-ui.xml | 3 ++
.../src/main/resources/struts-tags-ui.xml | 16 +++++++
.../src/main/resources/struts-validation.xml | 7 +++
.../showcase/src/main/resources/struts-wait.xml | 12 +++++
apps/showcase/src/main/resources/struts.xml | 23 +++++-----
.../webapp/WEB-INF/ajax/autocompleter/index.jsp | 28 ++++++++----
.../main/webapp/WEB-INF/ajax/commonInclude.jsp | 2 +-
.../src/main/webapp/WEB-INF/ajax/footer.jsp | 2 +-
.../src/main/webapp/WEB-INF/ajax/index.jsp | 24 ----------
.../customTheme/ftlCustomTemplate.ftl | 7 ---
.../customTheme/jspCustomTemplate.jsp | 8 ----
.../src/main/webapp/WEB-INF/decorators/main.jsp | 34 +++++++-------
.../main/webapp/WEB-INF/empmanager/index.jsp | 1 -
.../src/main/webapp/WEB-INF/person/index.jsp | 1 -
.../WEB-INF/template/xhtml/mytemplate.jsp | 9 ----
apps/showcase/src/main/webapp/WEB-INF/tiles.xml | 18 ++++----
.../main/webapp/WEB-INF/token/doublePost.jsp | 2 +-
.../src/main/webapp/WEB-INF/token/index.jsp | 48 --------------------
.../main/webapp/WEB-INF/token/transferDone.jsp | 2 +-
.../main/webapp/WEB-INF/validation/index.jsp | 2 +-
.../src/main/webapp/WEB-INF/wait/complete.jsp | 2 +-
.../src/main/webapp/WEB-INF/wait/index.jsp | 34 --------------
.../src/main/webapp/WEB-INF/wait/wait.jsp | 2 +-
apps/showcase/src/main/webapp/ajax/index.html | 24 ++++++++++
.../customTheme/ftlCustomTemplate.ftl | 7 +++
.../customTheme/jspCustomTemplate.jsp | 8 ++++
apps/showcase/src/main/webapp/person/index.html | 10 ++++
apps/showcase/src/main/webapp/skill/index.html | 10 ++++
.../main/webapp/template/xhtml/mytemplate.jsp | 9 ++++
apps/showcase/src/main/webapp/token/index.html | 47 +++++++++++++++++++
apps/showcase/src/main/webapp/wait/index.html | 33 ++++++++++++++
37 files changed, 294 insertions(+), 187 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/struts/blob/d0c90dda/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 43d0876..a5ce83c 100644
--- a/apps/showcase/src/main/resources/struts-ajax.xml
+++ b/apps/showcase/src/main/resources/struts-ajax.xml
@@ -54,6 +54,33 @@
<result>/WEB-INF/ajax/tabbedpanel/example5Ok.jsp</result>
</action>
</package>
+
+ <package name="ajax-examples" namespace="/ajax" extends="struts-default">
+ <action name="bind">
+ <result>/WEB-INF/ajax/bind/index.jsp</result>
+ </action>
+ <action name="autocompleter">
+ <result>/WEB-INF/ajax/autocompleter/index.jsp</result>
+ </action>
+ <action name="remotebutton">
+ <result>/WEB-INF/ajax/remotebutton/index.jsp</result>
+ </action>
+ <action name="remotediv">
+ <result>/WEB-INF/ajax/remotediv/index.jsp</result>
+ </action>
+ <action name="remotelink">
+ <result>/WEB-INF/ajax/remotelink/index.jsp</result>
+ </action>
+ <action name="tabbedpanel">
+ <result>/WEB-INF/ajax/tabbedpanel/index.jsp</result>
+ </action>
+ <action name="remoteforms">
+ <result>/WEB-INF/ajax/remoteforms/index.jsp</result>
+ </action>
+ <action name="widgets">
+ <result>/WEB-INF/ajax/widgets/index.jsp</result>
+ </action>
+ </package>
<package name="ajaxNoDecorate" namespace="/nodecorate" extends="json-default">
<!-- example 4 -->
http://git-wip-us.apache.org/repos/asf/struts/blob/d0c90dda/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 27dd687..cfbac4a 100644
--- a/apps/showcase/src/main/resources/struts-conversion.xml
+++ b/apps/showcase/src/main/resources/struts-conversion.xml
@@ -6,6 +6,10 @@
<struts>
<package name="conversion" namespace="/conversion" extends="struts-default">
+ <action name="index">
+ <result>/WEB-INF/conversion/index.jsp</result>
+ </action>
+
<!-- Example populating a List inside an Action -->
<action name="enterPersonsInfo" method="input"
class="org.apache.struts2.showcase.conversion.PersonAction">
http://git-wip-us.apache.org/repos/asf/struts/blob/d0c90dda/apps/showcase/src/main/resources/struts-filedownload.xml
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/resources/struts-filedownload.xml b/apps/showcase/src/main/resources/struts-filedownload.xml
index a647e23..f05b4a4 100644
--- a/apps/showcase/src/main/resources/struts-filedownload.xml
+++ b/apps/showcase/src/main/resources/struts-filedownload.xml
@@ -8,6 +8,10 @@
<default-action-ref name="download"/>
+ <action name="index">
+ <result>/WEB-INF/filedownload/index.jsp</result>
+ </action>
+
<action name="download" class="org.apache.struts2.showcase.filedownload.FileDownloadAction">
<param name="inputPath">/images/struts.gif</param>
<result name="success" type="stream">
http://git-wip-us.apache.org/repos/asf/struts/blob/d0c90dda/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 d251f72..ffff4ac 100644
--- a/apps/showcase/src/main/resources/struts-integration.xml
+++ b/apps/showcase/src/main/resources/struts-integration.xml
@@ -32,7 +32,7 @@
<!-- Display entry page that uses Model-Driven technique -->
<action name="editGangster" class="org.apache.struts2.s1.Struts1Action">
<param name="className">org.apache.struts2.showcase.integration.EditGangsterAction</param>
- <result>modelDriven.jsp</result>
+ <result>/WEB-INF/integration/modelDriven.jsp</result>
</action>
<!-- Display the result page whose content is populated using the Model-Driven technique -->
http://git-wip-us.apache.org/repos/asf/struts/blob/d0c90dda/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 424aabb..24b28b7 100644
--- a/apps/showcase/src/main/resources/struts-interactive.xml
+++ b/apps/showcase/src/main/resources/struts-interactive.xml
@@ -4,6 +4,11 @@
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
+ <package name="interactive" namespace="/interactive" extends="struts-default">
+ <action name="index">
+ <result>/WEB-INF/interactive/index.jsp</result>
+ </action>
+ </package>
<package name="ognl" namespace="/nodecorate" extends="struts-default">
<action name="jspEval" class="org.apache.struts2.showcase.action.JSPEvalAction">
<interceptor-ref name="params"/>
http://git-wip-us.apache.org/repos/asf/struts/blob/d0c90dda/apps/showcase/src/main/resources/struts-jsf.xml
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/resources/struts-jsf.xml b/apps/showcase/src/main/resources/struts-jsf.xml
index 431c701..baa458a 100644
--- a/apps/showcase/src/main/resources/struts-jsf.xml
+++ b/apps/showcase/src/main/resources/struts-jsf.xml
@@ -20,6 +20,10 @@
<default-interceptor-ref name="jsfFullStack"/>
+ <action name="index">
+ <result>/WEB-INF/jsf/index.jsp</result>
+ </action>
+
</package>
<package name="jsf.employee" extends="jsf" namespace="/jsf/employee">
http://git-wip-us.apache.org/repos/asf/struts/blob/d0c90dda/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 c296fd2..9722b52 100644
--- a/apps/showcase/src/main/resources/struts-tags-non-ui.xml
+++ b/apps/showcase/src/main/resources/struts-tags-non-ui.xml
@@ -128,6 +128,9 @@
<!-- === Package for Debug Tag === -->
<!-- ========================================== -->
<package name="debugTagPackage" extends="struts-default" namespace="/tags/non-ui">
+ <action name="date">
+ <result>/WEB-INF/tags/non-ui/date.jsp</result>
+ </action>
<action name="debugTagDemo">
<result>/WEB-INF/tags/non-ui/debug.jsp</result>
</action>
http://git-wip-us.apache.org/repos/asf/struts/blob/d0c90dda/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 563fbc1..cc779e5 100644
--- a/apps/showcase/src/main/resources/struts-tags-ui.xml
+++ b/apps/showcase/src/main/resources/struts-tags-ui.xml
@@ -46,10 +46,18 @@
<!-- END SNIPPET: treeExampleDynamicXWorkXml -->
+ <action name="treeExampleStatic">
+ <result>/WEB-INF/tags/ui/treeExampleStatic.jsp</result>
+ </action>
+
<action name="showDynamicAjaxTreeAction">
<result>/WEB-INF/tags/ui/treeExampleAjaxDynamic.jsp</result>
</action>
+ <action name="componentTagExample">
+ <result>/WEB-INF/tags/ui/componentTagExample.jsp</result>
+ </action>
+
<action name="showComponentTagExampleCode">
<result type="plainText">/WEB-INF/tags/ui/componentTagExample.jsp</result>
</action>
@@ -58,6 +66,14 @@
<result>/WEB-INF/tags/ui/actionTagExampleCalled.jsp</result>
<result name="input">/WEB-INF/tags/ui/actionTagExampleCalling.jsp</result>
</action>
+
+ <action name="datepicker">
+ <result>/WEB-INF/tags/ui/datepicker/index.jsp</result>
+ </action>
+
+ <action name="timepicker">
+ <result>/WEB-INF/tags/ui/timepicker/index.jsp</result>
+ </action>
</package>
<!-- START SNIPPET: treeExampleXWorkXml -->
http://git-wip-us.apache.org/repos/asf/struts/blob/d0c90dda/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 778a210..ee40dc9 100755
--- a/apps/showcase/src/main/resources/struts-validation.xml
+++ b/apps/showcase/src/main/resources/struts-validation.xml
@@ -5,6 +5,10 @@
<struts>
<package name="validation" extends="json-default" namespace="/validation">
+ <action name="index">
+ <result>/WEB-INF/validation/index.jsp</result>
+ </action>
+
<action name="quizBasic" class="org.apache.struts2.showcase.validation.QuizAction">
<result name="input">quiz-basic.jsp</result>
<result>quiz-success.jsp</result>
@@ -111,6 +115,9 @@
</interceptor-ref>
<result>/WEB-INF/validation/storeErrorsAcrossRequestExample.jsp</result>
</action>
+ <action name="storeErrorsAcrossRequestExample">
+ <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>
http://git-wip-us.apache.org/repos/asf/struts/blob/d0c90dda/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 8ea2911..0e09f49 100644
--- a/apps/showcase/src/main/resources/struts-wait.xml
+++ b/apps/showcase/src/main/resources/struts-wait.xml
@@ -6,6 +6,18 @@
<struts>
<package name="wait" extends="struts-default" namespace="/wait">
+ <action name="example1">
+ <result>/WEB-INF/wait/example1.jsp</result>
+ </action>
+
+ <action name="example2">
+ <result>/WEB-INF/wait/example2.jsp</result>
+ </action>
+
+ <action name="example3">
+ <result>/WEB-INF/wait/example3.jsp</result>
+ </action>
+
<action name="longProcess1" class="org.apache.struts2.showcase.wait.LongProcessAction">
<interceptor-ref name="defaultStack"/>
<interceptor-ref name="execAndWait"/>
http://git-wip-us.apache.org/repos/asf/struts/blob/d0c90dda/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 74c59c6..2df1d0f 100644
--- a/apps/showcase/src/main/resources/struts.xml
+++ b/apps/showcase/src/main/resources/struts.xml
@@ -9,13 +9,14 @@
<!-- Some or all of these can be flipped to true for debugging -->
<constant name="struts.i18n.reload" value="false" />
+ <constant name="struts.enable.DynamicMethodInvocation" value="true" />
<constant name="struts.devMode" value="false" />
<constant name="struts.configuration.xml.reload" value="false" />
<constant name="struts.custom.i18n.resources" value="globalMessages" />
<constant name="struts.action.extension" value="action,," />
<constant name="struts.convention.package.locators.basePackage" value="org.apache.struts2.showcase.person" />
- <constant name="struts.convention.result.path" value="/" />
+ <constant name="struts.convention.result.path" value="/WEB-INF" />
<!-- Necessary for Showcase because default includes org.apache.struts2.* -->
<constant name="struts.convention.exclude.packages" value="org.apache.struts.*,org.springframework.web.struts.*,org.springframework.web.struts2.*,org.hibernate.*"/>
@@ -75,11 +76,11 @@
<default-action-ref name="showcase" />
<action name="showcase">
- <result>../webapp/WEB-INF/showcase.jsp</result>
+ <result>/WEB-INF/showcase.jsp</result>
</action>
<action name="viewSource" class="org.apache.struts2.showcase.source.ViewSourceAction">
- <result>../webapp/WEB-INF/viewSource.jsp</result>
+ <result>/WEB-INF/viewSource.jsp</result>
</action>
<action name="date" class="org.apache.struts2.showcase.DateAction" method="browse">
@@ -92,20 +93,20 @@
<default-interceptor-ref name="crudStack"/>
<action name="list" class="org.apache.struts2.showcase.action.SkillAction" method="list">
- <result>/empmanager/listSkills.jsp</result>
+ <result>/WEB-INF/empmanager/listSkills.jsp</result>
<interceptor-ref name="basicStack"/>
</action>
<action name="edit" class="org.apache.struts2.showcase.action.SkillAction">
- <result>/empmanager/editSkill.jsp</result>
+ <result>/WEB-INF/empmanager/editSkill.jsp</result>
<interceptor-ref name="params" />
<interceptor-ref name="basicStack"/>
</action>
<action name="save" class="org.apache.struts2.showcase.action.SkillAction" method="save">
- <result name="input">/empmanager/editSkill.jsp</result>
+ <result name="input">/WEB-INF/empmanager/editSkill.jsp</result>
<result type="redirect">list.action</result>
</action>
<action name="delete" class="org.apache.struts2.showcase.action.SkillAction" method="delete">
- <result name="error">/empmanager/editSkill.jsp</result>
+ <result name="error">/WEB-INF/empmanager/editSkill.jsp</result>
<result type="redirect">list.action</result>
</action>
</package>
@@ -114,20 +115,20 @@
<default-interceptor-ref name="crudStack"/>
<action name="list" class="org.apache.struts2.showcase.action.EmployeeAction" method="list">
- <result>/empmanager/listEmployees.jsp</result>
+ <result>/WEB-INF/empmanager/listEmployees.jsp</result>
<interceptor-ref name="basicStack"/>
</action>
<action name="edit-*" class="org.apache.struts2.showcase.action.EmployeeAction">
<param name="empId">{1}</param>
- <result>/empmanager/editEmployee.jsp</result>
+ <result>/WEB-INF/empmanager/editEmployee.jsp</result>
<interceptor-ref name="crudStack"><param name="validation.excludeMethods">execute</param></interceptor-ref>
</action>
<action name="save" class="org.apache.struts2.showcase.action.EmployeeAction" method="save">
- <result name="input">/empmanager/editEmployee.jsp</result>
+ <result name="input">/WEB-INF/empmanager/editEmployee.jsp</result>
<result type="redirect">list.action</result>
</action>
<action name="delete" class="org.apache.struts2.showcase.action.EmployeeAction" method="delete">
- <result name="error">/empmanager/editEmployee.jsp</result>
+ <result name="error">/WEB-INF/empmanager/editEmployee.jsp</result>
<result type="redirect">list.action</result>
</action>
</package>
http://git-wip-us.apache.org/repos/asf/struts/blob/d0c90dda/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
index c67257f..0d29a64 100644
--- a/apps/showcase/src/main/webapp/WEB-INF/ajax/autocompleter/index.jsp
+++ b/apps/showcase/src/main/webapp/WEB-INF/ajax/autocompleter/index.jsp
@@ -6,7 +6,7 @@
<title>Ajax Examples</title>
<!--// START SNIPPET: common-include-->
- <jsp:include page="/WEB-INF/ajax/commonInclude.jsplude.jsp"/>
+ <jsp:include page="/WEB-INF/ajax/commonInclude.jsp"/>
<!--// END SNIPPET: common-include-->
</head>
@@ -49,7 +49,8 @@
Using a JSON list returned from an action (href="/JSONList.action"), without autoComplete (autoComplete="false"), use indicator, search substring (searchType="substring")
<br/>
-<sx:autocompleter
+<sx:autocompleter
+ id="auto1"
indicator="indicator1"
href="%{jsonList}"
cssStyle="width: 200px;"
@@ -77,7 +78,8 @@ Reload on type (loadOnTextChange="true"), after 3 characters (loadMinimumCount="
Using a JSON list returned from an action (href="/JSONList.action"), with autoComplete (autoComplete="true")
<br/>
-<sx:autocompleter
+<sx:autocompleter
+ id="auto3"
name="auto3"
href="%{#jsonList}"
cssStyle="width: 200px;"
@@ -87,13 +89,14 @@ Using a JSON list returned from an action (href="/JSONList.action"), with autoCo
Using a local list (list="%{'apple','banana','grape','pear'}")
<br/>
-<sx:autocompleter list="{'apple','banana','grape','pear'}" cssStyle="width: 150px;"/>
+<sx:autocompleter id="auto-list" list="{'apple','banana','grape','pear'}" cssStyle="width: 150px;"/>
<br/><br/>
Force valid options (forceValidOption="true")
<br/>
-<sx:autocompleter
+<sx:autocompleter
+ id="auto4"
name="auto4"
href="%{#jsonList}"
cssStyle="width: 200px;"
@@ -105,8 +108,9 @@ Force valid options (forceValidOption="true")
Make dropdown's height to 180px (dropdownHeight="180")
<br/>
<sx:autocompleter
+ id="auto5"
name="auto5"
- href="%{#jsonList}"
+ href="%{#jsonList}"
cssStyle="width: 200px;"
dropdownHeight="180"/>
@@ -116,8 +120,9 @@ Make dropdown's height to 180px (dropdownHeight="180")
Disabled combobox (disabled="true")
<br/>
<sx:autocompleter
+ id="auto6"
name="auto6"
- href="%{#jsonList}"
+ href="%{#jsonList}"
cssStyle="width: 200px;"
disabled="true"/>
@@ -133,8 +138,9 @@ Link two autocompleter elements. When the selected value in 'Autocompleter 1' ch
<p>
Autocompleter 1
<sx:autocompleter
- name="select"
- list="{'fruits','colors'}"
+ id="auto7"
+ name="select"
+ list="{'fruits','colors'}"
value="colors"
valueNotifyTopics="/Changed"
forceValidOption="true"/>
@@ -142,6 +148,7 @@ Link two autocompleter elements. When the selected value in 'Autocompleter 1' ch
</form>
Autocompleter 2
<sx:autocompleter
+ id="auto8"
name="auto8"
href="%{#autoex}"
autoComplete="false"
@@ -154,8 +161,9 @@ Autocompleter 2
Publish before/after/value notify topics
<br/>
<sx:autocompleter
+ id="auto9"
name="auto9"
- href="%{#jsonList}"
+ href="%{#jsonList}"
listenTopics="/reload"
beforeNotifyTopics="/before"
afterNotifyTopics="/after"
http://git-wip-us.apache.org/repos/asf/struts/blob/d0c90dda/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
index 8be4022..32ea69e 100644
--- a/apps/showcase/src/main/webapp/WEB-INF/ajax/commonInclude.jsp
+++ b/apps/showcase/src/main/webapp/WEB-INF/ajax/commonInclude.jsp
@@ -1,5 +1,5 @@
<%@ taglib prefix="s" uri="/struts-tags" %>
<%@ taglib prefix="sx" uri="/struts-dojo-tags" %>
<!--// START SNIPPET: common-include-->
-<sx:head cache="true"/>
+<sx:head cache="false"/>
<!--// END SNIPPET: common-include-->
http://git-wip-us.apache.org/repos/asf/struts/blob/d0c90dda/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
index 5521cb4..12854b5 100644
--- a/apps/showcase/src/main/webapp/WEB-INF/ajax/footer.jsp
+++ b/apps/showcase/src/main/webapp/WEB-INF/ajax/footer.jsp
@@ -2,7 +2,7 @@
<hr/>
-<s:url var="backToAjaxExamples" value="../../index.jsp" />
+<s:url var="backToAjaxExamples" value="/ajax/index.html" />
<s:a href="%{backToAjaxExamples}">Back To AJAX Examples</s:a>
http://git-wip-us.apache.org/repos/asf/struts/blob/d0c90dda/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
deleted file mode 100644
index 8791fa3..0000000
--- a/apps/showcase/src/main/webapp/WEB-INF/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/d0c90dda/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
deleted file mode 100644
index 4152334..0000000
--- a/apps/showcase/src/main/webapp/WEB-INF/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/d0c90dda/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
deleted file mode 100644
index 311c329..0000000
--- a/apps/showcase/src/main/webapp/WEB-INF/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/d0c90dda/apps/showcase/src/main/webapp/WEB-INF/decorators/main.jsp
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/decorators/main.jsp b/apps/showcase/src/main/webapp/WEB-INF/decorators/main.jsp
index 462bd4d..1ca02cc 100644
--- a/apps/showcase/src/main/webapp/WEB-INF/decorators/main.jsp
+++ b/apps/showcase/src/main/webapp/WEB-INF/decorators/main.jsp
@@ -95,7 +95,7 @@
<li><s:a action="index" namespace="/config-browser"
includeParams="none">Config Browser</s:a></li>
<li><s:a value="/conversion/index.jsp">Conversion</s:a></li>
- <li><s:a value="/person/index.jsp">Person Manager ( by Conventions )</s:a></li>
+ <li><s:a value="/person/index.html">Person Manager ( by Conventions )</s:a></li>
</ul>
</li>
<li class="dropdown">
@@ -106,7 +106,7 @@
<ul class="dropdown-menu">
<li><s:url var="url" action="showActionTagDemo" namespace="/tags/non-ui/actionTag"/><s:a
href="%{url}">Action Tag</s:a></li>
- <li><s:url var="url" value="/tags/non-ui/date.jsp"/><s:a
+ <li><s:url var="url" namespace="/tags/non-ui" action="date"/><s:a
href="%{url}">Date Tag</s:a></li>
<li><s:url var="url" action="debugTagDemo" namespace="/tags/non-ui"/><s:a
href="%{url}">Debug Tag</s:a></li>
@@ -149,7 +149,7 @@
<li><s:url var="url" namespace="/tags/ui" action="moreSelects" method="input"/><s:a
href="%{url}">More Select Box UI Examples</s:a></li>
<li>
- <s:url var="url" namespace="/tags/ui" value="/tags/ui/treeExampleStatic.jsp"/>
+ <s:url var="url" namespace="/tags/ui" action="treeExampleStatic"/>
<s:a href="%{url}">Tree Example (static)</s:a>
<li>
<s:url var="url" namespace="/tags/ui" action="showDynamicTreeAction"/>
@@ -158,13 +158,13 @@
<s:url var="url" namespace="/tags/ui" action="showDynamicAjaxTreeAction"/>
<s:a href="%{url}">Tree Example (dynamic ajax loading)</s:a>
<li>
- <s:url var="url" value="/tags/ui/componentTagExample.jsp"/>
+ <s:url var="url" namespace="/tags/ui" action="componentTagExample"/>
<s:a href="%{#url}">Component Tag Example</s:a>
<li><s:url var="url" namespace="/tags/ui" action="actionTagExample" method="input"/><s:a
href="%{url}">Action Tag Example</s:a></li>
- <li><s:url var="url" value="/tags/ui/datepicker/index.jsp"/><s:a
+ <li><s:url var="url" namespace="/tags/ui" action="datepicker"/><s:a
href="%{#url}">DateTime picker tag - Pick a date</s:a></li>
- <li><s:url var="url" value="/tags/ui/timepicker/index.jsp"/><s:a
+ <li><s:url var="url" namespace="/tags/ui" action="timepicker"/><s:a
href="%{#url}">DateTime picker tag - Pick a time</s:a></li>
<%--li><s:url var="url" namespace="/tags/ui" action="populateUsingIterator" method="input" /><s:a href="%{url}">UI population using iterator tag</s:a></li--%>
</ul>
@@ -174,7 +174,7 @@
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">File<b class="caret"></b></a>
<ul class="dropdown-menu">
- <li><s:a value="/filedownload/index.jsp">File Download</s:a></li>
+ <li><s:a namespace="/filedownload" action="index">File Download</s:a></li>
<li class="dropdown-submenu">
<a href="#">File Upload</a>
<ul class="dropdown-menu">
@@ -207,11 +207,11 @@
href="%{url}">Hangman (Ajax - Experimental)</s:a></li>
</ul>
</li>
- <li><s:a value="/person/index.jsp">Person Manager</s:a></li>
- <li><s:a value="/empmanager/index.jsp">CRUD</s:a></li>
- <li><s:a value="/wait/index.jsp">Execute & Wait</s:a></li>
- <li><s:a value="/token/index.jsp">Token</s:a></li>
- <li><s:a value="/validation/index.jsp">Validation</s:a></li>
+ <li><s:a value="/person/index.html">Person Manager</s:a></li>
+ <li><s:a value="/skill/index.html">CRUD</s:a></li>
+ <li><s:a value="/wait/index.html">Execute & Wait</s:a></li>
+ <li><s:a value="/token/index.html">Token</s:a></li>
+ <li><s:a value="/validation/index.action">Validation</s:a></li>
<li><s:url var="url" namespace="/modelDriven" action="modelDriven"/><s:a
href="%{url}">Model Driven</s:a></li>
</ul>
@@ -232,19 +232,19 @@
</li>
</ul>
</li>
- <li><s:a value="/jsf/index.jsp">JavaServer Faces</s:a></li>
- <li><s:a value="/integration/editGangster">Struts 1 Integration</s:a></li>
+ <li><s:a namespace="/jsf" action="index">JavaServer Faces</s:a></li>
+ <li><s:a namespace="/integration" action="editGangster">Struts 1 Integration</s:a></li>
<li><s:a value="/tiles/index.action">Tiles</s:a></li>
</ul>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">AJAX<b class="caret"></b></a>
<ul class="dropdown-menu">
- <li><s:a value="/ajax/index.jsp">Ajax plugin</s:a></li>
- <li><s:a value="/chat/index.jsp">Ajax Chat</s:a></li>
+ <li><s:a value="/ajax/index.html">Ajax plugin</s:a></li>
+ <li><s:a value="/chat/index.html">Ajax Chat</s:a></li>
</ul>
</li>
- <li><s:a value="/interactive/index.jsp">Interactive Demo</s:a></li>
+ <li><s:a value="/interactive/index.action">Interactive Demo</s:a></li>
</ul>
<ul class="nav pull-right">
http://git-wip-us.apache.org/repos/asf/struts/blob/d0c90dda/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
deleted file mode 100644
index 0da9091..0000000
--- a/apps/showcase/src/main/webapp/WEB-INF/empmanager/index.jsp
+++ /dev/null
@@ -1 +0,0 @@
-<% response.sendRedirect("../employee/list.action"); %>
http://git-wip-us.apache.org/repos/asf/struts/blob/d0c90dda/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
deleted file mode 100644
index f7db6cf..0000000
--- a/apps/showcase/src/main/webapp/WEB-INF/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/d0c90dda/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
deleted file mode 100644
index 7ebb967..0000000
--- a/apps/showcase/src/main/webapp/WEB-INF/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/d0c90dda/apps/showcase/src/main/webapp/WEB-INF/tiles.xml
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/tiles.xml b/apps/showcase/src/main/webapp/WEB-INF/tiles.xml
index 01af051..7c7057f 100644
--- a/apps/showcase/src/main/webapp/WEB-INF/tiles.xml
+++ b/apps/showcase/src/main/webapp/WEB-INF/tiles.xml
@@ -27,22 +27,22 @@
<tiles-definitions>
- <definition name="showcase.index" template="/tiles/layout.jsp">
+ <definition name="showcase.index" template="/WEB-INF/tiles/layout.jsp">
<put-attribute name="title" value="Tiles Showcase"/>
- <put-attribute name="header" value="/tiles/header.jsp"/>
- <put-attribute name="body" value="/tiles/body.jsp"/>
+ <put-attribute name="header" value="/WEB-INF/tiles/header.jsp"/>
+ <put-attribute name="body" value="/WEB-INF/tiles/body.jsp"/>
</definition>
- <definition name="showcase.freemarker" template="/tiles/layout.jsp">
+ <definition name="showcase.freemarker" template="/WEB-INF/tiles/layout.jsp">
<put-attribute name="title" value="Tiles/Freemarker Showcase"/>
- <put-attribute name="header" value="/tiles/header.jsp"/>
- <put-attribute name="body" value="/tiles/body.ftl"/>
+ <put-attribute name="header" value="/WEB-INF/tiles/header.jsp"/>
+ <put-attribute name="body" value="/WEB-INF/tiles/body.ftl"/>
</definition>
- <definition name="showcase.freemarkerLayout" template="/tiles/layout.ftl">
+ <definition name="showcase.freemarkerLayout" template="/WEB-INF/tiles/layout.ftl">
<put-attribute name="title" value="Tiles/Freemarker Showcase"/>
- <put-attribute name="header" value="/tiles/header.jsp"/>
- <put-attribute name="body" value="/tiles/body.ftl"/>
+ <put-attribute name="header" value="/WEB-INF/tiles/header.jsp"/>
+ <put-attribute name="body" value="/WEB-INF/tiles/body.ftl"/>
</definition>
</tiles-definitions>
http://git-wip-us.apache.org/repos/asf/struts/blob/d0c90dda/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
index 761d44b..15dab33 100644
--- a/apps/showcase/src/main/webapp/WEB-INF/token/doublePost.jsp
+++ b/apps/showcase/src/main/webapp/WEB-INF/token/doublePost.jsp
@@ -20,7 +20,7 @@
<p/>
Click here to
- <s:url var="back" value="/token/index.jsp"/><s:a href="%{back}">return</s:a>.
+ <s:url var="back" value="/token/index.html"/><s:a href="%{back}">return</s:a>.
</div>
</div>
</div>
http://git-wip-us.apache.org/repos/asf/struts/blob/d0c90dda/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
deleted file mode 100644
index b65ff4e..0000000
--- a/apps/showcase/src/main/webapp/WEB-INF/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/d0c90dda/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
index a67078c..2a1ab8f 100644
--- a/apps/showcase/src/main/webapp/WEB-INF/token/transferDone.jsp
+++ b/apps/showcase/src/main/webapp/WEB-INF/token/transferDone.jsp
@@ -40,7 +40,7 @@
<p/>
Click here to
- <s:url var="back" value="/token/index.jsp"/><s:a href="%{back}">return</s:a>.
+ <s:url var="back" value="/token/index.html"/><s:a href="%{back}">return</s:a>.
</div>
</div>
</div>
http://git-wip-us.apache.org/repos/asf/struts/blob/d0c90dda/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
index 661d032..96a331f 100644
--- a/apps/showcase/src/main/webapp/WEB-INF/validation/index.jsp
+++ b/apps/showcase/src/main/webapp/WEB-INF/validation/index.jsp
@@ -30,7 +30,7 @@
<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"/>
+ <s:url var="storeMessageAcrossRequestExample" namespace="/validation" action="storeErrorsAcrossRequestExample"/>
<ul>
<li><s:a href="%{fieldValidatorUrl}">Field Validators</s:a></li>
http://git-wip-us.apache.org/repos/asf/struts/blob/d0c90dda/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
index 9ab7b78..6389d51 100644
--- a/apps/showcase/src/main/webapp/WEB-INF/wait/complete.jsp
+++ b/apps/showcase/src/main/webapp/WEB-INF/wait/complete.jsp
@@ -16,7 +16,7 @@
<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>.
+ Click here to <s:url var="back" value="/wait/index.html"/><s:a href="%{back}" cssClass="btn btn-link">return</s:a>.
</div>
</div>
http://git-wip-us.apache.org/repos/asf/struts/blob/d0c90dda/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
deleted file mode 100644
index 14f4e19..0000000
--- a/apps/showcase/src/main/webapp/WEB-INF/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/d0c90dda/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
index deb8151..59bb91b 100644
--- a/apps/showcase/src/main/webapp/WEB-INF/wait/wait.jsp
+++ b/apps/showcase/src/main/webapp/WEB-INF/wait/wait.jsp
@@ -27,7 +27,7 @@
<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>.
+ Click here to <s:url var="back" value="/wait/index.html"/><s:a href="%{back}" cssClass="btn btn-link">return</s:a>.
</div>
</div>
http://git-wip-us.apache.org/repos/asf/struts/blob/d0c90dda/apps/showcase/src/main/webapp/ajax/index.html
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/ajax/index.html b/apps/showcase/src/main/webapp/ajax/index.html
new file mode 100644
index 0000000..175fd9a
--- /dev/null
+++ b/apps/showcase/src/main/webapp/ajax/index.html
@@ -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.action">Bind tag</a></li>
+ <li><a href="autocompleter.action">Autocompleter combobox tag</a></li>
+ <li><a href="remotebutton.action">Remote button tag</a></li>
+ <li><a href="remotediv.action">Remote div tag</a></li>
+ <li><a href="remotelink.action">Remote link tag</a></li>
+ <li><a href="tabbedpanel.action">Tabbed panel</a></li>
+ <li><a href="remoteforms.action">Remote forms</a></li>
+ <li><a href="widgets.action">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/d0c90dda/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
new file mode 100644
index 0000000..4152334
--- /dev/null
+++ b/apps/showcase/src/main/webapp/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/d0c90dda/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
new file mode 100644
index 0000000..311c329
--- /dev/null
+++ b/apps/showcase/src/main/webapp/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/d0c90dda/apps/showcase/src/main/webapp/person/index.html
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/person/index.html b/apps/showcase/src/main/webapp/person/index.html
new file mode 100644
index 0000000..bc92398
--- /dev/null
+++ b/apps/showcase/src/main/webapp/person/index.html
@@ -0,0 +1,10 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+<head>
+ <META HTTP-EQUIV="Refresh" CONTENT="0;URL=list-people.action">
+</head>
+
+<body>
+<p>Loading ...</p>
+</body>
+</html>
http://git-wip-us.apache.org/repos/asf/struts/blob/d0c90dda/apps/showcase/src/main/webapp/skill/index.html
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/skill/index.html b/apps/showcase/src/main/webapp/skill/index.html
new file mode 100644
index 0000000..fd10066
--- /dev/null
+++ b/apps/showcase/src/main/webapp/skill/index.html
@@ -0,0 +1,10 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+<head>
+ <META HTTP-EQUIV="Refresh" CONTENT="0;URL=list.action">
+</head>
+
+<body>
+<p>Loading ...</p>
+</body>
+</html>
http://git-wip-us.apache.org/repos/asf/struts/blob/d0c90dda/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
new file mode 100644
index 0000000..7ebb967
--- /dev/null
+++ b/apps/showcase/src/main/webapp/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/d0c90dda/apps/showcase/src/main/webapp/token/index.html
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/token/index.html b/apps/showcase/src/main/webapp/token/index.html
new file mode 100644
index 0000000..f8d0f8f
--- /dev/null
+++ b/apps/showcase/src/main/webapp/token/index.html
@@ -0,0 +1,47 @@
+<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/d0c90dda/apps/showcase/src/main/webapp/wait/index.html
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/wait/index.html b/apps/showcase/src/main/webapp/wait/index.html
new file mode 100644
index 0000000..d354965
--- /dev/null
+++ b/apps/showcase/src/main/webapp/wait/index.html
@@ -0,0 +1,33 @@
+<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.action">Example 1 (no delay)</a>
+ <br/><a href="example2.action">Example 2 (with delay)</a>
+ <br/><a href="example3.action">Example 3 (with longer check delay)</a>
+ </div>
+ </div>
+</div>
+</body>
+</html>
[12/20] 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
[19/20] git commit: Merge branch 'develop' into
feature/move-jsps-under-webinf
Posted by lu...@apache.org.
Merge branch 'develop' into feature/move-jsps-under-webinf
Project: http://git-wip-us.apache.org/repos/asf/struts/repo
Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/eb7b5708
Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/eb7b5708
Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/eb7b5708
Branch: refs/heads/develop
Commit: eb7b5708971f115351ebd7a143e086531bb110bc
Parents: 1ebedff 040fd67
Author: Lukasz Lenart <lu...@apache.org>
Authored: Thu Mar 6 21:58:26 2014 +0100
Committer: Lukasz Lenart <lu...@apache.org>
Committed: Thu Mar 6 21:58:26 2014 +0100
----------------------------------------------------------------------
apps/blank/pom.xml | 2 +-
apps/jboss-blank/pom.xml | 2 +-
apps/mailreader/pom.xml | 2 +-
apps/pom.xml | 2 +-
apps/portlet/pom.xml | 2 +-
apps/rest-showcase/pom.xml | 4 ++--
apps/showcase/pom.xml | 2 +-
archetypes/pom.xml | 2 +-
archetypes/struts2-archetype-angularjs/pom.xml | 2 +-
archetypes/struts2-archetype-blank/pom.xml | 2 +-
archetypes/struts2-archetype-convention/pom.xml | 2 +-
archetypes/struts2-archetype-dbportlet/pom.xml | 2 +-
archetypes/struts2-archetype-plugin/pom.xml | 2 +-
archetypes/struts2-archetype-portlet/pom.xml | 2 +-
archetypes/struts2-archetype-starter/pom.xml | 2 +-
assembly/pom.xml | 2 +-
bundles/admin/pom.xml | 2 +-
bundles/demo/pom.xml | 2 +-
bundles/pom.xml | 2 +-
core/pom.xml | 2 +-
plugins/cdi/pom.xml | 2 +-
plugins/codebehind/pom.xml | 2 +-
plugins/config-browser/pom.xml | 2 +-
plugins/convention/pom.xml | 2 +-
plugins/dojo/pom.xml | 2 +-
plugins/dwr/pom.xml | 2 +-
plugins/embeddedjsp/pom.xml | 2 +-
plugins/gxp/pom.xml | 2 +-
plugins/jasperreports/pom.xml | 2 +-
plugins/javatemplates/pom.xml | 2 +-
plugins/jfreechart/pom.xml | 2 +-
plugins/jsf/pom.xml | 2 +-
plugins/json/pom.xml | 2 +-
plugins/junit/pom.xml | 2 +-
plugins/osgi/pom.xml | 2 +-
plugins/oval/pom.xml | 2 +-
plugins/pell-multipart/pom.xml | 2 +-
plugins/plexus/pom.xml | 2 +-
plugins/pom.xml | 2 +-
plugins/portlet-tiles/pom.xml | 2 +-
plugins/portlet/pom.xml | 2 +-
plugins/rest/pom.xml | 4 ++--
plugins/sitegraph/pom.xml | 2 +-
plugins/sitemesh/pom.xml | 2 +-
plugins/spring/pom.xml | 2 +-
plugins/struts1/pom.xml | 2 +-
plugins/testng/pom.xml | 2 +-
plugins/tiles/pom.xml | 2 +-
plugins/tiles3/pom.xml | 2 +-
pom.xml | 2 +-
xwork-core/pom.xml | 2 +-
51 files changed, 53 insertions(+), 53 deletions(-)
----------------------------------------------------------------------
[20/20] git commit: Merge branch 'feature/move-jsps-under-webinf'
into develop
Posted by lu...@apache.org.
Merge branch 'feature/move-jsps-under-webinf' into develop
Project: http://git-wip-us.apache.org/repos/asf/struts/repo
Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/80cd0409
Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/80cd0409
Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/80cd0409
Branch: refs/heads/develop
Commit: 80cd0409c45d53dad54d9dda0e9c5a63626070ec
Parents: 040fd67 eb7b570
Author: Lukasz Lenart <lu...@apache.org>
Authored: Thu Mar 6 22:07:37 2014 +0100
Committer: Lukasz Lenart <lu...@apache.org>
Committed: Thu Mar 6 22:07:37 2014 +0100
----------------------------------------------------------------------
.gitignore | 3 +
apps/blank/src/main/webapp/WEB-INF/web.xml | 5 +
apps/jboss-blank/src/main/resources/example.xml | 6 +-
.../webapp/WEB-INF/jsp/example/HelloWorld.jsp | 28 +
.../main/webapp/WEB-INF/jsp/example/Login.jsp | 15 +
.../main/webapp/WEB-INF/jsp/example/Menu.jsp | 3 +
.../main/webapp/WEB-INF/jsp/example/Missing.jsp | 11 +
.../webapp/WEB-INF/jsp/example/Register.jsp | 3 +
.../main/webapp/WEB-INF/jsp/example/Welcome.jsp | 18 +
.../jboss-blank/src/main/webapp/WEB-INF/web.xml | 17 +
.../src/main/webapp/example/HelloWorld.jsp | 28 -
.../src/main/webapp/example/Login.jsp | 15 -
.../src/main/webapp/example/Menu.jsp | 3 -
.../src/main/webapp/example/Missing.jsp | 11 -
.../src/main/webapp/example/Register.jsp | 3 -
.../src/main/webapp/example/Welcome.jsp | 18 -
.../src/main/java/mailreader-support.xml | 10 +-
.../src/main/webapp/ChangePassword.jsp | 25 -
apps/mailreader/src/main/webapp/Error.jsp | 40 --
apps/mailreader/src/main/webapp/Footer.jsp | 6 -
apps/mailreader/src/main/webapp/Login.jsp | 30 -
apps/mailreader/src/main/webapp/MainMenu.jsp | 25 -
.../mailreader/src/main/webapp/Registration.jsp | 115 ----
.../mailreader/src/main/webapp/Subscription.jsp | 60 --
.../main/webapp/WEB-INF/jsp/ChangePassword.jsp | 25 +
.../src/main/webapp/WEB-INF/jsp/Error.jsp | 40 ++
.../src/main/webapp/WEB-INF/jsp/Footer.jsp | 6 +
.../src/main/webapp/WEB-INF/jsp/Login.jsp | 30 +
.../src/main/webapp/WEB-INF/jsp/MainMenu.jsp | 25 +
.../main/webapp/WEB-INF/jsp/Registration.jsp | 115 ++++
.../main/webapp/WEB-INF/jsp/Subscription.jsp | 60 ++
.../src/main/webapp/WEB-INF/jsp/Welcome.jsp | 55 ++
apps/mailreader/src/main/webapp/WEB-INF/web.xml | 17 +
apps/mailreader/src/main/webapp/Welcome.jsp | 55 --
.../src/main/webapp/WEB-INF/web.xml | 17 +
.../main/resources/struts-actionchaining.xml | 2 +-
.../showcase/src/main/resources/struts-ajax.xml | 69 ++-
.../showcase/src/main/resources/struts-chat.xml | 28 +-
.../src/main/resources/struts-conversion.xml | 44 +-
.../src/main/resources/struts-filedownload.xml | 4 +
.../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 | 6 +-
.../src/main/resources/struts-interactive.xml | 7 +-
apps/showcase/src/main/resources/struts-jsf.xml | 4 +
.../src/main/resources/struts-model-driven.xml | 4 +-
.../src/main/resources/struts-tags-non-ui.xml | 57 +-
.../src/main/resources/struts-tags-ui.xml | 58 +-
.../src/main/resources/struts-tiles.xml | 2 +-
.../src/main/resources/struts-token.xml | 24 +-
.../src/main/resources/struts-validation.xml | 37 +-
.../showcase/src/main/resources/struts-wait.xml | 24 +-
apps/showcase/src/main/resources/struts.xml | 25 +-
.../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 | 186 ++++++
.../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/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 +
apps/showcase/src/main/webapp/WEB-INF/date.jsp | 2 +
.../src/main/webapp/WEB-INF/decorators/main.jsp | 34 +-
.../webapp/WEB-INF/empmanager/editEmployee.jsp | 56 ++
.../webapp/WEB-INF/empmanager/editSkill.jsp | 42 ++
.../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 ++
.../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 ++
apps/showcase/src/main/webapp/WEB-INF/tiles.xml | 18 +-
.../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 ++
.../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/wait.jsp | 53 ++
apps/showcase/src/main/webapp/WEB-INF/web.xml | 17 +
.../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.html | 24 +
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 -
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.html | 10 +
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 -
apps/showcase/src/main/webapp/skill/index.html | 10 +
.../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 --
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.html | 47 ++
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.html | 33 +
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 -
455 files changed, 9998 insertions(+), 9815 deletions(-)
----------------------------------------------------------------------
[17/20] git commit: Excludes OSX specific folders
Posted by lu...@apache.org.
Excludes OSX specific folders
Project: http://git-wip-us.apache.org/repos/asf/struts/repo
Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/a6760cf0
Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/a6760cf0
Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/a6760cf0
Branch: refs/heads/develop
Commit: a6760cf0fe63c55d1763f62173f03bdb6f34e695
Parents: d0c90dd
Author: Lukasz Lenart <lu...@apache.org>
Authored: Thu Mar 6 08:16:59 2014 +0100
Committer: Lukasz Lenart <lu...@apache.org>
Committed: Thu Mar 6 08:16:59 2014 +0100
----------------------------------------------------------------------
.gitignore | 3 +++
1 file changed, 3 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/struts/blob/a6760cf0/.gitignore
----------------------------------------------------------------------
diff --git a/.gitignore b/.gitignore
index 81d351f..313053b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -9,6 +9,9 @@
.project
.settings/
+# OSX
+.DS_Store
+
# Scripts
*.sh
[04/20] git commit: Adds security constraints to web.xml to block
access to pure JSP files
Posted by lu...@apache.org.
Adds security constraints to web.xml to block access to pure JSP files
Project: http://git-wip-us.apache.org/repos/asf/struts/repo
Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/95b309a9
Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/95b309a9
Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/95b309a9
Branch: refs/heads/develop
Commit: 95b309a9b93eebadb589a335947598d815add80b
Parents: 4360a06
Author: Lukasz Lenart <lu...@apache.org>
Authored: Sun Mar 2 21:13:38 2014 +0100
Committer: Lukasz Lenart <lu...@apache.org>
Committed: Sun Mar 2 21:13:38 2014 +0100
----------------------------------------------------------------------
apps/blank/src/main/webapp/WEB-INF/web.xml | 5 +++++
apps/jboss-blank/src/main/webapp/WEB-INF/web.xml | 3 ---
apps/mailreader/src/main/webapp/WEB-INF/web.xml | 17 +++++++++++++++++
apps/portlet/src/main/webapp/WEB-INF/web.xml | 17 +++++++++++++++++
apps/rest-showcase/src/main/webapp/WEB-INF/web.xml | 17 +++++++++++++++++
apps/showcase/src/main/webapp/WEB-INF/web.xml | 17 +++++++++++++++++
6 files changed, 73 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/struts/blob/95b309a9/apps/blank/src/main/webapp/WEB-INF/web.xml
----------------------------------------------------------------------
diff --git a/apps/blank/src/main/webapp/WEB-INF/web.xml b/apps/blank/src/main/webapp/WEB-INF/web.xml
index e8c0f46..f15252b 100644
--- a/apps/blank/src/main/webapp/WEB-INF/web.xml
+++ b/apps/blank/src/main/webapp/WEB-INF/web.xml
@@ -31,4 +31,9 @@
</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>
http://git-wip-us.apache.org/repos/asf/struts/blob/95b309a9/apps/jboss-blank/src/main/webapp/WEB-INF/web.xml
----------------------------------------------------------------------
diff --git a/apps/jboss-blank/src/main/webapp/WEB-INF/web.xml b/apps/jboss-blank/src/main/webapp/WEB-INF/web.xml
index 88c6fc8..d1cf020 100644
--- a/apps/jboss-blank/src/main/webapp/WEB-INF/web.xml
+++ b/apps/jboss-blank/src/main/webapp/WEB-INF/web.xml
@@ -27,9 +27,6 @@
<auth-constraint>
<role-name>no-users</role-name>
</auth-constraint>
- <user-data-constraint>
- <transport-guarantee>NONE</transport-guarantee>
- </user-data-constraint>
</security-constraint>
<security-role>
http://git-wip-us.apache.org/repos/asf/struts/blob/95b309a9/apps/mailreader/src/main/webapp/WEB-INF/web.xml
----------------------------------------------------------------------
diff --git a/apps/mailreader/src/main/webapp/WEB-INF/web.xml b/apps/mailreader/src/main/webapp/WEB-INF/web.xml
index 9b35ec3..b01d864 100644
--- a/apps/mailreader/src/main/webapp/WEB-INF/web.xml
+++ b/apps/mailreader/src/main/webapp/WEB-INF/web.xml
@@ -27,4 +27,21 @@
<welcome-file>index.html</welcome-file>
</welcome-file-list>
+ <!-- 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>
http://git-wip-us.apache.org/repos/asf/struts/blob/95b309a9/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 f424419..d4a3c79 100644
--- a/apps/portlet/src/main/webapp/WEB-INF/web.xml
+++ b/apps/portlet/src/main/webapp/WEB-INF/web.xml
@@ -28,4 +28,21 @@
</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>
http://git-wip-us.apache.org/repos/asf/struts/blob/95b309a9/apps/rest-showcase/src/main/webapp/WEB-INF/web.xml
----------------------------------------------------------------------
diff --git a/apps/rest-showcase/src/main/webapp/WEB-INF/web.xml b/apps/rest-showcase/src/main/webapp/WEB-INF/web.xml
index d10c214..694c349 100644
--- a/apps/rest-showcase/src/main/webapp/WEB-INF/web.xml
+++ b/apps/rest-showcase/src/main/webapp/WEB-INF/web.xml
@@ -26,4 +26,21 @@
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
+ <!-- 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>
http://git-wip-us.apache.org/repos/asf/struts/blob/95b309a9/apps/showcase/src/main/webapp/WEB-INF/web.xml
----------------------------------------------------------------------
diff --git a/apps/showcase/src/main/webapp/WEB-INF/web.xml b/apps/showcase/src/main/webapp/WEB-INF/web.xml
index 62335a4..f3b88e9 100644
--- a/apps/showcase/src/main/webapp/WEB-INF/web.xml
+++ b/apps/showcase/src/main/webapp/WEB-INF/web.xml
@@ -194,4 +194,21 @@
<welcome-file>index.html</welcome-file>
</welcome-file-list>
+ <!-- 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>
[13/20] 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
[02/20] git commit: Adds security constraints to block access to jsp
files
Posted by lu...@apache.org.
Adds security constraints to block access to jsp files
Project: http://git-wip-us.apache.org/repos/asf/struts/repo
Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/6f43464f
Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/6f43464f
Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/6f43464f
Branch: refs/heads/develop
Commit: 6f43464fcaab59e7345a3e394db4a969cf410d15
Parents: 6b00db2
Author: Lukasz Lenart <lu...@apache.org>
Authored: Tue Feb 25 10:57:21 2014 +0100
Committer: Lukasz Lenart <lu...@apache.org>
Committed: Tue Feb 25 10:57:21 2014 +0100
----------------------------------------------------------------------
.../jboss-blank/src/main/webapp/WEB-INF/web.xml | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/struts/blob/6f43464f/apps/jboss-blank/src/main/webapp/WEB-INF/web.xml
----------------------------------------------------------------------
diff --git a/apps/jboss-blank/src/main/webapp/WEB-INF/web.xml b/apps/jboss-blank/src/main/webapp/WEB-INF/web.xml
index 4902479..88c6fc8 100644
--- a/apps/jboss-blank/src/main/webapp/WEB-INF/web.xml
+++ b/apps/jboss-blank/src/main/webapp/WEB-INF/web.xml
@@ -17,4 +17,24 @@
<welcome-file>index.html</welcome-file>
</welcome-file-list>
+ <!-- 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>
+ <user-data-constraint>
+ <transport-guarantee>NONE</transport-guarantee>
+ </user-data-constraint>
+ </security-constraint>
+
+ <security-role>
+ <description>Don't assign users to this role</description>
+ <role-name>no-users</role-name>
+ </security-role>
+
</web-app>
[15/20] 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/develop
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>
[18/20] git commit: Merge branch 'develop' into
feature/move-jsps-under-webinf
Posted by lu...@apache.org.
Merge branch 'develop' into feature/move-jsps-under-webinf
Project: http://git-wip-us.apache.org/repos/asf/struts/repo
Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/1ebedff9
Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/1ebedff9
Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/1ebedff9
Branch: refs/heads/develop
Commit: 1ebedff98a22544ec4b32eea49f4f818d4ab72eb
Parents: a6760cf 8f5f4a7
Author: Lukasz Lenart <lu...@apache.org>
Authored: Thu Mar 6 21:56:04 2014 +0100
Committer: Lukasz Lenart <lu...@apache.org>
Committed: Thu Mar 6 21:56:04 2014 +0100
----------------------------------------------------------------------
apps/blank/pom.xml | 8 +-
apps/jboss-blank/pom.xml | 8 +-
apps/mailreader/pom.xml | 8 +-
apps/pom.xml | 81 +-
apps/portlet/pom.xml | 8 +-
apps/rest-showcase/pom.xml | 4 +-
apps/showcase/pom.xml | 8 +-
archetypes/pom.xml | 10 +-
archetypes/struts2-archetype-angularjs/pom.xml | 9 +-
archetypes/struts2-archetype-blank/pom.xml | 9 +-
archetypes/struts2-archetype-convention/pom.xml | 9 +-
archetypes/struts2-archetype-dbportlet/pom.xml | 9 +-
archetypes/struts2-archetype-plugin/pom.xml | 9 +-
archetypes/struts2-archetype-portlet/pom.xml | 9 +-
archetypes/struts2-archetype-starter/pom.xml | 9 +-
assembly/pom.xml | 8 +-
bundles/admin/pom.xml | 8 +-
bundles/demo/pom.xml | 8 +-
bundles/pom.xml | 8 +-
core/pom.xml | 8 +-
core/src/main/resources/struts-default.xml | 8 +-
core/src/site/resources/tags/a.html | 976 ++++-----
core/src/site/resources/tags/action.html | 208 +-
core/src/site/resources/tags/actionerror.html | 752 +++----
core/src/site/resources/tags/actionmessage.html | 752 +++----
core/src/site/resources/tags/ajax/a.html | 1104 +++++------
.../site/resources/tags/ajax/autocompleter.html | 1328 ++++++-------
core/src/site/resources/tags/ajax/bind.html | 480 ++---
.../resources/tags/ajax/datetimepicker.html | 976 ++++-----
core/src/site/resources/tags/ajax/div.html | 1200 +++++------
core/src/site/resources/tags/ajax/head.html | 192 +-
core/src/site/resources/tags/ajax/submit.html | 1168 +++++------
.../site/resources/tags/ajax/tabbedpanel.html | 864 ++++----
core/src/site/resources/tags/ajax/textarea.html | 800 ++++----
core/src/site/resources/tags/ajax/tree.html | 1184 +++++------
core/src/site/resources/tags/ajax/treenode.html | 736 +++----
core/src/site/resources/tags/append.html | 112 +-
core/src/site/resources/tags/bean.html | 128 +-
core/src/site/resources/tags/checkbox.html | 752 +++----
core/src/site/resources/tags/checkboxlist.html | 2 +-
core/src/site/resources/tags/combobox.html | 912 ++++-----
core/src/site/resources/tags/component.html | 736 +++----
core/src/site/resources/tags/date.html | 176 +-
core/src/site/resources/tags/debug.html | 736 +++----
core/src/site/resources/tags/div.html | 752 +++----
core/src/site/resources/tags/doubleselect.html | 1440 +++++++-------
core/src/site/resources/tags/else.html | 80 +-
core/src/site/resources/tags/elseif.html | 96 +-
core/src/site/resources/tags/fielderror.html | 768 +++----
core/src/site/resources/tags/file.html | 768 +++----
core/src/site/resources/tags/form.html | 960 ++++-----
core/src/site/resources/tags/generator.html | 176 +-
core/src/site/resources/tags/head.html | 736 +++----
core/src/site/resources/tags/hidden.html | 736 +++----
core/src/site/resources/tags/if.html | 96 +-
core/src/site/resources/tags/include.html | 96 +-
.../resources/tags/inputtransferselect.html | 1072 +++++-----
core/src/site/resources/tags/iterator.html | 192 +-
core/src/site/resources/tags/label.html | 752 +++----
core/src/site/resources/tags/merge.html | 112 +-
core/src/site/resources/tags/optgroup.html | 160 +-
.../resources/tags/optiontransferselect.html | 1872 +++++++++---------
core/src/site/resources/tags/param.html | 128 +-
core/src/site/resources/tags/password.html | 832 ++++----
core/src/site/resources/tags/property.html | 192 +-
core/src/site/resources/tags/push.html | 96 +-
core/src/site/resources/tags/radio.html | 832 ++++----
core/src/site/resources/tags/reset.html | 832 ++++----
core/src/site/resources/tags/select.html | 912 ++++-----
core/src/site/resources/tags/set.html | 160 +-
core/src/site/resources/tags/sort.html | 144 +-
core/src/site/resources/tags/submit.html | 832 ++++----
core/src/site/resources/tags/subset.html | 176 +-
core/src/site/resources/tags/text.html | 144 +-
core/src/site/resources/tags/textarea.html | 800 ++++----
core/src/site/resources/tags/textfield.html | 816 ++++----
core/src/site/resources/tags/token.html | 736 +++----
core/src/site/resources/tags/updownselect.html | 1008 +++++-----
core/src/site/resources/tags/url.html | 336 ++--
plugins/cdi/pom.xml | 2 +-
plugins/codebehind/pom.xml | 8 +-
plugins/config-browser/pom.xml | 8 +-
plugins/convention/pom.xml | 8 +-
plugins/dojo/pom.xml | 8 +-
plugins/dwr/pom.xml | 8 +-
plugins/embeddedjsp/pom.xml | 8 +-
plugins/gxp/pom.xml | 8 +-
plugins/jasperreports/pom.xml | 8 +-
plugins/javatemplates/pom.xml | 8 +-
plugins/jfreechart/pom.xml | 8 +-
plugins/jsf/pom.xml | 8 +-
plugins/json/pom.xml | 8 +-
plugins/junit/pom.xml | 8 +-
plugins/osgi/pom.xml | 8 +-
plugins/oval/pom.xml | 8 +-
plugins/pell-multipart/pom.xml | 8 +-
plugins/plexus/pom.xml | 8 +-
plugins/pom.xml | 8 +-
plugins/portlet-tiles/pom.xml | 8 +-
plugins/portlet/pom.xml | 8 +-
plugins/rest/pom.xml | 4 +-
plugins/sitegraph/pom.xml | 8 +-
plugins/sitemesh/pom.xml | 8 +-
plugins/spring/pom.xml | 8 +-
plugins/struts1/pom.xml | 8 +-
plugins/testng/pom.xml | 8 +-
plugins/tiles/pom.xml | 8 +-
plugins/tiles3/pom.xml | 8 +-
pom.xml | 13 +-
src/site/resources/archetype-catalog.xml | 12 +-
xwork-core/pom.xml | 8 +-
111 files changed, 18198 insertions(+), 18417 deletions(-)
----------------------------------------------------------------------
[09/20] 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