Author: husted Date: Sun Jan 14 19:50:06 2007 New Revision: 496221 URL: http://svn.apache.org/viewvc?view=rev&rev=496221 Log: WW-1588 - Update showcase remarks. Start to add second use case to file upload. WW-1598 - Apply updates per Dariusz Wojtas
Added: struts/struts2/trunk/apps/showcase/src/main/webapp/images/images.zip (with props) Modified: struts/struts2/trunk/apps/showcase/src/main/java/org/apache/struts2/showcase/filedownload/FileDownloadAction.java struts/struts2/trunk/apps/showcase/src/main/resources/struts-filedownload.xml struts/struts2/trunk/apps/showcase/src/main/webapp/WEB-INF/decorators/main.jsp struts/struts2/trunk/apps/showcase/src/main/webapp/ajax/index.jsp struts/struts2/trunk/apps/showcase/src/main/webapp/ajax/remoteforms/index.jsp struts/struts2/trunk/apps/showcase/src/main/webapp/ajax/tabbedpanel/index.jsp struts/struts2/trunk/apps/showcase/src/main/webapp/filedownload/index.jsp struts/struts2/trunk/apps/showcase/src/main/webapp/hangman/hangmanMenu.ftl struts/struts2/trunk/apps/showcase/src/main/webapp/showcase.jsp struts/struts2/trunk/apps/showcase/src/main/webapp/tags/ui/example.jsp struts/struts2/trunk/apps/showcase/src/main/webapp/tags/ui/example.vm struts/struts2/trunk/apps/showcase/src/main/webapp/tags/ui/timepicker/index.jsp struts/struts2/trunk/apps/showcase/src/main/webapp/validation/index.jsp struts/struts2/trunk/core/src/main/resources/META-INF/struts-tags.tld struts/struts2/trunk/core/src/main/resources/template/ajax/dojoRequire.js struts/struts2/trunk/core/src/main/resources/template/ajax/textarea.ftl Modified: struts/struts2/trunk/apps/showcase/src/main/java/org/apache/struts2/showcase/filedownload/FileDownloadAction.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/apps/showcase/src/main/java/org/apache/struts2/showcase/filedownload/FileDownloadAction.java?view=diff&rev=496221&r1=496220&r2=496221 ============================================================================== --- struts/struts2/trunk/apps/showcase/src/main/java/org/apache/struts2/showcase/filedownload/FileDownloadAction.java (original) +++ struts/struts2/trunk/apps/showcase/src/main/java/org/apache/struts2/showcase/filedownload/FileDownloadAction.java Sun Jan 14 19:50:06 2007 @@ -27,15 +27,20 @@ import com.opensymphony.xwork2.Action; /** - * Action to demonstrate how to use file download. - * <p/> - * This action is used to download a jpeg file from the image folder. + * Demonstrates file resource download. + * Set filePath to the local file resource to download, + * relative to the application root ("/images/struts.gif"). * */ public class FileDownloadAction implements Action { + private String filePath; + public void setFilePath(String value) { + filePath = value; + } + public InputStream getImageStream() throws Exception { - return ServletActionContext.getServletContext().getResourceAsStream("/images/struts.gif"); + return ServletActionContext.getServletContext().getResourceAsStream(filePath); } public String execute() throws Exception { Modified: struts/struts2/trunk/apps/showcase/src/main/resources/struts-filedownload.xml URL: http://svn.apache.org/viewvc/struts/struts2/trunk/apps/showcase/src/main/resources/struts-filedownload.xml?view=diff&rev=496221&r1=496220&r2=496221 ============================================================================== --- struts/struts2/trunk/apps/showcase/src/main/resources/struts-filedownload.xml (original) +++ struts/struts2/trunk/apps/showcase/src/main/resources/struts-filedownload.xml Sun Jan 14 19:50:06 2007 @@ -10,15 +10,23 @@ <default-action-ref name="download"/> <action name="download" class="org.apache.struts2.showcase.filedownload.FileDownloadAction"> + <param name="filePath">\images\struts.gif</param> <result name="success" type="stream"> <param name="contentType">image/jpeg</param> <param name="inputName">imageStream</param> - <param name="contentDisposition">filename="logo.png"</param> + <param name="contentDisposition">filename="struts.gif"</param> <param name="bufferSize">4096</param> </result> </action> + <action name="download2" class="org.apache.struts2.showcase.filedownload.FileDownloadAction"> + <param name="filePath">\images\struts.zip</param> + <result name="success" type="stream"> + <param name="contentType">application/zip</param> + <param name="inputName">imageStream</param> + <param name="contentDisposition">filename="struts-gif.zip"</param> + <param name="bufferSize">4096</param> + </result> + </action> </package> </struts> - - Modified: struts/struts2/trunk/apps/showcase/src/main/webapp/WEB-INF/decorators/main.jsp URL: http://svn.apache.org/viewvc/struts/struts2/trunk/apps/showcase/src/main/webapp/WEB-INF/decorators/main.jsp?view=diff&rev=496221&r1=496220&r2=496221 ============================================================================== --- struts/struts2/trunk/apps/showcase/src/main/webapp/WEB-INF/decorators/main.jsp (original) +++ struts/struts2/trunk/apps/showcase/src/main/webapp/WEB-INF/decorators/main.jsp Sun Jan 14 19:50:06 2007 @@ -77,24 +77,23 @@ <div class="wrapper"> <h2 class="accessibility">Navigation</h2> <ul class="clearfix"> - <li><a href="<s:url value="/showcase.jsp"/>">Home</a></li> - <li><a href="<s:url value="/ajax/index.jsp"/>">AJAX</a></li> - <li><a href="<s:url action="actionChain1!input" namespace="/actionchaining" includeParams="none" />">Action Chaining</a></li> - <li><a href="<s:url action="index" namespace="/config-browser" includeParams="none" />">Config Browser</a></li> - <li><a href="<s:url value="/conversion/index.jsp"/>">Conversion</a></li> - <li><a href="<s:url value="/empmanager/index.jsp"/>">CRUD</a></li> - <li><a href="<s:url value="/wait/index.jsp"/>">Execute & Wait</a></li> - <li><a href="<s:url value="/filedownload/index.jsp"/>">File Download</a></li> - <li><a href="<s:url value="/fileupload" />">File Upload</a></li> - <li><a href="<s:url value="/freemarker/index.jsp"/>">Freemarker</a> - <li><a href="<s:url action="hangmanMenu" namespace="/hangman"/>">Hangman</a></li> - <li><a href="<s:url value="/jsf/index.jsp"/>">JavaServer Faces</a></li> - <li><a href="<s:url value="/person/index.jsp"/>">Person Manager</a></li> - <li><a href="<s:url value="/tags/index.jsp"/>">Tags</a></li> - <li><a href="<s:url value="/tiles/index.action" />">Tiles</a></li> - <li><a href="<s:url value="/token/index.jsp"/>">Token</a></li> - <li><a href="<s:url value="/validation/index.jsp"/>">Validation</a></li> - <li class="last"><a href="<s:url value="/help.jsp"/>">Help</a></li> + <li><a href="<s:url value="/showcase.jsp"/>">Home</a></li> + <li><a href="<s:url action="actionChain1!input" namespace="/actionchaining" includeParams="none" />">Action Chaining</a></li> + <li><a href="<s:url action="index" namespace="/config-browser" includeParams="none" />">Config Browser</a></li> + <li><a href="<s:url value="/conversion/index.jsp"/>">Conversion</a></li> + <li><a href="<s:url value="/empmanager/index.jsp"/>">CRUD</a></li> + <li><a href="<s:url value="/wait/index.jsp"/>">Execute & Wait</a></li> + <li><a href="<s:url value="/filedownload/index.jsp"/>">File Download</a></li> + <li><a href="<s:url value="/fileupload" />">File Upload</a></li> + <li><a href="<s:url value="/freemarker/index.jsp"/>">Freemarker</a> + <li><a href="<s:url action="hangmanMenu" namespace="/hangman"/>">Hangman</a></li> + <li><a href="<s:url value="/jsf/index.jsp"/>">JavaServer Faces</a></li> + <li><a href="<s:url value="/person/index.jsp"/>">Person Manager</a></li> + <li><a href="<s:url value="/tags/index.jsp"/>">Tags</a></li> + <li><a href="<s:url value="/tiles/index.action" />">Tiles</a></li> + <li><a href="<s:url value="/token/index.jsp"/>">Token</a></li> + <li><a href="<s:url value="/validation/index.jsp"/>">Validation</a></li> + <li class="last"><a href="<s:url value="/help.jsp"/>">Help</a></li> </ul> </div> <hr/> Modified: struts/struts2/trunk/apps/showcase/src/main/webapp/ajax/index.jsp URL: http://svn.apache.org/viewvc/struts/struts2/trunk/apps/showcase/src/main/webapp/ajax/index.jsp?view=diff&rev=496221&r1=496220&r2=496221 ============================================================================== --- struts/struts2/trunk/apps/showcase/src/main/webapp/ajax/index.jsp (original) +++ struts/struts2/trunk/apps/showcase/src/main/webapp/ajax/index.jsp Sun Jan 14 19:50:06 2007 @@ -5,16 +5,16 @@ <h1>AJAX Example</h1> -Note: these examples have only been tested under FireFox 1.5 and IE 6. +Note: The Ajax tags are experimental. These examples have only been tested under FireFox 1.5 and IE 6. <ul> - <li><a href="remotediv">Remote div tag</a></li> <li><a href="autocompleter">Autocompleter combobox tag</a></li> + <li><a href="remotebutton">Remote button tag</a></li> + <li><a href="remotediv">Remote div tag</a></li> <li><a href="remotelink">Remote link tag</a></li> - <li><a href="remotebutton">Remote button tag</a></li> <li><a href="tabbedpanel">Tabbed panel</a></li> - <li><a href="remoteforms">Remote forms</a></li> - <li><a href="widgets">Widgets </a> (experimental - may not work in all browsers + <li>(broken) <a href="remoteforms">Remote forms</a></li> + <li>(broken) <a href="widgets">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> Modified: struts/struts2/trunk/apps/showcase/src/main/webapp/ajax/remoteforms/index.jsp URL: http://svn.apache.org/viewvc/struts/struts2/trunk/apps/showcase/src/main/webapp/ajax/remoteforms/index.jsp?view=diff&rev=496221&r1=496220&r2=496221 ============================================================================== --- struts/struts2/trunk/apps/showcase/src/main/webapp/ajax/remoteforms/index.jsp (original) +++ struts/struts2/trunk/apps/showcase/src/main/webapp/ajax/remoteforms/index.jsp Sun Jan 14 19:50:06 2007 @@ -4,7 +4,7 @@ <html> <head> <title>Ajax Examples</title> - <jsp:include page="/ajax/commonInclude.jsp"/> + <s:head theme="ajax"/> <script language="JavaScript" type="text/javascript"> function doSomething() { @@ -59,7 +59,7 @@ <input type='text' name='data' value='Struts User'> - <s:submit value="GO4" theme="ajax" afterLoading="alert('form submitted');"/> + <s:submit value="GO4" theme="ajax"/> </s:form> @@ -73,7 +73,7 @@ <input type='text' name='data' value='Struts User'> - <s:submit value="GO3" theme="ajax" targets="theForm5" beforeLoading="confirm('sure?');"/> + <s:submit value="GO3" theme="ajax" targets="theForm5" /> </s:form> @@ -87,7 +87,7 @@ <input type='text' name='data' value='Struts User'> - <s:submit value="GO3" theme="ajax" targets="theForm6" beforeLoading="doSomething();"/> + <s:submit value="GO3" theme="ajax" targets="theForm6" /> </s:form> @@ -104,8 +104,6 @@ <s:submit value="Go AWAY" targets="theForm7" /> </s:form> - -<s:include value="../footer.jsp"/> </body> </html> Modified: struts/struts2/trunk/apps/showcase/src/main/webapp/ajax/tabbedpanel/index.jsp URL: http://svn.apache.org/viewvc/struts/struts2/trunk/apps/showcase/src/main/webapp/ajax/tabbedpanel/index.jsp?view=diff&rev=496221&r1=496220&r2=496221 ============================================================================== --- struts/struts2/trunk/apps/showcase/src/main/webapp/ajax/tabbedpanel/index.jsp (original) +++ struts/struts2/trunk/apps/showcase/src/main/webapp/ajax/tabbedpanel/index.jsp Sun Jan 14 19:50:06 2007 @@ -12,7 +12,7 @@ <p> <ol> <li><a href="example2.jsp">A local tabbed panel width fixed size (doLayout="true")</a></li> - <li><a href="example3.jsp">A remote(href != "") and local tabbed panel</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="example4.jsp">A local tabbed panel width fixed size (doLayout="true") with close button on tabs(closeButton="tab"), and tabs on the right (labelposition="right")</a></li> <li><a href="example5.jsp">A local tabbed panel width fixed size (doLayout="true") with close button on the tab pane (closeButton="pane"), and tabs on the bottom (labelposition="bottom")</a></li> Modified: struts/struts2/trunk/apps/showcase/src/main/webapp/filedownload/index.jsp URL: http://svn.apache.org/viewvc/struts/struts2/trunk/apps/showcase/src/main/webapp/filedownload/index.jsp?view=diff&rev=496221&r1=496220&r2=496221 ============================================================================== --- struts/struts2/trunk/apps/showcase/src/main/webapp/filedownload/index.jsp (original) +++ struts/struts2/trunk/apps/showcase/src/main/webapp/filedownload/index.jsp Sun Jan 14 19:50:06 2007 @@ -1,13 +1,22 @@ <%@ taglib prefix="s" uri="/struts-tags" %> <html> <head> - <title>Showcase</title> + <title>Showcase - Fileupload</title> </head> <body> <h1>File Download Example</h1> - Click this <s:url id="url" action="download"/><s:a href="%{url}">link</s:a> to download Struts logo. + <ul> + <li> + <s:url id="url" action="download"/><s:a href="%{url}">Download image file.</s:a> + The browser should display the Struts logo. + </li> + <li> + (broken) <s:url id="url" action="download2"/><s:a href="%{url}">Download ZIP file.</s:a> + The browser should prompt for a location to save the ZIP file. + </li> + </ul> </body> </html> Modified: struts/struts2/trunk/apps/showcase/src/main/webapp/hangman/hangmanMenu.ftl URL: http://svn.apache.org/viewvc/struts/struts2/trunk/apps/showcase/src/main/webapp/hangman/hangmanMenu.ftl?view=diff&rev=496221&r1=496220&r2=496221 ============================================================================== --- struts/struts2/trunk/apps/showcase/src/main/webapp/hangman/hangmanMenu.ftl (original) +++ struts/struts2/trunk/apps/showcase/src/main/webapp/hangman/hangmanMenu.ftl Sun Jan 14 19:50:06 2007 @@ -6,13 +6,13 @@ <body> <ul> <li> - <@s.url id="url" action="hangmanAjax" namespace="/hangman" /> - <@s.a href="%{#url}">Hangman (Ajax)</@s.a> - </li> - <li> <@s.url id="url" action="hangmanNonAjax" namespace="/hangman" /> <@s.a href="%{#url}">Hangman (Non Ajax)</@s.a> </li> + <li> + <@s.url id="url" action="hangmanAjax" namespace="/hangman" /> + <@s.a href="%{#url}">Hangman (Ajax - Experimental)</@s.a> + </li> </ul> </body> </html> Added: struts/struts2/trunk/apps/showcase/src/main/webapp/images/images.zip URL: http://svn.apache.org/viewvc/struts/struts2/trunk/apps/showcase/src/main/webapp/images/images.zip?view=auto&rev=496221 ============================================================================== Binary file - no diff available. Propchange: struts/struts2/trunk/apps/showcase/src/main/webapp/images/images.zip ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Modified: struts/struts2/trunk/apps/showcase/src/main/webapp/showcase.jsp URL: http://svn.apache.org/viewvc/struts/struts2/trunk/apps/showcase/src/main/webapp/showcase.jsp?view=diff&rev=496221&r1=496220&r2=496221 ============================================================================== --- struts/struts2/trunk/apps/showcase/src/main/webapp/showcase.jsp (original) +++ struts/struts2/trunk/apps/showcase/src/main/webapp/showcase.jsp Sun Jan 14 19:50:06 2007 @@ -12,33 +12,34 @@ </head> <body> - <p> - The Struts Showcase demonstrates a variety of use cases and tag usages. - Essentially, the application exercises various framework features in isolation. - <em>The Showcase is <strong>not</strong> meant as a "best practices" example.</em> - </p> - <ul> - <li> - For more "by example" solutions, - see the <a href="http://struts.apache.org/2.x/docs/cookbook.html">Struts Cookbook</a> pages. - </li> - <li> - For a "best practices" example, see the - <a href="http://planetstruts.org/struts2-mailreader/">MailReader application</a> Tour and source code. - </li> - </ul> + <blockquote> + <p> + The Struts Showcase demonstrates a variety of use cases and tag usages. + Essentially, the application exercises various framework features in isolation. + <em>The Showcase is <strong>not</strong> meant as a "best practices" example.</em> + </p> + <ul> + <li> + For more "by example" solutions, + see the <a href="http://struts.apache.org/2.x/docs/cookbook.html">Struts Cookbook</a> pages. + </li> + <li> + For a "best practices" example, see the + <a href="http://planetstruts.org/struts2-mailreader/">MailReader application</a> Tour and source code. + </li> + </ul> + </blockquote> <p> <%-- THIS LIST IS MAINTAINED IN WEB-INF/decorators/main.jsp TO CREATE THE MENU BAR -- EDIT THERE AND COPY HERE --%> <ul> - <li><a href="<s:url value="/showcase.jsp"/>">Home</a></li> - <li><a href="<s:url value="/ajax/index.jsp"/>">AJAX</a></li> + <li><a href="<s:url value="/showcase.jsp"/>">Home</a></li> <li><a href="<s:url action="actionChain1!input" namespace="/actionchaining" includeParams="none" />">Action Chaining</a></li> <li><a href="<s:url action="index" namespace="/config-browser" includeParams="none" />">Config Browser</a></li> <li><a href="<s:url value="/conversion/index.jsp"/>">Conversion</a></li> <li><a href="<s:url value="/empmanager/index.jsp"/>">CRUD</a></li> <li><a href="<s:url value="/wait/index.jsp"/>">Execute & Wait</a></li> <li><a href="<s:url value="/filedownload/index.jsp"/>">File Download</a></li> - <li><a href="<s:url value="/fileupload" />">File Upload</a></li> + <li><a href="<s:url value="/fileupload/index.jsp" />">File Upload</a></li> <li><a href="<s:url value="/freemarker/index.jsp"/>">Freemarker</a> <li><a href="<s:url action="hangmanMenu" namespace="/hangman"/>">Hangman</a></li> <li><a href="<s:url value="/jsf/index.jsp"/>">JavaServer Faces</a></li> @@ -55,25 +56,11 @@ These examples are under development and may not be fully operational. </p> <ul> - <li>AJAX / Remote Forms</li> - <li><a href="<s:url value="/chat/index.jsp"/>">Chat (AJAX)</a> + <li><a href="<s:url value="/ajax/index.jsp" />">Ajax Theme for Struts Tags</a></li> + <li><a href="<s:url value="/chat/index.jsp"/>">Ajax Chat</a> <li><a href="<s:url action="guess" namespace="/continuations" />">Continuations</a></li> - <li>Conversion<ul> - <li>Address</li> - <li>Java 5 Enum</li> - </ul> - </li> - <li>Tabs / Non-UI Tags<ul> - <li> - Action Prefix / Redirect Action - </li> - </ul> - - </li> - <li>Tags / UI Tags<ul> - <li>UI Example</li> - <li>UI Example (Velocity)</li> - </ul> + <li> + Filedownload / ZIP file </li> </ul> Modified: struts/struts2/trunk/apps/showcase/src/main/webapp/tags/ui/example.jsp URL: http://svn.apache.org/viewvc/struts/struts2/trunk/apps/showcase/src/main/webapp/tags/ui/example.jsp?view=diff&rev=496221&r1=496220&r2=496221 ============================================================================== --- struts/struts2/trunk/apps/showcase/src/main/webapp/tags/ui/example.jsp (original) +++ struts/struts2/trunk/apps/showcase/src/main/webapp/tags/ui/example.jsp Sun Jan 14 19:50:06 2007 @@ -26,7 +26,7 @@ <s:textarea tooltip="Enter your Biography" - label="Biograph" + label="Biography" name="bio" cols="20" rows="3"/> Modified: struts/struts2/trunk/apps/showcase/src/main/webapp/tags/ui/example.vm URL: http://svn.apache.org/viewvc/struts/struts2/trunk/apps/showcase/src/main/webapp/tags/ui/example.vm?view=diff&rev=496221&r1=496220&r2=496221 ============================================================================== --- struts/struts2/trunk/apps/showcase/src/main/webapp/tags/ui/example.vm (original) +++ struts/struts2/trunk/apps/showcase/src/main/webapp/tags/ui/example.vm Sun Jan 14 19:50:06 2007 @@ -13,7 +13,7 @@ #sform ("action=exampleSubmitVelocity" "method=post" "enctype=multipart/form-data") #stextfield ("label=Name" "name=name") #sdatetimepicker ("label=Birthday" "name=birthday") - #stextarea ("label=Biograph" "name=bio" "cols=20" "rows=3") + #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") Modified: struts/struts2/trunk/apps/showcase/src/main/webapp/tags/ui/timepicker/index.jsp URL: http://svn.apache.org/viewvc/struts/struts2/trunk/apps/showcase/src/main/webapp/tags/ui/timepicker/index.jsp?view=diff&rev=496221&r1=496220&r2=496221 ============================================================================== --- struts/struts2/trunk/apps/showcase/src/main/webapp/tags/ui/timepicker/index.jsp (original) +++ struts/struts2/trunk/apps/showcase/src/main/webapp/tags/ui/timepicker/index.jsp Sun Jan 14 19:50:06 2007 @@ -10,10 +10,11 @@ <s:datetimepicker label="toggleType='wipe'" type="time" value="10:30" toggleType="wipe" toggleDuration="300"/> <s:datetimepicker label="toggleType='explode'" type="time" value="13:00" toggleType="explode" toggleDuration="500"/> <s:datetimepicker label="toggleType='fade'" type="time" value="13:00" toggleType="fade" toggleDuration="500"/> -<s:datetimepicker label="With value='today'" type="time" name="dddp1" value="today" /> -<s:datetimepicker label="US format, empty" type="time" name="dddp2" language="en-us" /> -<s:datetimepicker label="In German" type="time" name="dddp7" language="de" /> -<s:datetimepicker label="In Dutch" type="time" name="dddp8" language="nl" /> +<s:datetimepicker label="With value='today'" name="dddp4" type="time" value="today" /> +<s:datetimepicker label="US format, empty" name="dddp5" type="time" language="en-us" /> +<s:datetimepicker label="US format, 13:00 hours" name="dddp6" type="time" value="13:00" language="en-us" /> +<s:datetimepicker label="In German" name="dddp7" type="time" value="13:00" language="de" /> +<s:datetimepicker label="In Dutch" name="dddp8" type="time" value="13:00" language="nl" /> </table> </body> </html> Modified: struts/struts2/trunk/apps/showcase/src/main/webapp/validation/index.jsp URL: http://svn.apache.org/viewvc/struts/struts2/trunk/apps/showcase/src/main/webapp/validation/index.jsp?view=diff&rev=496221&r1=496220&r2=496221 ============================================================================== --- struts/struts2/trunk/apps/showcase/src/main/webapp/validation/index.jsp (original) +++ struts/struts2/trunk/apps/showcase/src/main/webapp/validation/index.jsp Sun Jan 14 19:50:06 2007 @@ -29,7 +29,7 @@ <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="%{quizAjax}">Validation (ajax)</s:a></li> + <li>(broken) <s:a href="%{quizAjax}">Validation (ajax)</s:a></li> <li><s:a href="%{fieldValidatorUrl}">Field Validators</s:a></li> <li><s:a href="%{nonFieldValidatorUrl}">Non Field Validator</s:a></li> <li><s:a href="%{visitorValidatorUrl}">Visitor Validator</s:a></li>