[ https://issues.apache.org/jira/browse/WW-4164?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13726439#comment-13726439 ]
Jasper Rosenberg commented on WW-4164: -------------------------------------- True, but at least the way it needs to be changed is backwards compatible with all previous dtds (just adding optional attributes). > Improve support for multiple extensions > --------------------------------------- > > Key: WW-4164 > URL: https://issues.apache.org/jira/browse/WW-4164 > Project: Struts 2 > Issue Type: Improvement > Components: XML Configuration > Affects Versions: 2.3.15.1 > 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 does. > 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: http://www.atlassian.com/software/jira