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 2020/02/02 07:00:42 UTC

[struts] branch master updated: WW-5057 Showcase cleanup for 2.6 branch: - Added missing elements to the UI Velocity example (for consistency with JSP example). - Fix some spelling typos in labels/tooltips (both JSP and Velocity UI examples). - Fixed some html/css issues with results pages for JSP and Velocity UI examples (consistency). - Made JSP UI example s:form use POST method to avoid warning in console when opening page. - Enhanced ViewSourceAction to allow View Sources "configuration" tab to work when ru [...]

This is an automated email from the ASF dual-hosted git repository.

lukaszlenart pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/struts.git


The following commit(s) were added to refs/heads/master by this push:
     new ecba240  WW-5057 Showcase cleanup for 2.6 branch: - Added missing elements to the UI Velocity example (for consistency with   JSP example). - Fix some spelling typos in labels/tooltips (both JSP and Velocity UI   examples). - Fixed some html/css issues with results pages for JSP and Velocity UI   examples (consistency). - Made JSP UI example s:form use POST method to avoid warning in console   when opening page. - Enhanced ViewSourceAction to allow View Sources "configuration" ta [...]
     new 57a21e9  Merge pull request #395 from JCgH4164838Gh792C124B5/WW-5057_ShowcaseCleanup
ecba240 is described below

commit ecba2406d5ca60aee1a1cb69484e70c3c634664a
Author: JCgH4164838Gh792C124B5 <43...@users.noreply.github.com>
AuthorDate: Sat Feb 1 17:39:54 2020 -0500

    WW-5057 Showcase cleanup for 2.6 branch:
    - Added missing elements to the UI Velocity example (for consistency with
      JSP example).
    - Fix some spelling typos in labels/tooltips (both JSP and Velocity UI
      examples).
    - Fixed some html/css issues with results pages for JSP and Velocity UI
      examples (consistency).
    - Made JSP UI example s:form use POST method to avoid warning in console
      when opening page.
    - Enhanced ViewSourceAction to allow View Sources "configuration" tab to
      work when running Showcase as an "exploded" WARfile.
    - Added escapeHtmlBody="false" to multiple tags in .ftl Showcase files
      (fix broken display elements - submit and anchor mostly).
    - Added missing favouriteCities getter/setter to MoreSelectsAction action.
    - Upgrade htmlunit from 2.27 to 2.37.0
    - Upgrade maven failsafe plugin from 2.22.1 to 2.22.2
---
 apps/showcase/pom.xml                              |  4 ++--
 .../apache/struts2/showcase/MoreSelectsAction.java |  9 ++++++++
 .../struts2/showcase/source/ViewSourceAction.java  | 14 ++++++++++---
 .../main/webapp/WEB-INF/hangman/hangmanNonAjax.ftl |  3 ++-
 .../src/main/webapp/WEB-INF/person/new-person.ftl  |  2 +-
 .../tags/non-ui/actionPrefix/actionPrefix.ftl      |  2 +-
 .../non-ui/actionPrefix/actionPrefixExample.ftl    |  8 ++++----
 .../tags/non-ui/actionPrefix/methodPrefix.ftl      |  2 +-
 .../tags/non-ui/actionPrefix/normalSubmit.ftl      |  2 +-
 .../non-ui/actionPrefix/redirectActionPrefix.ftl   |  2 +-
 .../src/main/webapp/WEB-INF/tags/ui/example.jsp    | 12 +++++------
 .../src/main/webapp/WEB-INF/tags/ui/example.vm     | 24 +++++++++++++---------
 .../webapp/WEB-INF/tags/ui/exampleSubmited.jsp     | 18 ++++++++--------
 .../main/webapp/WEB-INF/tags/ui/exampleSubmited.vm | 20 ++++++++++--------
 .../tags/ui/lotsOfOptiontransferselectSubmit.jsp   |  2 +-
 .../src/main/webapp/WEB-INF/token/example4.ftl     |  2 +-
 16 files changed, 77 insertions(+), 49 deletions(-)

diff --git a/apps/showcase/pom.xml b/apps/showcase/pom.xml
index 99bceb7..2925128 100644
--- a/apps/showcase/pom.xml
+++ b/apps/showcase/pom.xml
@@ -155,7 +155,7 @@
        <dependency>
             <groupId>net.sourceforge.htmlunit</groupId>
             <artifactId>htmlunit</artifactId>
-            <version>2.27</version>
+            <version>2.37.0</version>
             <scope>test</scope>
         </dependency>
 
