Author: lukaszlenart
Date: Tue May  6 06:15:53 2014
New Revision: 908155

Log:
Updates production

Added:
    websites/production/struts/content/development/2.x/docs/s2-022.html
    
websites/production/struts/content/development/2.x/docs/version-notes-23163.html
Modified:
    
websites/production/struts/content/development/2.x/docs/building-struts-2-normal-release.html
    websites/production/struts/content/development/2.x/docs/migration-guide.html
    websites/production/struts/content/development/2.x/docs/ognl-basics.html
    websites/production/struts/content/development/2.x/docs/rest-plugin.html
    websites/production/struts/content/development/2.x/docs/s2-021.html
    
websites/production/struts/content/development/2.x/docs/security-bulletins.html
    websites/production/struts/content/development/2.x/docs/security.html
    
websites/production/struts/content/development/2.x/docs/version-notes-23162.html

Modified: 
websites/production/struts/content/development/2.x/docs/building-struts-2-normal-release.html
==============================================================================
--- 
websites/production/struts/content/development/2.x/docs/building-struts-2-normal-release.html
 (original)
+++ 
websites/production/struts/content/development/2.x/docs/building-struts-2-normal-release.html
 Tue May  6 06:15:53 2014
@@ -135,11 +135,11 @@ under the License. 
     <div class="pagecontent">
         <div class="wiki-content">
             <div id="ConfluenceContent"><h1 
id="BuildingStruts2-Normalrelease-Content">Content</h1><p><style 
type="text/css">/*<![CDATA[*/
-div.rbtoc1398363001683 {padding: 0px;}
-div.rbtoc1398363001683 ul {list-style: none;margin-left: 0px;}
-div.rbtoc1398363001683 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1398534732984 {padding: 0px;}
+div.rbtoc1398534732984 ul {list-style: none;margin-left: 0px;}
+div.rbtoc1398534732984 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1398363001683">
+/*]]>*/</style></p><div class="toc-macro rbtoc1398534732984">
 <ul class="toc-indentation"><li><span class="TOCOutline">1</span> <a 
shape="rect" href="#BuildingStruts2-Normalrelease-Gettingready">Getting 
ready</a></li><li><span class="TOCOutline">2</span> <a shape="rect" 
href="#BuildingStruts2-Normalrelease-UpdateDraftDocswhenneeded">Update Draft 
Docs when needed</a></li><li><span class="TOCOutline">3</span> <a shape="rect" 
href="#BuildingStruts2-Normalrelease-Besureyourlocalcopyisup-to-date">Be sure 
your local copy is up-to-date</a></li><li><span class="TOCOutline">4</span> <a 
shape="rect" href="#BuildingStruts2-Normalrelease-Createareleasebranch">Create 
a release branch</a></li><li><span class="TOCOutline">5</span> <a shape="rect" 
href="#BuildingStruts2-Normalrelease-Preparerelease">Prepare 
release</a></li><li><span class="TOCOutline">6</span> <a shape="rect" 
href="#BuildingStruts2-Normalrelease-Performtherelease">Perform the 
release</a></li><li><span class="TOCOutline">7</span> <a shape="rect" 
href="#BuildingStruts2-Normalrelease-Movetheasse
 mblies">Move the assemblies</a></li><li><span class="TOCOutline">8</span> <a 
shape="rect" 
href="#BuildingStruts2-Normalrelease-Announceavailability">Announce 
availability</a></li><li><span class="TOCOutline">9</span> <a shape="rect" 
href="#BuildingStruts2-Normalrelease-Cleanuprepository">Clean up 
repository</a></li><li><span class="TOCOutline">10</span> <a shape="rect" 
href="#BuildingStruts2-Normalrelease-Voteonit">Vote on it</a></li><li><span 
class="TOCOutline">11</span> <a shape="rect" 
href="#BuildingStruts2-Normalrelease-Copyfiles">Copy files</a></li><li><span 
class="TOCOutline">12</span> <a shape="rect" 
href="#BuildingStruts2-Normalrelease-Promoterelease">Promote 
release</a></li><li><span class="TOCOutline">13</span> <a shape="rect" 
href="#BuildingStruts2-Normalrelease-Cleanupoldreleases">Clean up old 
releases</a></li><li><span class="TOCOutline">14</span> <a shape="rect" 
href="#BuildingStruts2-Normalrelease-Waitforrsync">Wait for 
rsync</a></li><li><span class="TOCOutline">15</s
 pan> <a shape="rect" 
href="#BuildingStruts2-Normalrelease-(Optional)-UpdateSecurityBulletins">(Optional)
 - Update Security Bulletins</a></li><li><span class="TOCOutline">16</span> <a 
shape="rect" href="#BuildingStruts2-Normalrelease-Updatesite">Update 
site</a></li><li><span class="TOCOutline">17</span> <a shape="rect" 
href="#BuildingStruts2-Normalrelease-Redeploythedraftdocs(Optional)">Redeploy 
the draft docs (Optional)</a></li><li><span class="TOCOutline">18</span> <a 
shape="rect" href="#BuildingStruts2-Normalrelease-Postannouncements">Post 
announcements</a></li></ul>
 </div><h2 id="BuildingStruts2-Normalrelease-BuildingSteps(Struts)">Building 
Steps (Struts)</h2><h3 id="BuildingStruts2-Normalrelease-Gettingready">Getting 
ready</h3><ol><li>Create an "Struts 2.x.y omnibus ticket" ticket in JIRA to 
refer to in upcoming release related commit comments and for general 
documentation purposes. Mark it with priority "Blocker".</li><li>Switch to 
branch&#160;<code>develop</code></li><li>Ensure that the master POM and Struts 
Annotations have current releases</li><li>Review JIRA for any issues without a 
fix version set, and for any issues that should be resolved for the pending 
release.</li><li>Ensure that there are no repositories or pluginRepositories 
listed in the poms.</li><li>If you have committed all changes regarding the 
release process, close the omnibus ticket as it is the last open ticket for the 
upcoming release</li><li>Release the upcoming version in JIRA (under 
Administration/Manage Releases) and tag the release date</li><li>Add next 
milestone ve
 rsion to the JIRA roadmap</li><li>Create DONE and TODO filters for the new 
