struts-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Lukasz Lenart (JIRA)" <>
Subject [jira] [Updated] (WW-4164) Improve support for multiple extensions
Date Thu, 01 Aug 2013 13:51:49 GMT


Lukasz Lenart updated WW-4164:

    Fix Version/s: 2.5
> Improve support for multiple extensions
> ---------------------------------------
>                 Key: WW-4164
>                 URL:
>             Project: Struts 2
>          Issue Type: Improvement
>          Components: XML Configuration
>    Affects Versions:
>            Reporter: Jasper Rosenberg
>             Fix For: 2.5
> Currently if you support multiple extensions (eg. struts.action.extension=action,html,,)
there is no way to tell struts for a particular action which extension you always want to
use.  This has two downsides:
> 1. When struts has to generate an url, for example in the form tag, or the "redirectAction"
result type, there is no way to specify the extension to use, so it ends up using the current
invocation's extension if possible, or otherwise the default, neither of which might be correct.
> 2. You can invoke the action with any of the supported extensions, creating duplicate
pages with no clear canonical version.  (Bad for SEO as well)
> What I propose is allowing the user to specify an optional specific extension at the
package and action level in the struts xml configuration like so:
> {code:xml}
>   <package name="test" namespace="/" extends="default" extension="action">
>     <action name="a1" extension="">
>       <result>a1.ftl</result>
>     </action>
>     <action name="b1" extension="html">
>       <result>b1.ftl</result>
>     </action>
>     <action name="c1">
>       <result>b1.ftl</result>
>     </action>
>   </package>
> {code}
> 1. When selecting an extension when building an URL for an action, it would first see
if there was an extension to use at the action level.  If not it would check the package level
(including package inheritance).  If still no specific extension, it would behave as it currently
> 2. When mapping an incoming URL to an action, the reverse will also hold.  If the action
or its package specify a specific extension, then the action can only be matched if the URL
has that extension.
> So in the above example, the following urls would be expected to work:
> 1. /a1 (action level no extension)
> 2. /b1.html (action level "html" extension)
> 3. /c1.action (no action level extension, using package level "action" extension)
> However, an url like "/b1.action" will not match any actions because "action" extension
doesn't match the action's "html" extension.
> This change would be 100% backwards because if you don't specify any extension attributes
on the package or action, it falls back to the current behavior.

This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see:

View raw message