@@ -182,7 +182,7 @@
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-failsafe-plugin</artifactId>
-                <version>2.22.1</version>
+                <version>2.22.2</version>
                 <configuration>
                     <includes>
                         <include>it.org.apache.struts2.showcase.*Test</include>
diff --git a/apps/showcase/src/main/java/org/apache/struts2/showcase/MoreSelectsAction.java b/apps/showcase/src/main/java/org/apache/struts2/showcase/MoreSelectsAction.java
index edbe4ae..6a5d85f 100644
--- a/apps/showcase/src/main/java/org/apache/struts2/showcase/MoreSelectsAction.java
+++ b/apps/showcase/src/main/java/org/apache/struts2/showcase/MoreSelectsAction.java
@@ -36,6 +36,7 @@ public class MoreSelectsAction extends ActionSupport {
 	private List _prioritisedFavouriteCars;
 	private List _prioritisedFavouriteCountries;
 	private List favouriteNumbers;
+        private List favouriteCities;
 
 
 	// Cartoon Characters
@@ -124,6 +125,14 @@ public class MoreSelectsAction extends ActionSupport {
 		return list;
 	}
 
+	public List getFavouriteCities() {
+		return favouriteCities;
+	}
+
+	public void setFavouriteCities(List favouriteCities) {
+		this.favouriteCities = favouriteCities;
+	}
+
 	// actions
 
 	public String input() throws Exception {
diff --git a/apps/showcase/src/main/java/org/apache/struts2/showcase/source/ViewSourceAction.java b/apps/showcase/src/main/java/org/apache/struts2/showcase/source/ViewSourceAction.java
index 56dbf9b..541adcc 100644
--- a/apps/showcase/src/main/java/org/apache/struts2/showcase/source/ViewSourceAction.java
+++ b/apps/showcase/src/main/java/org/apache/struts2/showcase/source/ViewSourceAction.java
@@ -27,6 +27,7 @@ import org.apache.struts2.action.ServletContextAware;
 
 import javax.servlet.ServletContext;
 import java.io.BufferedReader;
+import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
@@ -88,9 +89,16 @@ public class ViewSourceAction extends ActionSupport implements ServletContextAwa
 			}
 		}
 
-		String rootPath = ServletActionContext.getServletContext().getRealPath("/");
+                final String rootPath = ServletActionContext.getServletContext().getRealPath("/");
+                final String rootPathUnix = (rootPath != null ? rootPath.replace(File.separator, "/") : null);  // Make path Unix-like for comparison (e.g. on Windows)
+                final String rootPathFileURI = "file://" + rootPathUnix;
+                final String collapsedRootPathFileURI = rootPathFileURI.replace("//", "/");        // Config string may have been transformed
+                final String rootPathWarFileURI = "war:file://" + rootPathUnix;
+                final String collapsedRootPathWarFileURI = rootPathWarFileURI.replace("//", "/");  // Config string may have been transformed
 