version, share with all, and remove obsolete TODO filter</li><li>Create a new 
Version Notes page in Confluence, link from <a shape="rect" 
href="migration-guide.html">Migration Guide</a>, and link to prior release page 
and JIRA DONE filters of the version to release</li><li>Export wiki pages and 
put them under&#160;<code>/docs</code></li></ol><h3 
id="BuildingStruts2-Normalrelease-UpdateDraftDocswhenneeded">Update Draft Docs 
when needed</h3><p>Checkout&#160;<code>struts-site</code> project (see details 
at the bottom of this page) and perform export:</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <script class="theme: Default; brush: java; gutter: false" 
type="syntaxhighlighter"><![CDATA[cd struts-site
@@ -226,7 +226,7 @@ find . -type f -name "struts-2.3.x*" -ex
 </div></div><p>where <code>x</code> is the previous version to remove (or one 
more previous to keep current and one version back).</p><h3 
id="BuildingStruts2-Normalrelease-Waitforrsync">Wait for rsync</h3><p>Wait 24 
hours before proceeding.</p><h3 
id="BuildingStruts2-Normalrelease-(Optional)-UpdateSecurityBulletins">(Optional)
 - Update Security Bulletins</h3><p>If the release will fix a - hopefully yet 
undisclosed - security issue, it's now time to update the <a shape="rect" 
href="security-bulletins.html">Security Bulletins</a> page and add a new 
announcement. For a template, just check former announcements</p><h3 
id="BuildingStruts2-Normalrelease-Updatesite"><span style="line-height: 
1.5625;">Update site</span></h3><ul><li><p>Check out site src code</p><div 
class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
 <script class="theme: Default; brush: java; gutter: false" 
type="syntaxhighlighter"><![CDATA[svn co 
https://svn.apache.org/repos/asf/struts/site/ struts-site
 ]]></script>
-</div></div></li><li>If a new DTD was defined, add it 
to&#160;<code>source/dtds</code></li><li>Update current version and release 
date in&#160;<code>struts-site/_config.yml</code></li><li>Update page source 
files<ul><li>struts-site/source/announce.md (if applicable, refer also to 
corresponding security bulletin)</li><li>struts-site/source/downloads.html 
(Prior Releases section)</li><li>struts-site/source/index.html (some parts will 
updated automatically with values defined 
in&#160;<code>_config.yml</code>)</li><li><span style="line-height: 
1.4285715;">struts-site/source/archetype-catalog.xml</span></li></ul></li><li>Generate
 site with Jekyll<ul><li><code>jekyll build</code></li><li>with <code>jekyll 
serve -w</code> you can check the generated site at 
http://localhost:4000</li></ul></li><li><p>Commit the changes and the generated 
content</p></li></ul><p>Now the changes must be deployed to production which is 
basically a separated Subversion repository, you check it out with command b
 elow:</p><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeContent panelContent pdl">
+</div></div></li><li>If a new DTD was defined, add it 
to&#160;<code>source/dtds</code></li><li>Update current version and release 
date in&#160;<code>struts-site/_config.yml</code></li><li>Update page source 
files<ul><li>struts-site/source/announce.md (if applicable, refer also to 
corresponding security bulletin)</li><li>struts-site/source/downloads.html 
(Prior Releases section)</li><li>struts-site/source/index.html (some parts will 
updated automatically with values defined 
in&#160;<code>_config.yml</code>)</li></ul></li><li>Generate site with 
Jekyll<ul><li><code>jekyll build</code></li><li>with <code>jekyll serve 
-w</code> you can check the generated site at 
http://localhost:4000</li></ul></li><li><p>Commit the changes and the generated 
content</p></li></ul><p>Now the changes must be deployed to production which is 
basically a separated Subversion repository, you check it out with command 
below:</p><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeContent panelC
 ontent pdl">
 <script class="theme: Default; brush: java; gutter: false" 
type="syntaxhighlighter"><![CDATA[svn co 
https://svn.apache.org/repos/infra/websites/production/struts/content 
struts-production]]></script>
 </div></div><p>It's a good idea to keep that working copy to be used with 
future releases. Right now copy content 
of&#160;<code>struts-site/content</code> 
to&#160;<code>struts-production</code>, then commit changes. Next step is to 
update exported wiki pages. With current approach the pages are kept 
in&#160;<code>struts-production/release/2.X.x/docs</code> 
where&#160;<code>X</code> is the current branch (ie. 2.3.x, 2.2.x and so on). 
Simply remove the whole content from under&#160;<code>/docs</code> and update 
it with docs from assembly (you can download one from Maven repository or copy 
generated during release process which supposes to be 
in&#160;<code>struts/assembly/target/cwiki</code>). And commit changes.</p><h3 
id="BuildingStruts2-Normalrelease-Redeploythedraftdocs(Optional)"><span 
style="line-height: 1.5625;">Redeploy the draft docs 
(Optional)</span></h3><p>Make public available all the pages that could leak 
confidential information about the vulnerability. Wait or manually e
 xport the space in Confluence. Build snapshot locally and copy 
<code>assembly/target/assembly/out/struts2-#.#.#-SNAPSHOT-docs.zip</code> to 
<code>people.apache.org</code> and update 
<code>/www/struts.apache.org/2.x/docs</code></p><h3 
id="BuildingStruts2-Normalrelease-Postannouncements"><span style="line-height: 
1.5625;">Post announcements</span></h3><p>We leave this as the last step, once 
the artifacts have had time to sync up on the mirrors. Target it to: 
<code>user@struts.a.o</code> and <code>announcements@struts.a.o</code>, samples 
are available at <a shape="rect" href="sample-announcements.html">Sample 
announcements</a> page</p></div>
         </div>

Modified: 
websites/production/struts/content/development/2.x/docs/migration-guide.html
==============================================================================
--- 
websites/production/struts/content/development/2.x/docs/migration-guide.html 
(original)
+++ 
websites/production/struts/content/development/2.x/docs/migration-guide.html 
Tue May  6 06:15:53 2014
@@ -125,7 +125,7 @@ under the License. 
 
     <div class="pagecontent">
         <div class="wiki-content">
-            <div id="ConfluenceContent"><p>Getting here from there.</p><h3 
id="MigrationGuide-VersionNotes2.3.x">Version Notes 2.3.x</h3><ul><li><a 
shape="rect" href="version-notes-2318.html">Version Notes 2.3.18</a></li><li><a 
shape="rect" href="version-notes-23162.html">Version Notes 
2.3.16.2</a></li><li><a shape="rect" href="version-notes-2316.html">Version 
Notes 2.3.16.1</a></li><li><a shape="rect" 
href="version-notes-2316.html">Version Notes 2.3.16</a></li><li><a shape="rect" 
href="version-notes-23153.html">Version Notes 2.3.15.3</a></li><li><a 
shape="rect" href="version-notes-23152.html">Version Notes 
2.3.15.2</a></li><li><a shape="rect" href="version-notes-23151.html">Version 
Notes 2.3.15.1</a></li><li><a shape="rect" 
href="version-notes-2315.html">Version Notes 2.3.15</a></li><li><a shape="rect" 
href="version-notes-23143.html">Version Notes 2.3.14.3</a></li><li><a 
shape="rect" href="version-notes-23142.html">Version Notes 
2.3.14.2</a></li><li><a shape="rect" href="version-no
 tes-23141.html">Version Notes 2.3.14.1</a></li><li><a shape="rect" 
href="version-notes-2314.html">Version Notes 2.3.14</a></li><li><a shape="rect" 
href="version-notes-23120.html">Version Notes 2.3.12.0</a></li><li><a 
shape="rect" href="version-notes-238.html">Version Notes 2.3.8</a></li><li><a 
shape="rect" href="version-notes-237.html">Version Notes 2.3.7</a></li><li><a 
shape="rect" href="version-notes-2341.html">Version Notes 
2.3.4.1</a></li><li><a shape="rect" href="version-notes-234.html">Version Notes 
2.3.4</a></li><li><a shape="rect" href="version-notes-233.html">Version Notes 
2.3.3</a></li><li><a shape="rect" href="version-notes-2312.html">Version Notes 
2.3.1.2</a></li><li><a shape="rect" href="version-notes-2311.html">Version 
Notes 2.3.1.1</a></li><li><a shape="rect" href="version-notes-231.html">Version 
Notes 2.3.1</a></li></ul><h3 id="MigrationGuide-VersionNotes2.2.x">Version 
Notes 2.2.x</h3><ul><li><a shape="rect" href="version-notes-2231.html">Version 
Notes 2.2.3.1</a></l
 i><li><a shape="rect" href="version-notes-223.html">Version Notes 
2.2.3</a></li><li><a shape="rect" href="version-notes-2211.html">Version Notes 
2.2.1.1</a></li><li><a shape="rect" href="version-notes-221.html">Version Notes 
2.2.1</a></li></ul><h3 id="MigrationGuide-VersionNotes2.1.x">Version Notes 
2.1.x</h3><ul><li><a shape="rect" href="version-notes-2181.html">Version Notes 
2.1.8.1</a></li><li><a shape="rect" href="version-notes-218.html">Version Notes 
2.1.8</a></li><li><a shape="rect" href="version-notes-216.html">Version Notes 
2.1.6</a></li><li><a shape="rect" href="version-notes-215.html">Version Notes 
2.1.5</a></li><li><a shape="rect" href="version-notes-214.html">Version Notes 
2.1.4</a></li><li><a shape="rect" href="version-notes-213.html">Version Notes 
2.1.3</a></li><li><a shape="rect" href="version-notes-212.html">Version Notes 
2.1.2</a></li><li><a shape="rect" href="version-notes-211.html">Version Notes 
2.1.1</a></li><li><a shape="rect" href="version-notes-210.html">Versio
 n Notes 2.1.0</a></li></ul><h3 id="MigrationGuide-ReleaseNotes2.0.x">Release 
Notes 2.0.x</h3><ul><li><a shape="rect" href="release-notes-2014.html">Release 
Notes 2.0.14</a></li><li><a shape="rect" href="release-notes-2013.html">Release 
Notes 2.0.13</a></li><li><a shape="rect" href="release-notes-2012.html">Release 
Notes 2.0.12</a></li><li><a shape="rect" 
href="release-notes-20112.html">Release Notes 2.0.11.2</a></li><li><a 
shape="rect" href="release-notes-20111.html">Release Notes 
2.0.11.1</a></li><li><a shape="rect" href="release-notes-2011.html">Release 
Notes 2.0.11</a></li><li><a shape="rect" href="release-notes-2010.html">Release 
Notes 2.0.10</a></li><li><a shape="rect" href="release-notes-209.html">Release 
Notes 2.0.9</a></li><li><a shape="rect" href="release-notes-208.html">Release 
Notes 2.0.8</a></li><li><a shape="rect" href="release-notes-207.html">Release 
Notes 2.0.7</a></li><li><a shape="rect" href="release-notes-206.html">Release 
Notes 2.0.6</a></li><li><a shape="rect" hr
 ef="release-notes-205.html">Release Notes 2.0.5</a></li><li><a shape="rect" 
href="release-notes-204.html">Release Notes 2.0.4</a></li><li><a shape="rect" 
href="release-notes-203.html">Release Notes 2.0.3</a></li><li><a shape="rect" 
href="release-notes-202.html">Release Notes 2.0.2</a></li><li><a shape="rect" 
href="release-notes-201.html">Release Notes 2.0.1</a></li><li><a shape="rect" 
href="release-notes-200.html">Release Notes 2.0.0</a></li></ul><h3 
id="MigrationGuide-Struts1toStruts2">Struts 1 to Struts 2</h3><div 
class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" 
rowspan="1" class="confluenceTh"><p><a shape="rect" 
href="comparing-struts-1-and-2.html">Comparing Struts 1 and 2</a></p></th><td 
colspan="1" rowspan="1" class="confluenceTd"><p>How are Struts 1 and Struts 2 
alike? How are they different?</p></td></tr><tr><th colspan="1" rowspan="1" 
class="confluenceTh"><p><a shape="rect" href="struts-1-solutions.html">Struts 1 
Solutions</a></p></th><td colspan=
 "1" rowspan="1" class="confluenceTd"><p>Various issues (and hopefully their 
solutions!) encountered during migrations to Struts 2.</p></td></tr><tr><th 
colspan="1" rowspan="1" class="confluenceTh"><p><a shape="rect" 
href="migration-strategies.html">Migration Strategies</a></p></th><td 
colspan="1" rowspan="1" class="confluenceTd"><p>Steps and overall strategies 
for migrating Struts 1 applications to Struts 2.</p></td></tr><tr><th 
colspan="1" rowspan="1" class="confluenceTh"><p><a shape="rect" 
href="migration-tools.html">Migration Tools</a></p></th><td colspan="1" 
rowspan="1" class="confluenceTd"><p>Development tools to help aid the migration 
process.</p></td></tr></tbody></table></div><h4 
id="MigrationGuide-Tutorials">Tutorials</h4><div class="table-wrap"><table 
class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" 
class="confluenceTh"><p><a shape="rect" class="external-link" 
href="http://www.infoq.com/news/migrating-struts2"; rel="nofollow">Migrating 
Applications to Struts 2
  </a></p></th><td colspan="1" rowspan="1" class="confluenceTd"><p>A three-part 
series by Ian Roughley (Sep 2006)</p></td></tr></tbody></table></div><h4 
id="MigrationGuide-Roadmap">Roadmap</h4><div class="table-wrap"><table 
class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" 
class="confluenceTh"><p><a shape="rect" class="external-link" 
href="http://struts.apache.org/roadmap.html#new";>Roadmap FAQ</a></p></th><td 
colspan="1" rowspan="1" class="confluenceTd"><p>What's in store for Struts 
2?</p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p><a 
shape="rect" class="external-link" 
href="http://www.oreillynet.com/onjava/blog/2006/10/my_history_of_struts_2.html";
 rel="nofollow">A History of Struts 2</a></p></th><td colspan="1" rowspan="1" 
class="confluenceTd"><p>Don Brown's summary of 
events</p></td></tr></tbody></table></div><h3 
id="MigrationGuide-Webwork2.2toStruts2">Webwork 2.2 to Struts 2</h3><div 
class="table-wrap"><table class="confluenceTable"><tbody><tr><t
 h colspan="1" rowspan="1" class="confluenceTh"><p><a shape="rect" 
href="key-changes-from-webwork-2.html">Key Changes From WebWork 
2</a></p></th><td colspan="1" rowspan="1" class="confluenceTd"><p>What has been 
removed or changed from WebWork 2.2 to Struts 2</p></td></tr><tr><th 
colspan="1" rowspan="1" class="confluenceTh"><p><a shape="rect" 
href="webwork-2-migration-strategies.html">WebWork 2 Migration 
Strategies</a></p></th><td colspan="1" rowspan="1" 
class="confluenceTd"><p>Steps and overall strategies for migrating WebWork 2 
applications to Struts 2.</p></td></tr></tbody></table></div><h2 
id="MigrationGuide-FAQs">FAQs</h2><ul><li><a shape="rect" 
href="where-do-we-get-the-latest-version-the-framework.html">Where do we get 
the latest version the framework</a>?</li><li><a shape="rect" 
href="what-are-some-of-the-frameworks-best-features.html">What are some of the 
framework's best features</a>?</li><li><a shape="rect" 
href="what-is-the-actioncontext.html">What is the ActionContext?</a
 ></li></ul><h2 id="MigrationGuide-Next:">Next: <a shape="rect" 
 >href="contributors-guide.html">Contributors Guide</a></h2></div>
+            <div id="ConfluenceContent"><p>Getting here from there.</p><h3 
id="MigrationGuide-VersionNotes2.3.x">Version Notes 2.3.x</h3><ul><li><a 
shape="rect" href="version-notes-2318.html">Version Notes 2.3.18</a></li><li><a 
shape="rect" href="version-notes-23163.html">Version Notes 
2.3.16.3</a></li><li><a shape="rect" href="version-notes-23162.html">Version 
Notes 2.3.16.2</a></li><li><a shape="rect" 
href="version-notes-2316.html">Version Notes 2.3.16.1</a></li><li><a 
shape="rect" href="version-notes-2316.html">Version Notes 2.3.16</a></li><li><a 
shape="rect" href="version-notes-23153.html">Version Notes 
2.3.15.3</a></li><li><a shape="rect" href="version-notes-23152.html">Version 
Notes 2.3.15.2</a></li><li><a shape="rect" 
href="version-notes-23151.html">Version Notes 2.3.15.1</a></li><li><a 
shape="rect" href="version-notes-2315.html">Version Notes 2.3.15</a></li><li><a 
shape="rect" href="version-notes-23143.html">Version Notes 
2.3.14.3</a></li><li><a shape="rect" href="version-no
 tes-23142.html">Version Notes 2.3.14.2</a></li><li><a shape="rect" 
href="version-notes-23141.html">Version Notes 2.3.14.1</a></li><li><a 
shape="rect" href="version-notes-2314.html">Version Notes 2.3.14</a></li><li><a 
shape="rect" href="version-notes-23120.html">Version Notes 
2.3.12.0</a></li><li><a shape="rect" href="version-notes-238.html">Version 
Notes 2.3.8</a></li><li><a shape="rect" href="version-notes-237.html">Version 
Notes 2.3.7</a></li><li><a shape="rect" href="version-notes-2341.html">Version 
Notes 2.3.4.1</a></li><li><a shape="rect" href="version-notes-234.html">Version 
Notes 2.3.4</a></li><li><a shape="rect" href="version-notes-233.html">Version 
Notes 2.3.3</a></li><li><a shape="rect" href="version-notes-2312.html">Version 
Notes 2.3.1.2</a></li><li><a shape="rect" 
href="version-notes-2311.html">Version Notes 2.3.1.1</a></li><li><a 
shape="rect" href="version-notes-231.html">Version Notes 2.3.1</a></li></ul><h3 
id="MigrationGuide-VersionNotes2.2.x">Version Notes 2.2.x</h3>
 <ul><li><a shape="rect" href="version-notes-2231.html">Version Notes 
2.2.3.1</a></li><li><a shape="rect" href="version-notes-223.html">Version Notes 
2.2.3</a></li><li><a shape="rect" href="version-notes-2211.html">Version Notes 
2.2.1.1</a></li><li><a shape="rect" href="version-notes-221.html">Version Notes 
2.2.1</a></li></ul><h3 id="MigrationGuide-VersionNotes2.1.x">Version Notes 
2.1.x</h3><ul><li><a shape="rect" href="version-notes-2181.html">Version Notes 
2.1.8.1</a></li><li><a shape="rect" href="version-notes-218.html">Version Notes 
2.1.8</a></li><li><a shape="rect" href="version-notes-216.html">Version Notes 
2.1.6</a></li><li><a shape="rect" href="version-notes-215.html">Version Notes 
2.1.5</a></li><li><a shape="rect" href="version-notes-214.html">Version Notes 
2.1.4</a></li><li><a shape="rect" href="version-notes-213.html">Version Notes 
2.1.3</a></li><li><a shape="rect" href="version-notes-212.html">Version Notes 
2.1.2</a></li><li><a shape="rect" href="version-notes-211.html">V
 ersion Notes 2.1.1</a></li><li><a shape="rect" 
href="version-notes-210.html">Version Notes 2.1.0</a></li></ul><h3 
id="MigrationGuide-ReleaseNotes2.0.x">Release Notes 2.0.x</h3><ul><li><a 
shape="rect" href="release-notes-2014.html">Release Notes 2.0.14</a></li><li><a 
shape="rect" href="release-notes-2013.html">Release Notes 2.0.13</a></li><li><a 
shape="rect" href="release-notes-2012.html">Release Notes 2.0.12</a></li><li><a 
shape="rect" href="release-notes-20112.html">Release Notes 
2.0.11.2</a></li><li><a shape="rect" href="release-notes-20111.html">Release 
Notes 2.0.11.1</a></li><li><a shape="rect" 
href="release-notes-2011.html">Release Notes 2.0.11</a></li><li><a shape="rect" 
href="release-notes-2010.html">Release Notes 2.0.10</a></li><li><a shape="rect" 
href="release-notes-209.html">Release Notes 2.0.9</a></li><li><a shape="rect" 
href="release-notes-208.html">Release Notes 2.0.8</a></li><li><a shape="rect" 
href="release-notes-207.html">Release Notes 2.0.7</a></li><li><a shape="rec
 t" href="release-notes-206.html">Release Notes 2.0.6</a></li><li><a 
shape="rect" href="release-notes-205.html">Release Notes 2.0.5</a></li><li><a 
shape="rect" href="release-notes-204.html">Release Notes 2.0.4</a></li><li><a 
shape="rect" href="release-notes-203.html">Release Notes 2.0.3</a></li><li><a 
shape="rect" href="release-notes-202.html">Release Notes 2.0.2</a></li><li><a 
shape="rect" href="release-notes-201.html">Release Notes 2.0.1</a></li><li><a 
shape="rect" href="release-notes-200.html">Release Notes 2.0.0</a></li></ul><h3 
id="MigrationGuide-Struts1toStruts2">Struts 1 to Struts 2</h3><div 
class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" 
rowspan="1" class="confluenceTh"><p><a shape="rect" 
href="comparing-struts-1-and-2.html">Comparing Struts 1 and 2</a></p></th><td 
colspan="1" rowspan="1" class="confluenceTd"><p>How are Struts 1 and Struts 2 
alike? How are they different?</p></td></tr><tr><th colspan="1" rowspan="1" 
class="confluenceTh"><p><a shap
 e="rect" href="struts-1-solutions.html">Struts 1 Solutions</a></p></th><td 
colspan="1" rowspan="1" class="confluenceTd"><p>Various issues (and hopefully 
their solutions!) encountered during migrations to Struts 
2.</p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p><a 
shape="rect" href="migration-strategies.html">Migration 
Strategies</a></p></th><td colspan="1" rowspan="1" 
class="confluenceTd"><p>Steps and overall strategies for migrating Struts 1 
applications to Struts 2.</p></td></tr><tr><th colspan="1" rowspan="1" 
class="confluenceTh"><p><a shape="rect" href="migration-tools.html">Migration 
Tools</a></p></th><td colspan="1" rowspan="1" 
class="confluenceTd"><p>Development tools to help aid the migration 
process.</p></td></tr></tbody></table></div><h4 
id="MigrationGuide-Tutorials">Tutorials</h4><div class="table-wrap"><table 
class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" 
class="confluenceTh"><p><a shape="rect" class="external-link" href="http://www.
 infoq.com/news/migrating-struts2" rel="nofollow">Migrating Applications to 
Struts 2 </a></p></th><td colspan="1" rowspan="1" class="confluenceTd"><p>A 
three-part series by Ian Roughley (Sep 
2006)</p></td></tr></tbody></table></div><h4 
id="MigrationGuide-Roadmap">Roadmap</h4><div class="table-wrap"><table 
class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" 
class="confluenceTh"><p><a shape="rect" class="external-link" 
href="http://struts.apache.org/roadmap.html#new";>Roadmap FAQ</a></p></th><td 
colspan="1" rowspan="1" class="confluenceTd"><p>What's in store for Struts 
2?</p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p><a 
shape="rect" class="external-link" 
href="http://www.oreillynet.com/onjava/blog/2006/10/my_history_of_struts_2.html";
 rel="nofollow">A History of Struts 2</a></p></th><td colspan="1" rowspan="1" 
class="confluenceTd"><p>Don Brown's summary of 
events</p></td></tr></tbody></table></div><h3 
id="MigrationGuide-Webwork2.2toStruts2">Webwork 2.2 t
 o Struts 2</h3><div class="table-wrap"><table 
class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" 
class="confluenceTh"><p><a shape="rect" 
href="key-changes-from-webwork-2.html">Key Changes From WebWork 
2</a></p></th><td colspan="1" rowspan="1" class="confluenceTd"><p>What has been 
removed or changed from WebWork 2.2 to Struts 2</p></td></tr><tr><th 
colspan="1" rowspan="1" class="confluenceTh"><p><a shape="rect" 
href="webwork-2-migration-strategies.html">WebWork 2 Migration 
Strategies</a></p></th><td colspan="1" rowspan="1" 
class="confluenceTd"><p>Steps and overall strategies for migrating WebWork 2 
applications to Struts 2.</p></td></tr></tbody></table></div><h2 
id="MigrationGuide-FAQs">FAQs</h2><ul><li><a shape="rect" 
href="where-do-we-get-the-latest-version-the-framework.html">Where do we get 
the latest version the framework</a>?</li><li><a shape="rect" 
href="what-are-some-of-the-frameworks-best-features.html">What are some of the 
framework's best features</a>?</li><li>
 <a shape="rect" href="what-is-the-actioncontext.html">What is the 
ActionContext?</a></li></ul><h2 id="MigrationGuide-Next:">Next: <a shape="rect" 
href="contributors-guide.html">Contributors Guide</a></h2></div>
         </div>
 
                     <div class="tabletitle">
@@ -319,6 +319,9 @@ under the License. 
                                     $page.link($child)
                     <span class="smalltext">(Apache Struts 2 
Documentation)</span>
                     <br>
+                                    $page.link($child)
+                    <span class="smalltext">(Apache Struts 2 
Documentation)</span>
+                    <br>
                             </div>
         
     </div>

Modified: 
websites/production/struts/content/development/2.x/docs/ognl-basics.html
==============================================================================
--- websites/production/struts/content/development/2.x/docs/ognl-basics.html 
(original)
+++ websites/production/struts/content/development/2.x/docs/ognl-basics.html 
Tue May  6 06:15:53 2014
@@ -19,7 +19,7 @@ under the License. 
 -->
 <html>
 <head>
-    <LINK type="text/css" rel="stylesheet" 
href="https://struts.apache.org/css/default.css";>
+    <link type="text/css" rel="stylesheet" 
href="https://struts.apache.org/css/default.css";>
     <style type="text/css">
         .dp-highlighter {
             width:95% !important;
@@ -37,8 +37,8 @@ under the License. 
     <link href='http://struts.apache.org/highlighter/style/shCoreStruts.css' 
rel='stylesheet' type='text/css' />
     <link href='http://struts.apache.org/highlighter/style/shThemeStruts.css' 
rel='stylesheet' type='text/css' />
     <script src='http://struts.apache.org/highlighter/js/shCore.js' 
type='text/javascript'></script>
-            <script 
src='http://struts.apache.org/highlighter/js/shBrushJava.js' 
type='text/javascript'></script>
-    
+    <script src='http://struts.apache.org/highlighter/js/shBrushJava.js' 
type='text/javascript'></script>
+
     <script type="text/javascript">
         SyntaxHighlighter.defaults['toolbar'] = false;
         SyntaxHighlighter.all();
@@ -134,76 +134,33 @@ under the License. 
 
     <div class="pagecontent">
         <div class="wiki-content">
-            <div id="ConfluenceContent"><declarations><string 
at:name="vs"></string><string at:name="vs1"></string><string 
at:name="vs2"></string></declarations><h2 
id="OGNLBasics-XWork-specificlanguagefeatures">XWork-specific language 
features</h2>
-
-<p>The biggest addition that XWork provides on top of OGNL is the support for 
the ValueStack. While OGNL operates under the assumption there is only one 
"root", XWork's ValueStack concept requires there be many "roots". </p>
-
-<p>For example, suppose we are using standard OGNL (not using XWork) and there 
are two objects in the OgnlContext map: "foo" -&gt; foo and "bar" -&gt; bar and 
that the foo object is also configured to be the single <strong>root</strong> 
object. The following code illustrates how OGNL deals with these three 
situations:</p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
-<script class="theme: Default; brush: java; gutter: false" 
type="syntaxhighlighter"><![CDATA[
-#foo.blah // returns foo.getBlah()
+            <div id="ConfluenceContent"><h2 
id="OGNLBasics-XWork-specificlanguagefeatures">XWork-specific language 
features</h2><p>The biggest addition that XWork provides on top of OGNL is the 
support for the ValueStack. While OGNL operates under the assumption there is 
only one "root", XWork's ValueStack concept requires there be many 
"roots".</p><p>For example, suppose we are using standard OGNL (not using 
XWork) and there are two objects in the OgnlContext map: "foo" -&gt; foo and 
"bar" -&gt; bar and that the foo object is also configured to be the single 
<strong>root</strong> object. The following code illustrates how OGNL deals 
with these three situations:</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: java; gutter: false" 
type="syntaxhighlighter"><![CDATA[#foo.blah // returns foo.getBlah()
 #bar.blah // returns bar.getBlah()
 blah      // returns foo.getBlah() because foo is the root
 ]]></script>
-</div></div>
-
-<p>What this means is that OGNL allows many objects in the context, but unless 
the object you are trying to access is the root, it must be prepended with a 
namespaces such as @bar. Now let's talk about how XWork is a little 
different...</p>
-
-    <div class="aui-message hint shadowed information-macro">
+</div></div><p>What this means is that OGNL allows many objects in the 
context, but unless the object you are trying to access is the root, it must be 
prepended with a namespaces such as @bar. Now let's talk about how XWork is a 
little different...</p>    <div class="aui-message hint shadowed 
information-macro">
                     <p class="title">Useful Information</p>
                             <span class="aui-icon icon-hint">Icon</span>
                 <div class="message-content">
-                            
-<p>In XWork, the entire ValueStack is the root object in the context. Rather 
than having your expressions get the object you want from the stack and then 
get properties from that (ie: peek().blah), XWork has a special OGNL 
PropertyAccessor that will automatically look at the all entries in the stack 
(from the top down) until it finds an object with the property you are looking 
for.</p>
+                            <p>In XWork, the entire ValueStack is the root 
object in the context. Rather than having your expressions get the object you 
want from the stack and then get properties from that (ie: peek().blah), XWork 
has a special OGNL PropertyAccessor that will automatically look at the all 
entries in the stack (from the top down) until it finds an object with the 
property you are looking for.</p>
                     </div>
     </div>
-
-
-<p>For example, suppose the stack contains two objects: Animal and Person. 
Both objects have a "name" property, Animal has a "species" property, and 
Person has a "salary" property. Animal is on the top of the stack, and Person 
is below it. The follow code fragments help you get an idea of what is going on 
here:</p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
-<script class="theme: Default; brush: java; gutter: false" 
type="syntaxhighlighter"><![CDATA[
-species    // call to animal.getSpecies()
+<p>For example, suppose the stack contains two objects: Animal and Person. 
Both objects have a "name" property, Animal has a "species" property, and 
Person has a "salary" property. Animal is on the top of the stack, and Person 
is below it. The follow code fragments help you get an idea of what is going on 
here:</p><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeContent panelContent pdl">
+<script class="theme: Default; brush: java; gutter: false" 
type="syntaxhighlighter"><![CDATA[species    // call to animal.getSpecies()
 salary     // call to person.getSalary()
 name       // call to animal.getName() because animal is on the top
 ]]></script>
-</div></div>
-
-<p>In the last example, there was a tie and so the animal's name was returned. 
Usually this is the desired effect, but sometimes you want the property of a 
lower-level object. To do this, XWork has added support for indexes on the 
ValueStack. All you have to do is:</p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
-<script class="theme: Default; brush: java; gutter: false" 
type="syntaxhighlighter"><![CDATA[
-[0].name   // call to animal.getName()
+</div></div><p>In the last example, there was a tie and so the animal's name 
was returned. Usually this is the desired effect, but sometimes you want the 
property of a lower-level object. To do this, XWork has added support for 
indexes on the ValueStack. All you have to do is:</p><div class="code panel 
pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: java; gutter: false" 
type="syntaxhighlighter"><![CDATA[[0].name   // call to animal.getName()
 [1].name   // call to person.getName()
 ]]></script>
-</div></div>
-
-<p>With expression like [0] ... [3] etc. Struts 2 will cut the stack and still 
return back a CompoundRoot object. To get the top of that particular stack cut, 
use <a shape="rect" class="createlink" 
href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=WW&amp;title=0&amp;linkCreation=true&amp;fromPageId=14000";>0</a>.top</p>
-
-<div class="table-wrap"><table class="confluenceTable"><tbody><tr><th 
colspan="1" rowspan="1" class="confluenceTh"><p>ognl expression</p></th><th 
colspan="1" rowspan="1" 
class="confluenceTh"><p>description</p></th></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p> [0].top </p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p> would get the top of the stack cut 
starting from element 0 in the stack (similar to top in this 
case)</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> 
[1].top </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> would get 
the top of the stack cut starting from element 1 in the 
stack</p></td></tr></tbody></table></div>
-
-
-<h2 id="OGNLBasics-Accessingstaticproperties">Accessing static properties</h2>
-
-<p>OGNL supports accessing static properties as well as static methods.</p>
-
-<p>By default, Struts 2 is configured to disallow this--to enable OGNL's 
static member support you must set the 
<code>struts.ognl.allowStaticMethodAccess</code> constant to <code>true</code> 
via any of the <a shape="rect" href="constant-configuration.html">Constant 
Configuration</a> methods.</p>
-
-<p>OGNL's static access looks like this: </p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
-<script class="theme: Default; brush: plain; gutter: false" 
type="syntaxhighlighter"><![CDATA[
-@some.package.ClassName@FOO_PROPERTY
+</div></div><p>With expression like [0] ... [3] etc. Struts 2 will cut the 
stack and still return back a CompoundRoot object. To get the top of that 
particular stack cut, use <a shape="rect" class="createlink" 
href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=WW&amp;title=0&amp;linkCreation=true&amp;fromPageId=14000";>0</a>.top</p><div
 class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" 
rowspan="1" class="confluenceTh"><p>ognl expression</p></th><th colspan="1" 
rowspan="1" class="confluenceTh"><p>description</p></th></tr><tr><td 
colspan="1" rowspan="1" class="confluenceTd"><p>[0].top</p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>would get the top of the stack cut starting 
from element 0 in the stack (similar to top in this case)</p></td></tr><tr><td 
colspan="1" rowspan="1" class="confluenceTd"><p>[1].top</p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>would get the top of the stack cut starting 
from element 1
  in the stack</p></td></tr></tbody></table></div><h2 
id="OGNLBasics-Accessingstaticproperties">Accessing static 
properties</h2><p>OGNL supports accessing static properties as well as static 
methods.</p><p>By default, Struts 2 is configured to disallow this--to enable 
OGNL's static member support you must set the 
<code>struts.ognl.allowStaticMethodAccess</code> constant to <code>true</code> 
via any of the <a shape="rect" href="constant-configuration.html">Constant 
Configuration</a> methods.</p><p>OGNL's static access looks like this:</p><div 
class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
+<script class="theme: Default; brush: plain; gutter: false" 
type="syntaxhighlighter"><![CDATA[@some.package.ClassName@FOO_PROPERTY
 @some.package.ClassName@someMethod()
 ]]></script>
-</div></div>
-
-<p>However, XWork allows you to avoid having to specify the full package name 
and call static properties and methods of your action classes using the "vs" 
prefix:</p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
-<script class="theme: Default; brush: java; gutter: false" 
type="syntaxhighlighter"><![CDATA[
-&lt;at:var at:name=&quot;vs&quot; /&gt;FOO_PROPERTY
+</div></div><p>However, XWork allows you to avoid having to specify the full 
package name and call static properties and methods of your action classes 
using the "vs" prefix:</p><div class="code panel pdl" style="border-width: 
1px;"><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: java; gutter: false" 
type="syntaxhighlighter"><![CDATA[&lt;at:var at:name=&quot;vs&quot; 
/&gt;FOO_PROPERTY
 &lt;at:var at:name=&quot;vs&quot; /&gt;someMethod()
 
 &lt;at:var at:name=&quot;vs1&quot; /&gt;FOO_PROPERTY
@@ -212,26 +169,7 @@ name       // call to animal.getName() b
 &lt;at:var at:name=&quot;vs2&quot; /&gt;BAR_PROPERTY
 &lt;at:var at:name=&quot;vs2&quot; /&gt;someOtherMethod()
 ]]></script>
-</div></div>
-
-<p>"vs" stands for "value stack".  The important thing to note here is that if 
the class name you specify is just "vs", the class for the object on the top of 
the stack is used. If you specify a number after the "vs" string, an object's 
class deeper in the stack is used instead.</p>
-
-
-
-<h2 id="OGNLBasics-DifferencesfromtheWebWork1.xEL">Differences from the 
WebWork 1.x EL</h2>
-
-<p>Besides the examples and descriptions given above, there are a few major 
changes in the EL since WebWork 1.x. The biggest one is that properties are no 
longer accessed with a forward slash (/) but with a dot (.). Also, rather than 
using ".." to traverse down the stack, we now use "[n]" where n is some 
positive number. Lastly, in WebWork 1.x one could access special named objects 
(the request scope attributes to be exact) by using "@foo", but now special 
variables are accessed using "#foo". However, it is important to note that 
"#foo" does NOT access the request attributes. Because XWork is not built only 
for the web, there is no concept of "request attributes", and thus "#foo" is 
merely a request to another object in the OgnlContext other than the root.</p>
-
-<div class="table-wrap"><table class="confluenceTable"><tbody><tr><th 
colspan="1" rowspan="1" class="confluenceTh"><p> Old Expression     
</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p> New Expression 
</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> foo/blah 
          </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> 
foo.blah          </p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p> foo/someMethod()   </p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p> foo.someMethod()  </p></td></tr><tr><td 
colspan="1" rowspan="1" class="confluenceTd"><p> ../bar/blah        
</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> [1].bar.blah    
</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> @baz     
          </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> not 
directly supported, but #baz is similar </p></td></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p> .      
             </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> top 
or [0] </p></td></tr></tbody></table></div>
-
-
-
-
-<h2 id="OGNLBasics-Struts2NamedObjects">Struts 2 Named Objects</h2>
-
-<p>Struts 2 places request parameters and request, session, and application 
attributes on the OGNL stack. They may be accessed as shown below.</p>
-
-<div class="table-wrap"><table class="confluenceTable"><tbody><tr><th 
colspan="1" rowspan="1" class="confluenceTh"><p>name</p></th><th colspan="1" 
rowspan="1" class="confluenceTh"><p>value</p></th></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p> #parameters['foo'] or #parameters.foo 
</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> request parameter 
['foo'] (request.getParameter()) </p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p> #request['foo'] or #request.foo </p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p> request attribute ['foo']  
(request.getAttribute()) </p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p> #session['foo'] or #session.foo </p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p> session attribute 'foo' 
</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> 
#application['foo'] or #application.foo </p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p> ServletC
 ontext attributes 'foo' </p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p> #attr['foo'] or #attr.foo </p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p> Access to PageContext if available, 
otherwise searches request/session/application 
respectively</p></td></tr></tbody></table></div></div>
+</div></div><p>"vs" stands for "value stack". The important thing to note here 
is that if the class name you specify is just "vs", the class for the object on 
the top of the stack is used. If you specify a number after the "vs" string, an 
object's class deeper in the stack is used instead.</p><h2 
id="OGNLBasics-DifferencesfromtheWebWork1.xEL">Differences from the WebWork 1.x 
EL</h2><p>Besides the examples and descriptions given above, there are a few 
major changes in the EL since WebWork 1.x. The biggest one is that properties 
are no longer accessed with a forward slash (/) but with a dot (.). Also, 
rather than using ".." to traverse down the stack, we now use "[n]" where n is 
some positive number. Lastly, in WebWork 1.x one could access special named 
objects (the request scope attributes to be exact) by using "@foo", but now 
special variables are accessed using "#foo". However, it is important to note 
that "#foo" does NOT access the request attributes. Because XWork is not built 
on
 ly for the web, there is no concept of "request attributes", and thus "#foo" 
is merely a request to another object in the OgnlContext other than the 
root.</p><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th 
colspan="1" rowspan="1" class="confluenceTh"><p>Old Expression</p></th><th 
colspan="1" rowspan="1" class="confluenceTh"><p>New 
Expression</p></th></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p>foo/blah</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>foo.blah</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p>foo/someMethod()</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>foo.someMethod()</p></td></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p>../bar/blah</p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>[1].bar.blah</p></td></tr><tr><td 
colspan="1" rowspan="1" class="confluenceTd"><p>@baz</p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>not directly supported, but #baz 
 is similar</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p>.</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>top or [0]</p></td></tr></tbody></table></div><h2 
id="OGNLBasics-Struts2NamedObjects">Struts 2 Named Objects</h2><p>Struts 2 
places request parameters and request, session, and application attributes on 
the OGNL stack. They may be accessed as shown below.</p><div 
class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" 
rowspan="1" class="confluenceTh"><p>name</p></th><th colspan="1" rowspan="1" 
class="confluenceTh"><p>value</p></th></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p>#parameters['foo'] or #parameters.foo</p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>request parameter ['foo'] 
(request.getParameter())</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p>#request['foo'] or #request.foo</p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>request attribute ['foo'] (r
 equest.getAttribute())</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p>#session['foo'] or #session.foo</p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>session attribute 
'foo'</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p>#application['foo'] or #application.foo</p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>ServletContext attributes 
'foo'</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p>#attr['foo'] or #attr.foo</p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>Access to PageContext if available, 
otherwise searches request/session/application 
respectively</p></td></tr></tbody></table></div></div>
         </div>
 
         


Reply via email to