Modified: websites/production/struts/content/docs/security-bulletins.html ============================================================================== --- websites/production/struts/content/docs/security-bulletins.html (original) +++ websites/production/struts/content/docs/security-bulletins.html Mon Feb 29 19:38:05 2016 @@ -126,7 +126,7 @@ under the License. <div class="pagecontent"> <div class="wiki-content"> <div id="ConfluenceContent"><p>The following security bulletins are available:</p> -<ul class="childpages-macro"><li><a shape="rect" href="s2-001.html">S2-001</a> — <span class="smalltext">Remote code exploit on form validation error</span></li><li><a shape="rect" href="s2-002.html">S2-002</a> — <span class="smalltext">Cross site scripting (XSS) vulnerability on <s:url> and <s:a> tags</span></li><li><a shape="rect" href="s2-003.html">S2-003</a> — <span class="smalltext">XWork ParameterInterceptors bypass allows OGNL statement execution</span></li><li><a shape="rect" href="s2-004.html">S2-004</a> — <span class="smalltext">Directory traversal vulnerability while serving static content</span></li><li><a shape="rect" href="s2-005.html">S2-005</a> — <span class="smalltext">XWork ParameterInterceptors bypass allows remote command execution</span></li><li><a shape="rect" href="s2-006.html">S2-006</a> — <span class="smalltext">Multiple Cross-Site Scripting (XSS) in XWork generated error pages</span></li><li><a shape="rect" hr ef="s2-007.html">S2-007</a> — <span class="smalltext">User input is evaluated as an OGNL expression when there's a conversion error</span></li><li><a shape="rect" href="s2-008.html">S2-008</a> — <span class="smalltext">Multiple critical vulnerabilities in Struts2</span></li><li><a shape="rect" href="s2-009.html">S2-009</a> — <span class="smalltext">ParameterInterceptor vulnerability allows remote command execution</span></li><li><a shape="rect" href="s2-010.html">S2-010</a> — <span class="smalltext">When using Struts 2 token mechanism for CSRF protection, token check may be bypassed by misusing known session attributes</span></li><li><a shape="rect" href="s2-011.html">S2-011</a> — <span class="smalltext">Long request parameter names might significantly promote the effectiveness of DOS attacks</span></li><li><a shape="rect" href="s2-012.html">S2-012</a> — <span class="smalltext">Showcase app vulnerability allows remote command execution</span></li> <li><a shape="rect" href="s2-013.html">S2-013</a> — <span class="smalltext">A vulnerability, present in the includeParams attribute of the URL and Anchor Tag, allows remote command execution</span></li><li><a shape="rect" href="s2-014.html">S2-014</a> — <span class="smalltext">A vulnerability introduced by forcing parameter inclusion in the URL and Anchor Tag allows remote command execution, session access and manipulation and XSS attacks</span></li><li><a shape="rect" href="s2-015.html">S2-015</a> — <span class="smalltext">A vulnerability introduced by wildcard matching mechanism or double evaluation of OGNL Expression allows remote command execution.</span></li><li><a shape="rect" href="s2-016.html">S2-016</a> — <span class="smalltext">A vulnerability introduced by manipulating parameters prefixed with "action:"/"redirect:"/"redirectAction:" allows remote command execution</span></li><li><a shape="rect" href="s2-017.html">S2-017</a> — <span class="sma lltext">A vulnerability introduced by manipulating parameters prefixed with "redirect:"/"redirectAction:" allows for open redirects</span></li><li><a shape="rect" href="s2-018.html">S2-018</a> — <span class="smalltext">Broken Access Control Vulnerability in Apache Struts2</span></li><li><a shape="rect" href="s2-019.html">S2-019</a> — <span class="smalltext">Dynamic Method Invocation disabled by default</span></li><li><a shape="rect" href="s2-020.html">S2-020</a> — <span class="smalltext">Upgrade Commons FileUpload to version 1.3.1 (avoids DoS attacks) and adds 'class' to exclude params in ParametersInterceptor (avoid ClassLoader manipulation)</span></li><li><a shape="rect" href="s2-021.html">S2-021</a> — <span class="smalltext">Improves excluded params in ParametersInterceptor and CookieInterceptor to avoid ClassLoader manipulation</span></li><li><a shape="rect" href="s2-022.html">S2-022</a> — <span class="smalltext">Extends excluded params in CookieInt erceptor to avoid manipulation of Struts' internals</span></li><li><a shape="rect" href="s2-023.html">S2-023</a> — <span class="smalltext">Generated value of token can be predictable</span></li><li><a shape="rect" href="s2-024.html">S2-024</a> — <span class="smalltext">Wrong excludeParams overrides those defined in DefaultExcludedPatternsChecker</span></li><li><a shape="rect" href="s2-025.html">S2-025</a> — <span class="smalltext">Cross-Site Scripting Vulnerability in Debug Mode and in exposed JSP files</span></li><li><a shape="rect" href="s2-026.html">S2-026</a> — <span class="smalltext">Special top object can be used to access Struts' internals</span></li></ul></div> +<ul class="childpages-macro"><li><a shape="rect" href="s2-001.html">S2-001</a> — <span class="smalltext">Remote code exploit on form validation error</span></li><li><a shape="rect" href="s2-002.html">S2-002</a> — <span class="smalltext">Cross site scripting (XSS) vulnerability on <s:url> and <s:a> tags</span></li><li><a shape="rect" href="s2-003.html">S2-003</a> — <span class="smalltext">XWork ParameterInterceptors bypass allows OGNL statement execution</span></li><li><a shape="rect" href="s2-004.html">S2-004</a> — <span class="smalltext">Directory traversal vulnerability while serving static content</span></li><li><a shape="rect" href="s2-005.html">S2-005</a> — <span class="smalltext">XWork ParameterInterceptors bypass allows remote command execution</span></li><li><a shape="rect" href="s2-006.html">S2-006</a> — <span class="smalltext">Multiple Cross-Site Scripting (XSS) in XWork generated error pages</span></li><li><a shape="rect" hr ef="s2-007.html">S2-007</a> — <span class="smalltext">User input is evaluated as an OGNL expression when there's a conversion error</span></li><li><a shape="rect" href="s2-008.html">S2-008</a> — <span class="smalltext">Multiple critical vulnerabilities in Struts2</span></li><li><a shape="rect" href="s2-009.html">S2-009</a> — <span class="smalltext">ParameterInterceptor vulnerability allows remote command execution</span></li><li><a shape="rect" href="s2-010.html">S2-010</a> — <span class="smalltext">When using Struts 2 token mechanism for CSRF protection, token check may be bypassed by misusing known session attributes</span></li><li><a shape="rect" href="s2-011.html">S2-011</a> — <span class="smalltext">Long request parameter names might significantly promote the effectiveness of DOS attacks</span></li><li><a shape="rect" href="s2-012.html">S2-012</a> — <span class="smalltext">Showcase app vulnerability allows remote command execution</span></li> <li><a shape="rect" href="s2-013.html">S2-013</a> — <span class="smalltext">A vulnerability, present in the includeParams attribute of the URL and Anchor Tag, allows remote command execution</span></li><li><a shape="rect" href="s2-014.html">S2-014</a> — <span class="smalltext">A vulnerability introduced by forcing parameter inclusion in the URL and Anchor Tag allows remote command execution, session access and manipulation and XSS attacks</span></li><li><a shape="rect" href="s2-015.html">S2-015</a> — <span class="smalltext">A vulnerability introduced by wildcard matching mechanism or double evaluation of OGNL Expression allows remote command execution.</span></li><li><a shape="rect" href="s2-016.html">S2-016</a> — <span class="smalltext">A vulnerability introduced by manipulating parameters prefixed with "action:"/"redirect:"/"redirectAction:" allows remote command execution</span></li><li><a shape="rect" href="s2-017.html">S2-017</a> — <span class="sma lltext">A vulnerability introduced by manipulating parameters prefixed with "redirect:"/"redirectAction:" allows for open redirects</span></li><li><a shape="rect" href="s2-018.html">S2-018</a> — <span class="smalltext">Broken Access Control Vulnerability in Apache Struts2</span></li><li><a shape="rect" href="s2-019.html">S2-019</a> — <span class="smalltext">Dynamic Method Invocation disabled by default</span></li><li><a shape="rect" href="s2-020.html">S2-020</a> — <span class="smalltext">Upgrade Commons FileUpload to version 1.3.1 (avoids DoS attacks) and adds 'class' to exclude params in ParametersInterceptor (avoid ClassLoader manipulation)</span></li><li><a shape="rect" href="s2-021.html">S2-021</a> — <span class="smalltext">Improves excluded params in ParametersInterceptor and CookieInterceptor to avoid ClassLoader manipulation</span></li><li><a shape="rect" href="s2-022.html">S2-022</a> — <span class="smalltext">Extends excluded params in CookieInt erceptor to avoid manipulation of Struts' internals</span></li><li><a shape="rect" href="s2-023.html">S2-023</a> — <span class="smalltext">Generated value of token can be predictable</span></li><li><a shape="rect" href="s2-024.html">S2-024</a> — <span class="smalltext">Wrong excludeParams overrides those defined in DefaultExcludedPatternsChecker</span></li><li><a shape="rect" href="s2-025.html">S2-025</a> — <span class="smalltext">Cross-Site Scripting Vulnerability in Debug Mode and in exposed JSP files</span></li><li><a shape="rect" href="s2-026.html">S2-026</a> — <span class="smalltext">Special top object can be used to access Struts' internals</span></li><li><a shape="rect" href="s2-027.html">S2-027</a> — <span class="smalltext">TextParseUtil.translateVariables does not filter malicious OGNL expressions</span></li></ul></div> </div> <div class="tabletitle"> @@ -141,6 +141,9 @@ under the License. <span class="smalltext">(Apache Struts 2 Documentation)</span> <br> $page.link($child) + <span class="smalltext">(Apache Struts 2 Documentation)</span> + <br> + $page.link($child) <span class="smalltext">(Apache Struts 2 Documentation)</span> <br> $page.link($child)
Modified: websites/production/struts/content/docs/security.html ============================================================================== --- websites/production/struts/content/docs/security.html (original) +++ websites/production/struts/content/docs/security.html Mon Feb 29 19:38:05 2016 @@ -139,11 +139,11 @@ under the License. <div class="pagecontent"> <div class="wiki-content"> <div id="ConfluenceContent"><p><style type="text/css">/*<![CDATA[*/ -div.rbtoc1453884667082 {padding: 0px;} -div.rbtoc1453884667082 ul {list-style: disc;margin-left: 0px;} -div.rbtoc1453884667082 li {margin-left: 0px;padding-left: 0px;} +div.rbtoc1456773801895 {padding: 0px;} +div.rbtoc1456773801895 ul {list-style: disc;margin-left: 0px;} +div.rbtoc1456773801895 li {margin-left: 0px;padding-left: 0px;} -/*]]>*/</style></p><div class="toc-macro rbtoc1453884667082"> +/*]]>*/</style></p><div class="toc-macro rbtoc1456773801895"> <ul class="toc-indentation"><li><a shape="rect" href="#Security-Securitytips">Security tips</a> <ul class="toc-indentation"><li><a shape="rect" href="#Security-RestrictaccesstotheConfigBrowser">Restrict access to the Config Browser</a></li><li><a shape="rect" href="#Security-Don'tmixdifferentaccesslevelsinthesamenamespace">Don't mix different access levels in the same namespace</a></li><li><a shape="rect" href="#Security-NeverexposeJSPfilesdirectly">Never expose JSP files directly</a></li><li><a shape="rect" href="#Security-DisabledevMode">Disable devMode</a></li><li><a shape="rect" href="#Security-UseUTF-8encoding">Use UTF-8 encoding</a></li></ul> </li><li><a shape="rect" href="#Security-Internalsecuritymechanism">Internal security mechanism</a> Modified: websites/production/struts/content/docs/struts-2-blank-archetype.html ============================================================================== --- websites/production/struts/content/docs/struts-2-blank-archetype.html (original) +++ websites/production/struts/content/docs/struts-2-blank-archetype.html Mon Feb 29 19:38:05 2016 @@ -149,11 +149,11 @@ under the License. <p><strong>Contents</strong></p> <style type="text/css">/*<![CDATA[*/ -div.rbtoc1453884536773 {padding: 0px;} -div.rbtoc1453884536773 ul {list-style: none;margin-left: 0px;padding-left: 1em;} -div.rbtoc1453884536773 li {margin-left: 0px;padding-left: 0px;} +div.rbtoc1456773702121 {padding: 0px;} +div.rbtoc1456773702121 ul {list-style: none;margin-left: 0px;padding-left: 1em;} +div.rbtoc1456773702121 li {margin-left: 0px;padding-left: 0px;} -/*]]>*/</style><div class="toc-macro rbtoc1453884536773"> +/*]]>*/</style><div class="toc-macro rbtoc1456773702121"> <ul class="toc-indentation"><li><span class="TOCOutline">1</span> <a shape="rect" href="#Struts2BlankArchetype-CreatingOurblank-archetypeProject">Creating Our blank-archetype Project</a> <ul class="toc-indentation"><li><span class="TOCOutline">1.1</span> <a shape="rect" href="#Struts2BlankArchetype-Stagingrepository">Staging repository</a></li></ul> </li><li><span class="TOCOutline">2</span> <a shape="rect" href="#Struts2BlankArchetype-ProjectStructure">Project Structure</a> Modified: websites/production/struts/content/docs/struts-2-maven-archetypes.html ============================================================================== --- websites/production/struts/content/docs/struts-2-maven-archetypes.html (original) +++ websites/production/struts/content/docs/struts-2-maven-archetypes.html Mon Feb 29 19:38:05 2016 @@ -143,11 +143,11 @@ under the License. <p><strong>Contents</strong></p> <style type="text/css">/*<![CDATA[*/ -div.rbtoc1453884535519 {padding: 0px;} -div.rbtoc1453884535519 ul {list-style: none;margin-left: 0px;padding-left: 1em;} -div.rbtoc1453884535519 li {margin-left: 0px;padding-left: 0px;} +div.rbtoc1456773703153 {padding: 0px;} +div.rbtoc1456773703153 ul {list-style: none;margin-left: 0px;padding-left: 1em;} +div.rbtoc1456773703153 li {margin-left: 0px;padding-left: 0px;} -/*]]>*/</style><div class="toc-macro rbtoc1453884535519"> +/*]]>*/</style><div class="toc-macro rbtoc1456773703153"> <ul class="toc-indentation"><li><span class="TOCOutline">1</span> <a shape="rect" href="#Struts2MavenArchetypes-Quickstart">Quickstart</a></li><li><span class="TOCOutline">2</span> <a shape="rect" href="#Struts2MavenArchetypes-AvailableArchetypes">Available Archetypes</a> <ul class="toc-indentation"><li><span class="TOCOutline">2.1</span> <a shape="rect" href="#Struts2MavenArchetypes-TheBlankConventionArchetype(struts2-archetype-convention)">The Blank Convention Archetype (struts2-archetype-convention)</a></li><li><span class="TOCOutline">2.2</span> <a shape="rect" href="#Struts2MavenArchetypes-TheBlankArchetype(struts2-archetype-blank)">The Blank Archetype (struts2-archetype-blank)</a></li><li><span class="TOCOutline">2.3</span> <a shape="rect" href="#Struts2MavenArchetypes-TheStarterArchetype(struts2-archetype-starter)">The Starter Archetype (struts2-archetype-starter)</a></li><li><span class="TOCOutline">2.4</span> <a shape="rect" href="#Struts2MavenArchetypes-TheAngularJSArchetype(struts2-archetype-angularjs)">The AngularJS Archetype (struts2-archetype-angularjs)</a></li><li><span class="TOCOutline">2.5</span> <a shape="rect" href="#Struts2MavenArchetypes-ThePortletBlankArchetype(struts2-archetype-portlet)">The Portlet Blank Archetype (struts2-ar chetype-portlet)</a></li><li><span class="TOCOutline">2.6</span> <a shape="rect" href="#Struts2MavenArchetypes-ThePortletDatabaseArchetype(struts2-archetype-dbportlet)">The Portlet Database Archetype (struts2-archetype-dbportlet)</a></li><li><span class="TOCOutline">2.7</span> <a shape="rect" href="#Struts2MavenArchetypes-ThePluginArchetype(struts2-archetype-plugin)">The Plugin Archetype (struts2-archetype-plugin)</a></li></ul> </li><li><span class="TOCOutline">3</span> <a shape="rect" href="#Struts2MavenArchetypes-CreatinganApplicationUsingaMavenArchetype">Creating an Application Using a Maven Archetype</a> Modified: websites/production/struts/content/docs/struts-2-spring-2-jpa-ajax.html ============================================================================== --- websites/production/struts/content/docs/struts-2-spring-2-jpa-ajax.html (original) +++ websites/production/struts/content/docs/struts-2-spring-2-jpa-ajax.html Mon Feb 29 19:38:05 2016 @@ -145,11 +145,11 @@ under the License. <div class="confluence-information-macro confluence-information-macro-tip"><span class="aui-icon aui-icon-small aui-iconfont-approve confluence-information-macro-icon"></span><div class="confluence-information-macro-body"><p>Following this tutorial verbatim will require use of a Struts 2 deployment greater than 2.0.3</p></div></div> <style type="text/css">/*<![CDATA[*/ -div.rbtoc1453884419616 {padding: 0px;} -div.rbtoc1453884419616 ul {list-style: none;margin-left: 0px;} -div.rbtoc1453884419616 li {margin-left: 0px;padding-left: 0px;} +div.rbtoc1456773601716 {padding: 0px;} +div.rbtoc1456773601716 ul {list-style: none;margin-left: 0px;} +div.rbtoc1456773601716 li {margin-left: 0px;padding-left: 0px;} -/*]]>*/</style><div class="toc-macro rbtoc1453884419616"> +/*]]>*/</style><div class="toc-macro rbtoc1456773601716"> <ul class="toc-indentation"><li><a shape="rect" href="#Struts2+Spring2+JPA+AJAX-Prerequisites">Prerequisites</a> <ul class="toc-indentation"><li><a shape="rect" href="#Struts2+Spring2+JPA+AJAX-Tomcat">Tomcat</a></li><li><a shape="rect" href="#Struts2+Spring2+JPA+AJAX-MySql">MySql</a></li></ul> </li><li><a shape="rect" href="#Struts2+Spring2+JPA+AJAX-Getthecode">Get the code</a> Modified: websites/production/struts/content/docs/struts-next.html ============================================================================== --- websites/production/struts/content/docs/struts-next.html (original) +++ websites/production/struts/content/docs/struts-next.html Mon Feb 29 19:38:05 2016 @@ -125,12 +125,12 @@ under the License. <div class="pagecontent"> <div class="wiki-content"> - <div id="ConfluenceContent"><h3 id="StrutsNext-/*<![CDATA[*/div.rbtoc1453884611957{padding:0px;}div.rbtoc1453884611957ul{list-style:disc;margin-left:0px;}div.rbtoc1453884611957li{margin-left:0px;padding-left:0px;}/*]]>*/#StrutsNext-Whatshouldbeimproved/changed#StrutsNext-Whatshouldbeimprove"><style type="text/css">/*<![CDATA[*/ -div.rbtoc1453884611957 {padding: 0px;} -div.rbtoc1453884611957 ul {list-style: disc;margin-left: 0px;} -div.rbtoc1453884611957 li {margin-left: 0px;padding-left: 0px;} + <div id="ConfluenceContent"><h3 id="StrutsNext-/*<![CDATA[*/div.rbtoc1456773756987{padding:0px;}div.rbtoc1456773756987ul{list-style:disc;margin-left:0px;}div.rbtoc1456773756987li{margin-left:0px;padding-left:0px;}/*]]>*/#StrutsNext-Whatshouldbeimproved/changed#StrutsNext-Whatshouldbeimprove"><style type="text/css">/*<![CDATA[*/ +div.rbtoc1456773756987 {padding: 0px;} +div.rbtoc1456773756987 ul {list-style: disc;margin-left: 0px;} +div.rbtoc1456773756987 li {margin-left: 0px;padding-left: 0px;} -/*]]>*/</style></h3><div class="toc-macro rbtoc1453884611957"> +/*]]>*/</style></h3><div class="toc-macro rbtoc1456773756987"> <ul class="toc-indentation"><li><a shape="rect" href="#StrutsNext-"></a></li></ul> <ul><li><a shape="rect" href="#StrutsNext-Whatshouldbeimproved/changed">What should be improved / changed</a></li><li><a shape="rect" href="#StrutsNext-DevelopmentplanofStruts3">Development plan of Struts 3</a> <ul class="toc-indentation"><li><a shape="rect" href="#StrutsNext-M1(akaStruts2.5)">M1 (aka Struts 2.5)</a></li><li><a shape="rect" href="#StrutsNext-M2(alphaStruts3)">M2 (alpha Struts 3)</a></li><li><a shape="rect" href="#StrutsNext-M3(alphaStruts3)">M3 (alpha Struts 3)</a></li><li><a shape="rect" href="#StrutsNext-M4(beta1Struts3)">M4 (beta 1 Struts 3)</a></li></ul> Modified: websites/production/struts/content/docs/tiles-3-plugin.html ============================================================================== --- websites/production/struts/content/docs/tiles-3-plugin.html (original) +++ websites/production/struts/content/docs/tiles-3-plugin.html Mon Feb 29 19:38:05 2016 @@ -138,62 +138,30 @@ under the License. <div class="pagecontent"> <div class="wiki-content"> - <div id="ConfluenceContent"><div class="confluence-information-macro confluence-information-macro-information"><span class="aui-icon aui-icon-small aui-iconfont-info confluence-information-macro-icon"></span><div class="confluence-information-macro-body"><p>Tiles is a templating framework designed to easily allow the creation of web application pages with a consistent look and feel. It can be used for both page decorating and componentization. This is the first release of the plugin!</p></div></div> -<p>The Tiles 3 plugin allows actions to return Tiles 3 pages.</p> - -<h2 id="Tiles3Plugin-Features">Features</h2> - -<ul><li>Supports Tiles in Freemarker, JSP, and Velocity - more testing is needed</li></ul> - - -<h2 id="Tiles3Plugin-Usage">Usage</h2> - -<p>The following steps must be taken in order to enable Tiles 3 support within your Struts2 application:</p> -<ol><li>Include the struts-tiles3-plugin as a dependency in your web application, do not include the old struts2-tiles-plugin! If you are using maven3, the dependency configuration will be similar to: -<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> -<pre class="brush: xml; gutter: false; theme: Default" style="font-size:12px;"> -<dependency> + <div id="ConfluenceContent"><div class="confluence-information-macro confluence-information-macro-warning"><span class="aui-icon aui-icon-small aui-iconfont-error confluence-information-macro-icon"></span><div class="confluence-information-macro-body"><p>This plugin was dropped in Struts 2.5, instead please use <a shape="rect" href="tiles-plugin.html">Tiles Plugin</a> which was extended and upgraded to Tiles 3.</p></div></div><div class="confluence-information-macro confluence-information-macro-information"><span class="aui-icon aui-icon-small aui-iconfont-info confluence-information-macro-icon"></span><div class="confluence-information-macro-body"><p>Tiles is a templating framework designed to easily allow the creation of web application pages with a consistent look and feel. It can be used for both page decorating and componentization. This is the first release of the plugin!</p></div></div><p>The Tiles 3 pluginallows actions to return Tiles 3 pages.</p><h2 id="Tiles3P lugin-Features">Features</h2><ul><li>Supports Tiles in Freemarker, JSP, and Velocity - more testing is needed</li></ul><h2 id="Tiles3Plugin-Usage">Usage</h2><p>The following steps must be taken in order to enable Tiles 3 support within your Struts2 application:</p><ol><li><p>Include the struts-tiles3-plugin as a dependency in your web application, do not include the old struts2-tiles-plugin! If you are using maven3, the dependency configuration will be similar to:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> +<pre class="brush: xml; gutter: false; theme: Default" style="font-size:12px;"><dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-tiles3-plugin</artifactId> <version>${version.tiles}</version> <scope>compile</scope> </dependency> </pre> -</div></div></li><li>Register the tiles listener. -<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> -<pre class="brush: xml; gutter: false; theme: Default" style="font-size:12px;"> -<listener> +</div></div></li><li><p>Register the tiles listener.</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> +<pre class="brush: xml; gutter: false; theme: Default" style="font-size:12px;"><listener> <listener-class>org.apache.tiles.extras.complete.CompleteAutoloadTilesListener</listener-class> </listener> </pre> -</div></div></li><li>All package definitions which require tiles support must either extend the tiles-default package or must register the <a shape="rect" class="createlink" href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=WW&title=Tiles+3+Result&linkCreation=true&fromPageId=30750969">Tiles 3 Result</a> type definition. -<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> -<pre class="brush: xml; gutter: false; theme: Default" style="font-size:12px;"> -<result-types> +</div></div></li><li><p>All package definitions which require tiles support must either extend the tiles-default package or must register the <a shape="rect" class="unresolved" href="#">Tiles 3 Result</a> type definition.</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> +<pre class="brush: xml; gutter: false; theme: Default" style="font-size:12px;"><result-types> <result-type name="tiles" class="org.apache.struts2.views.tiles.TilesResult"/> </result-types> </pre> -</div></div></li><li>Configure your actions to utilize a tiles definition: -<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> -<pre class="brush: xml; gutter: false; theme: Default" style="font-size:12px;"> -<action name="sample" class="org.apache.struts2.tiles.example.SampleAction" > +</div></div></li><li><p>Configure your actions to utilize a tiles definition:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> +<pre class="brush: xml; gutter: false; theme: Default" style="font-size:12px;"><action name="sample" class="org.apache.struts2.tiles.example.SampleAction" > <result name="success" type="tiles">tilesWorks</result> </action> </pre> -</div></div></li></ol> - - -<h2 id="Tiles3Plugin-Example">Example</h2> - -<p>TBD</p> - -<h2 id="Tiles3Plugin-Settings">Settings</h2> - -<p>This plugin does inherits settings from <a shape="rect" class="external-link" href="http://tiles.apache.org/config-reference.html">Tiles configuration</a>.</p> - -<h2 id="Tiles3Plugin-Installation">Installation</h2> - -<p>This plugin can be installed by copying the plugin jar into your application's <code>/WEB-INF/lib</code> directory. No other files need to be copied or created.</p></div> +</div></div></li></ol><h2 id="Tiles3Plugin-Example">Example</h2><p>TBD</p><h2 id="Tiles3Plugin-Settings">Settings</h2><p>This plugin does inherits settings from <a shape="rect" class="external-link" href="http://tiles.apache.org/config-reference.html">Tiles configuration</a>.</p><h2 id="Tiles3Plugin-Installation">Installation</h2><p>This plugin can be installed by copying the plugin jar into your application's <code>/WEB-INF/lib</code> directory. No other files need to be copied or created.</p></div> </div> Added: websites/production/struts/content/docs/tiles-plugin.html ============================================================================== --- websites/production/struts/content/docs/tiles-plugin.html (added) +++ websites/production/struts/content/docs/tiles-plugin.html Mon Feb 29 19:38:05 2016 @@ -0,0 +1,228 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<!-- +Licensed to the Apache Software Foundation (ASF) under one +or more contributor license agreements. See the NOTICE file +distributed with this work for additional information +regarding copyright ownership. The ASF licenses this file +to you 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. +--> +<html> +<head> + <link type="text/css" rel="stylesheet" href="https://struts.apache.org/css/default.css"> + <style type="text/css"> + .dp-highlighter { + width:95% !important; + } + </style> + <style type="text/css"> + .footer { + background-image: url('https://cwiki.apache.org/confluence/images/border/border_bottom.gif'); + background-repeat: repeat-x; + background-position: left top; + padding-top: 4px; + color: #666; + } + </style> + <link href='https://struts.apache.org/highlighter/style/shCoreStruts.css' rel='stylesheet' type='text/css' /> + <link href='https://struts.apache.org/highlighter/style/shThemeStruts.css' rel='stylesheet' type='text/css' /> + <script src='https://struts.apache.org/highlighter/js/shCore.js' type='text/javascript'></script> + <script src='https://struts.apache.org/highlighter/js/shBrushPlain.js' type='text/javascript'></script> + <script src='https://struts.apache.org/highlighter/js/shBrushXml.js' type='text/javascript'></script> + <script src='https://struts.apache.org/highlighter/js/shBrushJava.js' type='text/javascript'></script> + <script src='https://struts.apache.org/highlighter/js/shBrushJScript.js' type='text/javascript'></script> + <script src='https://struts.apache.org/highlighter/js/shBrushGroovy.js' type='text/javascript'></script> + <script src='https://struts.apache.org/highlighter/js/shBrushBash.js' type='text/javascript'></script> + <script type="text/javascript"> + SyntaxHighlighter.defaults['toolbar'] = false; + SyntaxHighlighter.all(); + </script> + <script type="text/javascript" language="javascript"> + var hide = null; + var show = null; + var children = null; + + function init() { + /* Search form initialization */ + var form = document.forms['search']; + if (form != null) { + form.elements['domains'].value = location.hostname; + form.elements['sitesearch'].value = location.hostname; + } + + /* Children initialization */ + hide = document.getElementById('hide'); + show = document.getElementById('show'); + children = document.all != null ? + document.all['children'] : + document.getElementById('children'); + if (children != null) { + children.style.display = 'none'; + show.style.display = 'inline'; + hide.style.display = 'none'; + } + } + + function showChildren() { + children.style.display = 'block'; + show.style.display = 'none'; + hide.style.display = 'inline'; + } + + function hideChildren() { + children.style.display = 'none'; + show.style.display = 'inline'; + hide.style.display = 'none'; + } + </script> + <title>Tiles Plugin</title> +</head> +<body onload="init()"> +<table border="0" cellpadding="2" cellspacing="0" width="100%"> + <tr class="topBar"> + <td align="left" valign="middle" class="topBarDiv" align="left" nowrap> + <a href="home.html">Home</a> > <a href="guides.html">Guides</a> > <a href="plugin-developers-guide.html">Plugin Developers Guide</a> > <a href="tiles-plugin.html">Tiles Plugin</a> + </td> + <td align="right" valign="middle" nowrap> + <form name="search" action="https://www.google.com/search" method="get"> + <input type="hidden" name="ie" value="UTF-8" /> + <input type="hidden" name="oe" value="UTF-8" /> + <input type="hidden" name="domains" value="" /> + <input type="hidden" name="sitesearch" value="" /> + <input type="text" name="q" maxlength="255" value="" /> + <input type="submit" name="btnG" value="Google Search" /> + </form> + </td> + </tr> +</table> + +<div id="PageContent"> + <div class="pageheader" style="padding: 6px 0px 0px 0px;"> + <!-- We'll enable this once we figure out how to access (and save) the logo resource --> + <!--img src="/wiki/images/confluence_logo.gif" style="float: left; margin: 4px 4px 4px 10px;" border="0"--> + <div style="margin: 0px 10px 0px 10px" class="smalltext">Apache Struts 2 Documentation</div> + <div style="margin: 0px 10px 8px 10px" class="pagetitle">Tiles Plugin</div> + + <div class="greynavbar" align="right" style="padding: 2px 10px; margin: 0px;"> + <a href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=27401"> + <img src="https://cwiki.apache.org/confluence/images/icons/notep_16.gif" + height="16" width="16" border="0" align="absmiddle" title="Edit Page"></a> + <a href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=27401">Edit Page</a> + + <a href="https://cwiki.apache.org/confluence/pages/listpages.action?key=WW"> + <img src="https://cwiki.apache.org/confluence/images/icons/browse_space.gif" + height="16" width="16" border="0" align="absmiddle" title="Browse Space"></a> + <a href="https://cwiki.apache.org/confluence/pages/listpages.action?key=WW">Browse Space</a> + + <a href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=WW&fromPageId=27401"> + <img src="https://cwiki.apache.org/confluence/images/icons/add_page_16.gif" + height="16" width="16" border="0" align="absmiddle" title="Add Page"></a> + <a href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=WW&fromPageId=27401">Add Page</a> + + <a href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=WW&fromPageId=27401"> + <img src="https://cwiki.apache.org/confluence/images/icons/add_blogentry_16.gif" + height="16" width="16" border="0" align="absmiddle" title="Add News"></a> + <a href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=WW&fromPageId=27401">Add News</a> + </div> + </div> + + <div class="pagecontent"> + <div class="wiki-content"> + <div id="ConfluenceContent"><div class="confluence-information-macro confluence-information-macro-information"><span class="aui-icon aui-icon-small aui-iconfont-info confluence-information-macro-icon"></span><div class="confluence-information-macro-body"><p>Tiles is a templating framework designed to easily allow the creation of web application pages with a consistent look and feel. It can be used for both page decorating and componentization.</p></div></div><p>The Tiles pluginallows actions to return Tiles pages</p><h2 id="TilesPlugin-Features">Features</h2><ul><li>Supports Tiles in Freemarker, JSP, and Velocity</li><li>Provides annotations to keep tiles.xml short and put definitons into actions</li></ul><h2 id="TilesPlugin-Usage">Usage</h2><p>The following steps must be taken in order to enable tiles support within your Struts2 application:</p><ol><li><p>Include the struts-tiles-plugin as a dependency in your web application. If you are using maven2, the dependency con figuration will be similar to:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> +<pre class="brush: xml; gutter: false; theme: Default" style="font-size:12px;"><dependency> + <groupId>org.apache.struts</groupId> + <artifactId>struts2-tiles-plugin</artifactId> + <version>${version.tiles}</version> + <scope>compile</scope> +</dependency> +</pre> +</div></div></li><li><p>Register the tiles listener. This listener will typically either be the standard tiles listener (org.apache.tiles.listener.TilesListener) or the Struts2 replacement (org.apache.struts2.tiles.TilesListener). The latter provides tighter integration with Struts features such as freemarker integration.</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> +<pre class="brush: xml; gutter: false; theme: Default" style="font-size:12px;"><listener> + <listener-class>org.apache.struts2.tiles.StrutsTilesListener</listener-class> +</listener> +</pre> +</div></div></li><li><p>All package definitions which require tiles support must either extend the tiles-default package or must register the <a shape="rect" class="unresolved" href="#">Tiles Result</a> type definition.</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> +<pre class="brush: xml; gutter: false; theme: Default" style="font-size:12px;"><result-types> + <result-type name="tiles" class="org.apache.struts2.views.tiles.TilesResult"/> +</result-types> +</pre> +</div></div></li><li><p>Configure your actions to utilize a tiles definition:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> +<pre class="brush: xml; gutter: false; theme: Default" style="font-size:12px;"><action name="sample" class="org.apache.struts2.tiles.example.SampleAction" > + <result name="success" type="tiles">tilesWorks</result> +</action> +</pre> +</div></div></li><li><p>Instead of xml configuration you can use annotations</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> +<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">@Result(name = "success", type="tiles") +@TilesDefinition(extend = "fooLayout", putAttributes = { + @TilesPutAttribute(name = "header", value = "/WEB-INF/tiles/header.jsp"), + @TilesPutAttribute(name = "body", value = "/WEB-INF/tiles/body.ftl") +}) +public class FooAction extends ActionSupport {</pre> +</div></div></li><li><p>You have to define Tiles Definitons in a tiles.xml file. That can be placed in <code>resources</code> or in <code>WEB-INF</code>.</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> +<pre class="brush: xml; gutter: false; theme: Default" style="font-size:12px;"><!DOCTYPE tiles-definitions PUBLIC + "-//Apache Software Foundation//DTD Tiles Configuration 3.0//EN" + "http://tiles.apache.org/dtds/tiles-config_3_0.dtd"> + +<tiles-definitions> + + <definition name="fooLayout" template="/WEB-INF/tiles/layout.jsp"> + <put-attribute name="title" value="Tiles Sample"/> + <put-attribute name="header" value=".header"/> + <put-attribute name="body" value=".bodyp"/> + </definition> + + <definition name="tilesWorks" extends="fooLayout"> + <put-attribute name="header" value="/WEB-INF/tiles/header.jsp"/> + <put-attribute name="body" value="/WEB-INF/tiles/body.jsp"/> + </definition> + +</tiles-definitions></pre> +</div></div></li></ol><h2 id="TilesPlugin-Example">Example</h2><p>This example shows a Tiles layout page using Struts tags:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> +<script class="brush: xml; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[ +<%@ 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> +]]></script> +</div></div>Please check <a shape="rect" class="external-link" href="https://github.com/apache/struts-examples/tree/master/tiles" rel="nofollow">tiles</a> example in <a shape="rect" class="external-link" href="https://github.com/apache/struts-examples/tree/master/tiles" rel="nofollow">struts-examples</a> project.<h2 id="TilesPlugin-Settings">Settings</h2><p>This plugin does inherits settings from <a shape="rect" class="external-link" href="http://tiles.apache.org/config-reference.html">Tiles configuration</a>.</p><h2 id="TilesPlugin-Installation">Installation</h2><p>This plugin can be installed by copying the plugin jar into your application's <code>/WEB-INF/lib</code> directory. No other files need to be copied or created.</p></div> + </div> + + <div class="tabletitle"> + Children + <span class="smalltext" id="show" style="display: inline;"> + <a href="javascript:showChildren()">Show Children</a></span> + <span class="smalltext" id="hide" style="display: none;"> + <a href="javascript:hideChildren()">Hide Children</a></span> + </div> + <div class="greybox" id="children" style="display: none;"> + $page.link($child) + <span class="smalltext">(Apache Struts 2 Documentation)</span> + <br> + </div> + + </div> +</div> +<div class="footer"> + Generated by CXF SiteExporter +</div> +</body> +</html> Modified: websites/production/struts/content/docs/tiles-use.html ============================================================================== --- websites/production/struts/content/docs/tiles-use.html (original) +++ websites/production/struts/content/docs/tiles-use.html Mon Feb 29 19:38:05 2016 @@ -91,7 +91,7 @@ under the License. <table border="0" cellpadding="2" cellspacing="0" width="100%"> <tr class="topBar"> <td align="left" valign="middle" class="topBarDiv" align="left" nowrap> - <a href="home.html">Home</a> > <a href="guides.html">Guides</a> > <a href="plugin-developers-guide.html">Plugin Developers Guide</a> > <a href="tiles-2-plugin.html">Tiles 2 Plugin</a> > <a href="tiles-use.html">Tiles Use</a> + <a href="home.html">Home</a> > <a href="guides.html">Guides</a> > <a href="plugin-developers-guide.html">Plugin Developers Guide</a> > <a href="tiles-plugin.html">Tiles Plugin</a> > <a href="tiles-use.html">Tiles Use</a> </td> <td align="right" valign="middle" nowrap> <form name="search" action="https://www.google.com/search" method="get"> Modified: websites/production/struts/content/docs/tutoriallesson06.html ============================================================================== --- websites/production/struts/content/docs/tutoriallesson06.html (original) +++ websites/production/struts/content/docs/tutoriallesson06.html Mon Feb 29 19:38:05 2016 @@ -144,7 +144,7 @@ under the License. <p>Interceptors allow arbitrary code to be included in the call stack for your action before and/or after processing the action, which can vastly simplify your code itself and provide excellent opportunities for code reuse. Many of the features of XWork and WebWork are implemented as interceptors and can be applied via external configuration along with your own Interceptors in whatever order you specify for any set of actions you define.</p> -<p>In other words, when you access a <code>*.action</code> URL, WebWork's <code>ServletDispatcher</code> proceeds to the invocation of the an action object. Before it is executed, however, the invocation can be intercepted by another object, that is hence called interceptor. To have an interceptor executed before (or after) a given action, just configure <code>xwork.xml</code> properly, like the example below, taken from <a shape="rect" class="createlink" href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=WW&title=TutorialLesson04-01-01&linkCreation=true&fromPageId=14155">lesson 4.1.1</a>:</p> +<p>In other words, when you access a <code>*.action</code> URL, WebWork's <code>ServletDispatcher</code> proceeds to the invocation of the an action object. Before it is executed, however, the invocation can be intercepted by another object, that is hence called interceptor. To have an interceptor executed before (or after) a given action, just configure <code>xwork.xml</code> properly, like the example below, taken from <a shape="rect" class="unresolved" href="#">lesson 4.1.1</a>:</p> <h3 id="TutorialLesson06-Interceptorconfigurationfromlesson4.1.1:">Interceptor configuration from lesson 4.1.1:</h3> @@ -157,7 +157,7 @@ under the License. </action> </pre> </div></div> -<p>As you can see, lesson 4.1.1's <code>formProcessing</code> Action uses the <code>validationWorkflowStack</code>. That is an interceptor stack, which organizes a bunch of interceptors in the order in which they are to be executed. That stack is configured in <code>webwork-default.xml</code>, so all we have to do to use it is declare a <code><interceptor-ref /></code> under the action configuration or a <code><default-interceptor-ref /></code>, under package configuration, as seen in <a shape="rect" class="createlink" href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=WW&title=Lesson+3+-+An+html+form+with+data&linkCreation=true&fromPageId=14155">lesson 3</a>'s first example:</p> +<p>As you can see, lesson 4.1.1's <code>formProcessing</code> Action uses the <code>validationWorkflowStack</code>. That is an interceptor stack, which organizes a bunch of interceptors in the order in which they are to be executed. That stack is configured in <code>webwork-default.xml</code>, so all we have to do to use it is declare a <code><interceptor-ref /></code> under the action configuration or a <code><default-interceptor-ref /></code>, under package configuration, as seen in <a shape="rect" class="unresolved" href="#">lesson 3</a>'s first example:</p> <h3 id="TutorialLesson06-Interceptorconfigurationfromlesson3.1:">Interceptor configuration from lesson 3.1:</h3> @@ -256,7 +256,7 @@ under the License. </pre> </div></div> <p>Since we included <code>webwork-default.xml</code> in our <code>xwork.xml</code>, all the interceptors and stacks above are available for us to use in our actions. Here's what these interceptors do:</p> -<ul><li><strong>timer</strong>: clocks how long the action (including nested interceptors and view) takes to execute;</li><li><strong>logger</strong>: logs the action being executed;</li><li><strong>chain</strong>: makes the previous action's properties available to the current action. Used to make action chaining (reference: <a shape="rect" href="result-types.html">Result Types</a>);</li><li><strong>static-params</strong>: sets the parameters defined in <code>xwork.xml</code> onto the action. These are the <code><param /></code> tags that are direct children of the <code><action /></code> tag;</li><li><strong>params</strong>: sets the request (POST and GET) parameters onto the action class. We have seen an example of this in <a shape="rect" class="createlink" href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=WW&title=Lesson+3+-+An+html+form+with+data&linkCreation=true&fromPageId=14155">lesson 3</a>;</li><li><strong>model-driven</stro ng>: if the action implements <code>ModelDriven</code>, pushes the <code>getModel()</code> result onto the Value Stack;</li><li><strong>component</strong>: enables and makes registered components available to the actions. (reference: <a shape="rect" class="createlink" href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=WW&title=IoC+%26+Components&linkCreation=true&fromPageId=14155">IoC & Components</a>);</li><li><strong>token</strong>: checks for valid token presence in action, prevents duplicate form submission;</li><li><strong>token-session</strong>: same as above, but storing the submitted data in session when handed an invalid token;</li><li><strong>validation</strong>: performs validation using the validators defined in {<code>Action}-validation.xml</code> (reference: <a shape="rect" href="validation.html">Validation</a>). We've seen an example of this in <a shape="rect" class="createlink" href="https://cwiki.apache.org/confluence/pages/cr eatepage.action?spaceKey=WW&title=TutorialLesson04-01-01&linkCreation=true&fromPageId=14155">lesson 4.1.1</a>;</li><li><strong>workflow</strong>: calls the validate method in your action class. If action errors created then it returns the <code>INPUT</code> view. Good to use together with the validation interceptor (reference: <a shape="rect" href="validation.html">Validation</a>);</li><li><strong>servlet-config</strong>: give access to <code>HttpServletRequest</code> and <code>HttpServletResponse</code> (think twice before using this since this ties you to the Servlet API);</li><li><strong>prepare</strong>: allows you to programmatic access to your Action class before the parameters are set on it.;</li><li><strong>conversionError</strong>: <span style="color: red;"><em>help needed here</em></span>.</li></ul> +<ul><li><strong>timer</strong>: clocks how long the action (including nested interceptors and view) takes to execute;</li><li><strong>logger</strong>: logs the action being executed;</li><li><strong>chain</strong>: makes the previous action's properties available to the current action. Used to make action chaining (reference: <a shape="rect" href="result-types.html">Result Types</a>);</li><li><strong>static-params</strong>: sets the parameters defined in <code>xwork.xml</code> onto the action. These are the <code><param /></code> tags that are direct children of the <code><action /></code> tag;</li><li><strong>params</strong>: sets the request (POST and GET) parameters onto the action class. We have seen an example of this in <a shape="rect" class="unresolved" href="#">lesson 3</a>;</li><li><strong>model-driven</strong>: if the action implements <code>ModelDriven</code>, pushes the <code>getModel()</code> result onto the Value Stack;</li><li><strong>component</strong>: e nables and makes registered components available to the actions. (reference: <a shape="rect" class="unresolved" href="#">IoC & Components</a>);</li><li><strong>token</strong>: checks for valid token presence in action, prevents duplicate form submission;</li><li><strong>token-session</strong>: same as above, but storing the submitted data in session when handed an invalid token;</li><li><strong>validation</strong>: performs validation using the validators defined in {<code>Action}-validation.xml</code> (reference: <a shape="rect" href="validation.html">Validation</a>). We've seen an example of this in <a shape="rect" class="unresolved" href="#">lesson 4.1.1</a>;</li><li><strong>workflow</strong>: calls the validate method in your action class. If action errors created then it returns the <code>INPUT</code> view. Good to use together with the validation interceptor (reference: <a shape="rect" href="validation.html">Validation</a>);</li><li><strong>servlet-config</strong>: give ac cess to <code>HttpServletRequest</code> and <code>HttpServletResponse</code> (think twice before using this since this ties you to the Servlet API);</li><li><strong>prepare</strong>: allows you to programmatic access to your Action class before the parameters are set on it.;</li><li><strong>conversionError</strong>: <span style="color: red;"><em>help needed here</em></span>.</li></ul> <h2 id="TutorialLesson06-BuildingyourownInterceptor">Building your own Interceptor</h2> @@ -360,10 +360,10 @@ public class GreetingAction extends Acti <p>One other thing that interceptors can do is execute code after the action has executed. To do that, just place code after the invocation.invoke() call. WebWork provides an abstract class that already implements this kind of behaviour: <code>com.opensymphony.xwork.interceptor.AroundInterceptor</code>. Just extend it and implement the methods <code>before(ActionInvocation invocation)</code> and <code>after(ActionInvocation dispatcher, String result)</code>.</p> <p>The <code>xwork.xml</code> configuration, the action class and the result page are pretty straightforward and require no further explanation.</p> -<blockquote><p><a shape="rect" class="createlink" href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=WW&title=TutorialExamples&linkCreation=true&fromPageId=14155">Try the example!</a></p></blockquote> +<blockquote><p><a shape="rect" class="unresolved" href="#">Try the example!</a></p></blockquote> <hr> -<p><a shape="rect" class="createlink" href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=WW&title=TutorialLesson05&linkCreation=true&fromPageId=14155">Previous Lesson</a> | <a shape="rect" href="tutorialend.html">End of Tutorial</a></p></div> +<p><a shape="rect" class="unresolved" href="#">Previous Lesson</a> | <a shape="rect" href="tutorialend.html">End of Tutorial</a></p></div> </div> <div class="tabletitle"> Modified: websites/production/struts/content/docs/type-conversion.html ============================================================================== --- websites/production/struts/content/docs/type-conversion.html (original) +++ websites/production/struts/content/docs/type-conversion.html Mon Feb 29 19:38:05 2016 @@ -141,11 +141,11 @@ under the License. <div id="ConfluenceContent"><p>Routine type conversion in the framework is transparent. Generally, all you need to do is ensure that HTML inputs have names that can be used in <a shape="rect" href="ognl.html">OGNL</a> expressions. (HTML inputs are form elements and other GET/POST parameters.)</p> <style type="text/css">/*<![CDATA[*/ -div.rbtoc1453884182286 {padding: 0px;} -div.rbtoc1453884182286 ul {list-style: none;margin-left: 0px;} -div.rbtoc1453884182286 li {margin-left: 0px;padding-left: 0px;} +div.rbtoc1456773335959 {padding: 0px;} +div.rbtoc1456773335959 ul {list-style: none;margin-left: 0px;} +div.rbtoc1456773335959 li {margin-left: 0px;padding-left: 0px;} -/*]]>*/</style><div class="toc-macro rbtoc1453884182286"> +/*]]>*/</style><div class="toc-macro rbtoc1456773335959"> <ul class="toc-indentation"><li><span class="TOCOutline">1</span> <a shape="rect" href="#TypeConversion-BuiltinTypeConversionSupport">Built in Type Conversion Support</a></li><li><span class="TOCOutline">2</span> <a shape="rect" href="#TypeConversion-RelationshiptoParameterNames">Relationship to Parameter Names</a></li><li><span class="TOCOutline">3</span> <a shape="rect" href="#TypeConversion-CreatingaTypeConverter">Creating a Type Converter</a></li><li><span class="TOCOutline">4</span> <a shape="rect" href="#TypeConversion-ApplyingaTypeConvertertoanAction">Applying a Type Converter to an Action</a></li><li><span class="TOCOutline">5</span> <a shape="rect" href="#TypeConversion-ApplyingaTypeConvertertoabeanormodel">Applying a Type Converter to a bean or model</a></li><li><span class="TOCOutline">6</span> <a shape="rect" href="#TypeConversion-ApplyingaTypeConverterforanapplication">Applying a Type Converter for an application</a></li><li><span class="TOCOutline">7</span> <a shape="r ect" href="#TypeConversion-ASimpleExample">A Simple Example</a></li><li><span class="TOCOutline">8</span> <a shape="rect" href="#TypeConversion-AdvancedTypeConversion">Advanced Type Conversion</a> <ul class="toc-indentation"><li><span class="TOCOutline">8.1</span> <a shape="rect" href="#TypeConversion-NullPropertyHandling">Null Property Handling</a></li><li><span class="TOCOutline">8.2</span> <a shape="rect" href="#TypeConversion-CollectionandMapSupport">Collection and Map Support</a> <ul class="toc-indentation"><li><span class="TOCOutline">8.2.1</span> <a shape="rect" href="#TypeConversion-Indexingacollectionbyapropertyofthatcollection">Indexing a collection by a property of that collection</a></li></ul> Modified: websites/production/struts/content/docs/user-guide.html ============================================================================== --- websites/production/struts/content/docs/user-guide.html (original) +++ websites/production/struts/content/docs/user-guide.html Mon Feb 29 19:38:05 2016 @@ -127,23 +127,23 @@ under the License. <div class="wiki-content"> <div id="ConfluenceContent"><ul class="alternate"><li><a shape="rect" href="introduction.html">Introduction</a> <ul class="alternate"><li>Forward into the Past !</li><li>What is Struts 2 ?</li></ul> - </li><li><a shape="rect" class="createlink" href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=WW&title=Basic+Concepts&linkCreation=true&fromPageId=45047">Basic Concepts</a> + </li><li><a shape="rect" class="unresolved" href="#">Basic Concepts</a> <ul class="alternate"><li>Overview</li><li>Request, Response</li><li>Model, View, Controller (MVC)</li><li>The Struts 2 Architecture</li><li><a shape="rect" href="the-struts-2-request-flow.html">The Struts 2 Request Flow</a></li></ul> - </li><li><a shape="rect" class="createlink" href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=WW&title=Building+Model+Components&linkCreation=true&fromPageId=45047">Building Model Components</a> + </li><li><a shape="rect" class="unresolved" href="#">Building Model Components</a> <ul class="alternate"><li>Overview</li></ul> - </li><li><a shape="rect" class="createlink" href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=WW&title=Building+View+Components&linkCreation=true&fromPageId=45047">Building View Components</a> + </li><li><a shape="rect" class="unresolved" href="#">Building View Components</a> <ul class="alternate"><li>Overview</li><li>Bundled View Components <ul class="alternate"><li>Using JavaServer Pages (JSP)</li><li><a shape="rect" href="using-freemarker-templates.html">Using Freemarker Templates</a></li><li>Using Velocity Templates</li><li>Other</li></ul> </li><li>Internationalization</li><li>Using Tags in Your View Components <ul class="alternate"><li>Object-Graph Navigation Language (OGNL)</li><li>JavaServer Pages Standard Tag Library (JSTL)</li><li>Form tags</li><li>Non-form tags</li><li>AJAX tags</li></ul> </li><li>Themes</li><li>Templates</li></ul> - </li><li><a shape="rect" class="createlink" href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=WW&title=Building+Controller+Components&linkCreation=true&fromPageId=45047">Building Controller Components</a> + </li><li><a shape="rect" class="unresolved" href="#">Building Controller Components</a> <ul class="alternate"><li>Overview</li><li>Using Plain Old Java Objects (POJO) as Controllers</li><li>Enhanced Controllers</li><li>Error Handling</li><li>Mapping <ul class="alternate"><li>Using the Default Action Mapping</li><li>Using Wildcards in Action Mapping</li></ul> </li><li>Type Conversion</li><li>Action Population</li><li>Interceptors</li><li>Validating the Controllers <ul class="alternate"><li>Validator Types</li><li>Built-in Validators</li></ul> </li></ul> - </li><li><a shape="rect" class="createlink" href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=WW&title=Configuration&linkCreation=true&fromPageId=45047">Configuration</a> + </li><li><a shape="rect" class="unresolved" href="#">Configuration</a> <ul class="alternate"><li>Overview</li><li>Configuration by Convention <ul class="alternate"><li>Zero Configuration: No More XML</li><li>Using Annotations for Configuration</li></ul> </li><li>The Configuration Files Modified: websites/production/struts/content/docs/using-freemarker-templates.html ============================================================================== --- websites/production/struts/content/docs/using-freemarker-templates.html (original) +++ websites/production/struts/content/docs/using-freemarker-templates.html Mon Feb 29 19:38:05 2016 @@ -141,11 +141,11 @@ under the License. <div id="ConfluenceContent"><p><a shape="rect" class="external-link" href="http://freemarker.sourceforge.net/" rel="nofollow">FreeMarker</a> is a Java-based template engine that is a great alternative to <a shape="rect" href="jsp.html">JSP</a>. FreeMarker is ideal for situations where your action results can possibly be loaded from outside a Servlet container. For example, if you wished to support plugins in your application, you might wish to use FreeMarker so that the plugins could provide the entire action class and view in a single jar that is loaded from the classloader.</p> <style type="text/css">/*<![CDATA[*/ -div.rbtoc1453884436781 {padding: 0px;} -div.rbtoc1453884436781 ul {list-style: disc;margin-left: 0px;} -div.rbtoc1453884436781 li {margin-left: 0px;padding-left: 0px;} +div.rbtoc1456773616597 {padding: 0px;} +div.rbtoc1456773616597 ul {list-style: disc;margin-left: 0px;} +div.rbtoc1456773616597 li {margin-left: 0px;padding-left: 0px;} -/*]]>*/</style><div class="toc-macro rbtoc1453884436781"> +/*]]>*/</style><div class="toc-macro rbtoc1456773616597"> <ul class="toc-indentation"><li><a shape="rect" href="#UsingFreemarkerTemplates-Configureyouractiontousethe"freemarker"resulttype">Configure your action to use the "freemarker" result type</a></li><li><a shape="rect" href="#UsingFreemarkerTemplates-Usingproperties">Using properties</a></li><li><a shape="rect" href="#UsingFreemarkerTemplates-Servlet/JSPScopedObjects">Servlet / JSP Scoped Objects</a> <ul class="toc-indentation"><li><a shape="rect" href="#UsingFreemarkerTemplates-ApplicationScopeAttribute">Application Scope Attribute</a></li><li><a shape="rect" href="#UsingFreemarkerTemplates-SessionScopeAttribute">Session Scope Attribute</a></li><li><a shape="rect" href="#UsingFreemarkerTemplates-RequestScopeAttribute">Request Scope Attribute</a></li><li><a shape="rect" href="#UsingFreemarkerTemplates-RequestParameter">Request Parameter</a></li><li><a shape="rect" href="#UsingFreemarkerTemplates-Contextparameter">Context parameter</a></li></ul> </li><li><a shape="rect" href="#UsingFreemarkerTemplates-TemplateLoading">Template Loading</a></li><li><a shape="rect" href="#UsingFreemarkerTemplates-VariableResolution">Variable Resolution</a></li><li><a shape="rect" href="#UsingFreemarkerTemplates-FreeMarkerconfiguration">FreeMarker configuration</a></li><li><a shape="rect" href="#UsingFreemarkerTemplates-Tags">Tags</a> Modified: websites/production/struts/content/docs/validation.html ============================================================================== --- websites/production/struts/content/docs/validation.html (original) +++ websites/production/struts/content/docs/validation.html Mon Feb 29 19:38:05 2016 @@ -139,11 +139,11 @@ under the License. <div class="pagecontent"> <div class="wiki-content"> <div id="ConfluenceContent"><p>Struts 2 validation is configured via XML or annotations. Manual validation in the action is also possible, and may be combined with XML and annotation-driven validation.</p><p>Validation also depends on both the <code>validation</code> and <code>workflow</code> interceptors (both are included in the default interceptor stack). The <code>validation</code> interceptor does the validation itself and creates a list of field-specific errors. The <code>workflow</code> interceptor checks for the presence of validation errors: if any are found, it returns the "input" result (by default), taking the user back to the form which contained the validation errors.</p><p>If we're using the default settings <em>and</em> our action doesn't have an "input" result defined <em>and</em> there are validation (or, incidentally, type conversion) errors, we'll get an error message back telling us there's no "input" result defined for the action.</p><p><strong>CONT ENTS</strong></p><p><style type="text/css">/*<![CDATA[*/ -div.rbtoc1453884324955 {padding: 0px;} -div.rbtoc1453884324955 ul {list-style: none;margin-left: 0px;} -div.rbtoc1453884324955 li {margin-left: 0px;padding-left: 0px;} +div.rbtoc1456773511211 {padding: 0px;} +div.rbtoc1456773511211 ul {list-style: none;margin-left: 0px;} +div.rbtoc1456773511211 li {margin-left: 0px;padding-left: 0px;} -/*]]>*/</style></p><div class="toc-macro rbtoc1453884324955"> +/*]]>*/</style></p><div class="toc-macro rbtoc1456773511211"> <ul class="toc-indentation"><li><span class="TOCOutline">1</span> <a shape="rect" href="#Validation-UsingAnnotations">Using Annotations</a></li><li><span class="TOCOutline">2</span> <a shape="rect" href="#Validation-BeanValidation">Bean Validation</a></li><li><span class="TOCOutline">3</span> <a shape="rect" href="#Validation-Examples">Examples</a></li><li><span class="TOCOutline">4</span> <a shape="rect" href="#Validation-BundledValidators">Bundled Validators</a></li><li><span class="TOCOutline">5</span> <a shape="rect" href="#Validation-RegisteringValidators">Registering Validators</a></li><li><span class="TOCOutline">6</span> <a shape="rect" href="#Validation-TurningonValidation">Turning on Validation</a></li><li><span class="TOCOutline">7</span> <a shape="rect" href="#Validation-ValidatorScopes">Validator Scopes</a> <ul class="toc-indentation"><li><span class="TOCOutline">7.1</span> <a shape="rect" href="#Validation-Notes">Notes</a></li></ul> </li><li><span class="TOCOutline">8</span> <a shape="rect" href="#Validation-DefiningValidationRules">Defining Validation Rules</a></li><li><span class="TOCOutline">9</span> <a shape="rect" href="#Validation-LocalizingandParameterizingMessages">Localizing and Parameterizing Messages</a></li><li><span class="TOCOutline">10</span> <a shape="rect" href="#Validation-ValidatorFlavor">Validator Flavor</a></li><li><span class="TOCOutline">11</span> <a shape="rect" href="#Validation-Non-FieldValidatorVsField-Validatorvalidatortypes">Non-Field Validator Vs Field-Validator</a></li><li><span class="TOCOutline">12</span> <a shape="rect" href="#Validation-Short-CircuitingValidator">Short-Circuiting Validator</a></li><li><span class="TOCOutline">13</span> <a shape="rect" href="#Validation-HowValidatorsofanActionareFound">How Validators of an Action are Found</a></li><li><span class="TOCOutline">14</span> <a shape="rect" href="#Validation-Writingcustomvalidators">Writing custom validators</a></li> <li><span class="TOCOutline">15</span> <a shape="rect" href="#Validation-Resources">Resources</a></li><li><span class="TOCOutline">16</span> <a shape="rect" href="#Validation-Next:">Next: Localization</a></li></ul> Modified: websites/production/struts/content/docs/webxml.html ============================================================================== --- websites/production/struts/content/docs/webxml.html (original) +++ websites/production/struts/content/docs/webxml.html Mon Feb 29 19:38:05 2016 @@ -195,7 +195,7 @@ under the License. </div></div><h2 id="web.xml-CustomFileManagerandFileManagerFactoryimplementations">Custom FileManager and FileManagerFactory implementations</h2><p>If there is a need to support an App Server's specific file system (eg. VFS in JBoss), you can implement your own version of FileManager. But it must be registered at "the beginning" to support bootstrap of the whole framework.</p><p>To register your own FileManger you can do it with <init-param/> as below:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> <pre class="brush: xml; gutter: false; theme: Default" style="font-size:12px;"><filter> <filter-name>struts2</filter-name> - <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> + <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class> <init-param> <param-name>struts.fileManager</param-name> <param-value>com.company.MyFileManager</param-value> @@ -212,7 +212,16 @@ under the License. </init-param> </filter> </pre> -</div></div><p>Take a look on default implementations - DefaultFileManager.java and DefaultFileManagerFactory.java to understand how and why.</p></div> +</div></div><p>Take a look on default implementations - DefaultFileManager.java and DefaultFileManagerFactory.java to understand how and why.</p><h2 id="web.xml-Customconfigurationprovider">Custom configuration provider</h2><p>It is possible to use your custom <code>ConfigurationProvider</code> to programmatically configure your application. To do this use <code>configProviders</code> (it can be a comma-separated list of class names) <code><init-param/></code> as below:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> +<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;"><filter> + <filter-name>struts2</filter-name> + <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class> + <init-param> + <param-name>configProviders</param-name> + <param-value>com.company.MyConfigurationProvider</param-value> + </init-param> +</filter></pre> +</div></div><p>See <a shape="rect" href="configuration-provider-configuration.html">Configuration Provider & Configuration</a> for more details.</p></div> </div> Modified: websites/production/struts/content/docs/what-are-some-of-the-frameworks-best-features.html ============================================================================== --- websites/production/struts/content/docs/what-are-some-of-the-frameworks-best-features.html (original) +++ websites/production/struts/content/docs/what-are-some-of-the-frameworks-best-features.html Mon Feb 29 19:38:05 2016 @@ -129,15 +129,15 @@ under the License. <p>Key features of the framework include: </p> <h3 id="Whataresomeoftheframework'sbestfeatures-Core">Core </h3> -<ul><li>Pluggable framework <a shape="rect" class="createlink" href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=WW&title=architecture&linkCreation=true&fromPageId=13921">architecture</a> that allows request lifecycles to be customized for each action.</li><li>Flexible <a shape="rect" href="validation.html">validation</a> framework that allows validation rules to be decoupled from action code.</li><li>Hierarchical approach to <a shape="rect" class="createlink" href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=WW&title=internationalization&linkCreation=true&fromPageId=13921">internationalization</a> that simplifies localizing applications.</li><li>Automatic <a shape="rect" href="type-conversion.html">type conversion</a> that transparently maps values from HTTP to native Java data objects, solving one of the most tedious efforts when creating web applications.</li><li>Integrated <a shape="rect" href="dependency- injection.html">dependency injection</a> engine that manages component lifecycle and dependencies.</li><li>Modular <a shape="rect" href="configuration-files.html">configuration files</a> that use packages and namespaces to simplify managing large projects with hundreds of actions.</li><li><a shape="rect" class="createlink" href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=WW&title=J2SE+5+Support&linkCreation=true&fromPageId=13921">Java 5 annotations</a> that reduce configuration overhead. (Java 1.4 is the minimum platform.)</li></ul> +<ul><li>Pluggable framework <a shape="rect" class="unresolved" href="#">architecture</a> that allows request lifecycles to be customized for each action.</li><li>Flexible <a shape="rect" href="validation.html">validation</a> framework that allows validation rules to be decoupled from action code.</li><li>Hierarchical approach to <a shape="rect" class="unresolved" href="#">internationalization</a> that simplifies localizing applications.</li><li>Automatic <a shape="rect" href="type-conversion.html">type conversion</a> that transparently maps values from HTTP to native Java data objects, solving one of the most tedious efforts when creating web applications.</li><li>Integrated <a shape="rect" href="dependency-injection.html">dependency injection</a> engine that manages component lifecycle and dependencies.</li><li>Modular <a shape="rect" href="configuration-files.html">configuration files</a> that use packages and namespaces to simplify managing large projects with hundreds of actions .</li><li><a shape="rect" class="unresolved" href="#">Java 5 annotations</a> that reduce configuration overhead. (Java 1.4 is the minimum platform.)</li></ul> <h3 id="Whataresomeoftheframework'sbestfeatures-View">View </h3> -<ul><li>Reusable user interface <a shape="rect" class="createlink" href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=WW&title=tags&linkCreation=true&fromPageId=13921">tags</a> that allow for easy component-oriented development using <a shape="rect" href="themes-and-templates.html">themes and templates</a>. Bundled tags ranges from simple text fields to advanced tags like date pickers and tree views.</li><li>JSTL-compatible expression language (<a shape="rect" href="ognl.html">OGNL</a>) that exposes properties on multiple objects as if they were a single JavaBean.</li><li>Pluggable <a shape="rect" href="result-types.html">Result Types</a> that support multiple view technologies, including <a shape="rect" href="jsp.html">JSP</a>, <a shape="rect" href="freemarker.html">FreeMarker</a>, <a shape="rect" href="velocity.html">Velocity</a>, PDF, and <a shape="rect" href="jasperreports-tutorial.html">JasperReports</a>.</li><li>Optional <a shape="rect" href ="ajax-theme.html">AJAX theme</a> that simplifes creating <a shape="rect" class="external-link" href="http://en.wikipedia.org/wiki/AJAX" rel="nofollow">interactive web applications</a>.</li><li>Optional <a shape="rect" href="interceptors.html">Interceptor</a> plugins that can execute long-running queries in the background, prevent multiple form submissions, or handle custom security schemes.</li></ul> +<ul><li>Reusable user interface <a shape="rect" class="unresolved" href="#">tags</a> that allow for easy component-oriented development using <a shape="rect" href="themes-and-templates.html">themes and templates</a>. Bundled tags ranges from simple text fields to advanced tags like date pickers and tree views.</li><li>JSTL-compatible expression language (<a shape="rect" href="ognl.html">OGNL</a>) that exposes properties on multiple objects as if they were a single JavaBean.</li><li>Pluggable <a shape="rect" href="result-types.html">Result Types</a> that support multiple view technologies, including <a shape="rect" href="jsp.html">JSP</a>, <a shape="rect" href="freemarker.html">FreeMarker</a>, <a shape="rect" href="velocity.html">Velocity</a>, PDF, and <a shape="rect" href="jasperreports-tutorial.html">JasperReports</a>.</li><li>Optional <a shape="rect" href="ajax-theme.html">AJAX theme</a> that simplifes creating <a shape="rect" class="external-link" href="http://en.wikipedia.org/wi ki/AJAX" rel="nofollow">interactive web applications</a>.</li><li>Optional <a shape="rect" href="interceptors.html">Interceptor</a> plugins that can execute long-running queries in the background, prevent multiple form submissions, or handle custom security schemes.</li></ul> <h3 id="Whataresomeoftheframework'sbestfeatures-Other">Other</h3> -<ul><li>Easy integration with other popular products, including <a shape="rect" class="createlink" href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=WW&title=Hibernate&linkCreation=true&fromPageId=13921">Hibernate</a>, <a shape="rect" class="createlink" href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=WW&title=Spring&linkCreation=true&fromPageId=13921">Spring</a>, <a shape="rect" class="createlink" href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=WW&title=SiteMesh&linkCreation=true&fromPageId=13921">SiteMesh</a>, and <a shape="rect" class="createlink" href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=WW&title=JSTL&linkCreation=true&fromPageId=13921">JSTL</a>.</li><li>Distributed under the business-friendly <a shape="rect" class="external-link" href="http://apache.org/licenses/LICENSE-2.0">Apache License 2.0</a>.</li></ul></div> +<ul><li>Easy integration with other popular products, including <a shape="rect" class="unresolved" href="#">Hibernate</a>, <a shape="rect" class="unresolved" href="#">Spring</a>, <a shape="rect" class="unresolved" href="#">SiteMesh</a>, and <a shape="rect" class="unresolved" href="#">JSTL</a>.</li><li>Distributed under the business-friendly <a shape="rect" class="external-link" href="http://apache.org/licenses/LICENSE-2.0">Apache License 2.0</a>.</li></ul></div> </div> Modified: websites/production/struts/content/docs/what-is-the-actioncontext.html ============================================================================== --- websites/production/struts/content/docs/what-is-the-actioncontext.html (original) +++ websites/production/struts/content/docs/what-is-the-actioncontext.html Mon Feb 29 19:38:05 2016 @@ -191,7 +191,7 @@ ActionContext context = ActionContext.ge <p>The darker side is that classes that depend heavily on ThreadLocal can be diffcult to unit test. A cleaner design centralizes access to ThreadLocal variables, so that other classes are easier to test.</p> -<h2 id="WhatistheActionContext?-Backto">Back to <a shape="rect" class="createlink" href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=ds&title=FAQs">FAQs</a></h2> +<h2 id="WhatistheActionContext?-Backto">Back to <a shape="rect" class="unresolved" href="#">FAQs</a></h2> <hr> Modified: websites/production/struts/content/index.html ============================================================================== --- websites/production/struts/content/index.html (original) +++ websites/production/struts/content/index.html Mon Feb 29 19:38:05 2016 @@ -165,10 +165,10 @@ <div class="column col-md-4"> </div> <div class="column col-md-4"> - <h2>Security Bulletin S2-025</h2> + <h2>Security Bulletin S2-026</h2> <p> A new security bulletin was published, please carefully read the - <a href="announce.html#a20150826">Announcement</a> + <a href="/docs/s2-026.html">Announcement</a> </p> </div> <div class="column col-md-4"> Modified: websites/production/struts/content/volunteers.html ============================================================================== --- websites/production/struts/content/volunteers.html (original) +++ websites/production/struts/content/volunteers.html Mon Feb 29 19:38:05 2016 @@ -147,6 +147,7 @@ or committee member.</p> <li>Johannes Geppert (jogep at apache.org)</li> <li>Christian Grobmeier (grobmeier at apache.org)</li> <li>Christoph Nenning (cnenning at apache.org)</li> + <li>Greg Huber (ghuber at apache.org)</li> </ul> <h2 id="committers">Committers</h2> @@ -164,7 +165,6 @@ or committee member.</p> <li>Mathias Bogaert (pathos at apache.org)</li> <li>John Lindal (jafl at apache.org)</li> <li>Bruce A. Phillips (bphillips at apache.org)</li> - <li>Greg Huber (ghuber at apache.org)</li> <li>Aleksandr Mashchenko (amashchenko at apache.org)</li> </ul>