-		if (config != null && (rootPath == null || config.startsWith(rootPath))) {
+		if (config != null && (rootPath == null || config.startsWith(rootPath) ||
+                    config.startsWith(rootPathFileURI) || config.startsWith(collapsedRootPathFileURI) ||
+                    config.startsWith(rootPathWarFileURI) || config.startsWith(collapsedRootPathWarFileURI))) {
 			int pos = config.lastIndexOf(':');
 			configLine = Integer.parseInt(config.substring(pos + 1));
 			config = config.substring(0, pos).replace("//", "/");
@@ -192,7 +200,7 @@ public class ViewSourceAction extends ActionSupport implements ServletContextAwa
 	}
 
 	/**
-	 * Reads in a strea, optionally only including the target line number
+	 * Reads in a stream, optionally only including the target line number
 	 * and its padding
 	 *
 	 * @param in               The input stream
diff --git a/apps/showcase/src/main/webapp/WEB-INF/hangman/hangmanNonAjax.ftl b/apps/showcase/src/main/webapp/WEB-INF/hangman/hangmanNonAjax.ftl
index 2571d27..046ab4b 100644
--- a/apps/showcase/src/main/webapp/WEB-INF/hangman/hangmanNonAjax.ftl
+++ b/apps/showcase/src/main/webapp/WEB-INF/hangman/hangmanNonAjax.ftl
@@ -125,7 +125,7 @@
 			<#else>
 			<img src="<@s.property value="%{#looseImageUrl}" />" width="381" height="44" />
 			</#if>
-			<@s.a href="%{#startHref}">
+			<@s.a href="%{#startHref}" escapeHtmlBody="false">
 				<img src="<@s.property value="%{#startImageUrl}" />" width="250" height="43" />
 			</...@s.a>
 			<#else>
@@ -139,6 +139,7 @@
 
 		      <@s.a href="%{#url}"
 		              id="%{#currentCharacter}"
+                              escapeHtmlBody="false"
 		              >
 		        <img height="36" alt="" src="<@s.property value="%{#chalkboardImageUrl}" />" width="36" border="0" />
 		      </...@s.a>
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
index 07a66d4..6af4da4 100644
--- a/apps/showcase/src/main/webapp/WEB-INF/person/new-person.ftl
+++ b/apps/showcase/src/main/webapp/WEB-INF/person/new-person.ftl
@@ -59,7 +59,7 @@
 					</div>
 				</div>
 			    <div class="form-actions">
-				    <@s.submit value="Create person" cssClass="btn btn-primary"/>
+				    <@s.submit value="Create person" cssClass="btn btn-primary" escapeHtmlBody="false"/>
 			    </div>
 			</...@s.form>
 		</div>
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
index 6e4432e..8068837 100644
--- 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
@@ -35,7 +35,7 @@
 
 			<p>The text you've entered is ${text!''}<p/>
 
-			<@s.a href="javascript:history.back();" cssClass="btn btn-info"><i class="icon icon-arrow-left"></i> Back</...@s.a>
+			<@s.a href="javascript:history.back();" cssClass="btn btn-info" escapeHtmlBody="false"><i class="icon icon-arrow-left"></i> Back</...@s.a>
 		</div>
 	</div>
 </div>
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
index 98b0a92..63312c7 100644
--- 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
@@ -57,13 +57,13 @@
 
 				<@s.textfield label="Enter Some Text" name="text" />
 
-				<@s.submit action="actionPrefix" value="%{'action prefix'}" cssClass="btn" />
+				<@s.submit action="actionPrefix" value="%{'action prefix'}" cssClass="btn" escapeHtmlBody="false" />
 
-				<@s.submit method="alternateMethod" value="%{'method prefix'}" cssClass="btn" />
+				<@s.submit method="alternateMethod" value="%{'method prefix'}" cssClass="btn" escapeHtmlBody="false" />
 
-				<@s.submit value="Normal Submit" cssClass="btn" />
+				<@s.submit value="Normal Submit" cssClass="btn" escapeHtmlBody="false" />
 
-	            <@s.submit action="redirectActionPrefixAction" value="%{'redirectAction without prefix'}" cssClass="btn" />
+	            <@s.submit action="redirectActionPrefixAction" value="%{'redirectAction without prefix'}" cssClass="btn" escapeHtmlBody="false" />
 
 	        </...@s.form>
 		</div>
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
index e146040..b94bf6d 100644
--- 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
@@ -35,7 +35,7 @@
 	
 			<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>
+			<@s.a href="javascript:history.back();" cssClass="btn btn-info" escapeHtmlBody="false"><i class="icon icon-arrow-left"></i> Back</...@s.a>
 		</div>
 	</div>
 </div>
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
index a1431f7..3052ff1 100644
--- 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
@@ -35,7 +35,7 @@
 	
 			<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>
+			<@s.a href="javascript:history.back();" cssClass="btn btn-info" escapeHtmlBody="false"><i class="icon icon-arrow-left"></i> Back</...@s.a>
 		</div>
 	</div>
 </div>
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
index 481ad97..602f6be 100644
--- 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
@@ -38,7 +38,7 @@
 
 			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>
+			<@s.a href="javascript:history.back();" cssClass="btn btn-info" escapeHtmlBody="false"><i class="icon icon-arrow-left"></i> Back</...@s.a>
 		</div>
 	</div>
 </div>
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
index f69d823..923e4c6 100644
--- a/apps/showcase/src/main/webapp/WEB-INF/tags/ui/example.jsp
+++ b/apps/showcase/src/main/webapp/WEB-INF/tags/ui/example.jsp
@@ -38,7 +38,7 @@
 			<s:fielderror  cssClass="alert alert-error"/>
 
 
-			<s:form action="exampleSubmit" enctype="multipart/form-data" javascriptTooltip="true">
+			<s:form action="exampleSubmit" enctype="multipart/form-data" method="POST" javascriptTooltip="true">
 			    <s:textfield
 			            label="Name"
 			            name="name"
@@ -97,7 +97,7 @@
 			            cssErrorClass="foo" />
 
 			    <s:checkbox
-			            tooltip="Confirmed that your are Over 18"
+			            tooltip="Confirm that you are Over 18"
 			            label="Age 18+"
 			            name="legalAge"/>
 
@@ -114,8 +114,8 @@
 			            emptyOption="true" />
 
 			    <s:doubleselect
-			            tooltip="Choose your Vehical"
-			            label="Favourite Vehical"
+			            tooltip="Choose your Vehicle"
+			            label="Favourite Vehicle"
 			            name="favouriteVehicalType"
 			            list="vehicalTypeList"
 			            listKey="key"
@@ -136,7 +136,7 @@
 
 			    <s:optiontransferselect
 			            tooltip="Select Your Favourite Cartoon Characters"
-			            label="Favourite Cartoons Characters"
+			            label="Favourite Cartoon Characters"
 			            name="leftSideCartoonCharacters"
 			            leftTitle="Left Title"
 			            rightTitle="Right Title"
@@ -153,7 +153,7 @@
 			            doubleMultiple="true" />
 
 			    <s:textarea
-			            label="Your Thougths"
+			            label="Your Thoughts"
 			            name="thoughts"
 			            tooltip="Enter your thoughts here" />
 
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
index 1e52a6d..c7ca931 100644
--- a/apps/showcase/src/main/webapp/WEB-INF/tags/ui/example.vm
+++ b/apps/showcase/src/main/webapp/WEB-INF/tags/ui/example.vm
@@ -31,16 +31,20 @@
 		<div class="col-md-12">
 
 			#sform ("action=exampleSubmitVelocity" "method=post" "enctype=multipart/form-data")
-			    #stextfield ("label=Name" "name=name")
-			    #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" "doubleMul [...]
+			    #stextfield ("label=Name" "name=name" "tooltip=Enter your Name here")
+                            #stextfield ("label=Birthday" "name=birthday" "tooltip=Select Your Birthday")
+                            #stextfield ("label=Wake up time" "name=wakeup" "tooltip=Enter the time you wake up")
+			    #stextarea ("label=Biography" "name=bio" "tooltip=Enter your Biography" "cols=20" "rows=3")
+			    #sselect ("label=Favourite Color" "tooltip=Choose Your Favourite Color" "list={'Red', 'Blue', 'Green'}" "name=favouriteColor" "emptyOption=true" "headerKey=None" "headerValue=None")
+			    #sselect ("label=Favourite Language" "tooltip=Choose Your Favourite Language" "list=favouriteLanguages" "name=favouriteLanguage" "listKey=key" "listValue=description" "emptyOption=true" "headerKey=None" "headerValue=None")
+			    #scheckboxlist ("label=Friends" "tooltip=Choose your Friends" "list={'Wes', 'Patrick', 'Jason', 'Jay', 'Toby', 'Rene'}" "name=friends")
+                            #sradio ("label=Best Friend" "tooltip=Choose your Best Friend" "list={'Wes', 'Patrick', 'Jason', 'Jay', 'Toby', 'Rene'}" "name=bestFriend" "cssErrorClass=foo")
+			    #scheckbox ("label=Age 18+" "name=legalAge" "tooltip=Confirm that you are Over 18")
+			    #sdoubleselect ("label=State" "name=region" "tooltip=Choose Your State" "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 Vehicle" "name=favouriteVehicalType" "tooltip=Choose your Vehicle" "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" "tooltip=Upload Your Picture")
+			    #soptiontransferselect ("label=Favourite Cartoon Characters" "name=leftSideCartoonCharacters" "tooltip=Select Your Favourite Cartoon Characters" "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=--- Plea [...]
+                            #stextarea ("label=Your Thoughts" "name=thoughts" "tooltip=Enter your thoughts here" "cols=20" "rows=3")
 			    #ssubmit("cssClass=btn btn-primary")
 			    #sreset("cssClass=btn btn-danger")
 			#end
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
index 75560ba..ac87d1d 100644
--- a/apps/showcase/src/main/webapp/WEB-INF/tags/ui/exampleSubmited.jsp
+++ b/apps/showcase/src/main/webapp/WEB-INF/tags/ui/exampleSubmited.jsp
@@ -36,8 +36,8 @@
 			    <s:label label="Name" name="name" />
 			    <s:label label="Birthday" name="birthday" />
 			    <tr>
-			        <td><label class="label">Wake up time:</label></td>
-			        <td>
+			        <td class="tdLabel"><label class="label">Wake up time:</label></td>
+			        <td class="tdInput">
 			           <s:date name="wakeup" format="hh:mm aa" />
 			        </td>
 			    </tr>
@@ -50,22 +50,24 @@
 			    <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" />
+			    <s:label label="Favourite Vehicle Type" name="favouriteVehicalType" />
+			    <s:label label="Favourite Vehicle Specific" name="favouriteVehicalSpecific" />
 			    <tr>
-			        <td><label class="label">Favourite Cartoon Characters (Left):</label></td>
-			        <td>
+			        <td class="tdLabel"><label class="label">Favourite Cartoon Characters (Left):</label></td>
+			        <td class="tdInput"><label>
 			            <s:iterator value="leftSideCartoonCharacters" status="stat">
 			                <s:property value="%{#stat.count}" />.<s:property value="top" />&nbsp;
 			            </s:iterator>
+                                    </label>
 			        </td>
 			    </tr>
 			    <tr>
-			        <td><label class="label">Favourite Cartoon Characters (Right):</label></td>
-			        <td>
+			        <td class="tdLabel"><label class="label">Favourite Cartoon Characters (Right):</label></td>
+			        <td class="tdInput"><label>
 			            <s:iterator value="rightSideCartoonCharacters" status="stat">
 			                <s:property value="%{#stat.count}" />.<s:property value="top" />&nbsp;
 			            </s:iterator>
+                                    </label>
 			        </td>
 			    </tr>
 			    <s:label label="Thoughts" name="thoughts" />
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
index f0f0369..e159bef 100644
--- a/apps/showcase/src/main/webapp/WEB-INF/tags/ui/exampleSubmited.vm
+++ b/apps/showcase/src/main/webapp/WEB-INF/tags/ui/exampleSubmited.vm
@@ -33,41 +33,45 @@
 				#slabel ("label=Name" "name=name")
 				#slabel ("label=Birthday" "name=birthday")
 				<tr>
-			        <td><label class="label">Wake up time:</label></td>
-			        <td>
+			        <td class="tdLabel"><label class="label">Wake up time:</label></td>
+			        <td class="tdInput">
 			           #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=Best Friend" "name=bestFriend")
 				#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")
+				#slabel ("label=Favourite Vehicle Type" "name=favouriteVehicalType")
+				#slabel ("label=Favourite Vehicle Specific" "name=favouriteVehicalSpecific")
 				<tr>
-					<td>Favourite Cartoon Characters (Left):</td>
-					<td>
+					<td class="tdLabel"><label class="label">Favourite Cartoon Characters (Left):</label></td>
+					<td class="tdInput"><label>
 			            #set ( $startCount = 1)
 					    #foreach( $item in $leftSideCartoonCharacters)
 							$startCount.${item}&nbsp;
 							#set ( $startCount = $startCount + 1)
 			            #end
+                                          </label>
 					</td>
 				</tr>
 				<tr>
-					<td>Favourite Cartoon Characters (Right):</td>
-					<td>
+					<td class="tdLabel"><label class="label">Favourite Cartoon Characters (Right):</label></td>
+					<td class="tdInput"><label>
 			            #set ( $startCount = 1)
 					    #foreach( $item in $rightSideCartoonCharacters)
 							$startCount.${item}&nbsp;
 							#set ( $startCount = $startCount + 1)
 			            #end
+                                          </label>
 					</td>
 				</tr>
+                                #slabel ("label=Thoughts" "name=thoughts")
 			</table>
 		</div>
 	</div>
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
index b139967..dccf8da 100644
--- a/apps/showcase/src/main/webapp/WEB-INF/tags/ui/lotsOfOptiontransferselectSubmit.jsp
+++ b/apps/showcase/src/main/webapp/WEB-INF/tags/ui/lotsOfOptiontransferselectSubmit.jsp
@@ -110,7 +110,7 @@
 		     <tr>
 		        <td>Non Favourite Sports:</td>
 		        <td>
-		            <s:iterator value="nonfavouriteSports" status="stat">
+		            <s:iterator value="nonFavouriteSports" status="stat">
 		                <s:property value="%{#stat.count}" />.<s:property />&nbsp;
 		            </s:iterator>
 		        </td>
diff --git a/apps/showcase/src/main/webapp/WEB-INF/token/example4.ftl b/apps/showcase/src/main/webapp/WEB-INF/token/example4.ftl
index 19dac01..e97fa08 100644
--- a/apps/showcase/src/main/webapp/WEB-INF/token/example4.ftl
+++ b/apps/showcase/src/main/webapp/WEB-INF/token/example4.ftl
@@ -51,7 +51,7 @@
 		<@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.submit value="Transfer money" cssClass="btn btn-primary" escapeHtmlBody="false"/>
 		</...@s.form>
 		</div>
 	</div>