You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@struts.apache.org by "Lukasz Lenart (Jira)" <ji...@apache.org> on 2022/09/14 19:12:00 UTC

[jira] [Updated] (WW-3193) Form action always inherits parent extension

     [ https://issues.apache.org/jira/browse/WW-3193?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Lukasz Lenart updated WW-3193:
------------------------------
    Description: 
Here is the basic issue.  I have an url that has no extension, eg. /Overview-Mustang-c1234

On that page, I have a form tag that I want to have submit to action "changeCar.action", and so the "action" attribute is set to "changeCar".  

This used to work.  However, task WW-2267 changed the behavior so that the form's action gets the parent mapping's extension [DefaultActionMapper.getUriFromActionMapping() called from ServletUrlRenderer.renderFormUrl()], in this case the empty string, so the generated action ends up as just "changeCar" rather than "changeCar.action"  Because we have some special handling for our mappings, this url ends up as a 404.  It just doesn't seem desirable in general however that the same form included on different pages with different extensions will generate posts to two differently named urls.

I understand the concept behind this change, but I wonder if it would be safer to revert it, and instead add support for an attribute on the form which is "extension" which if present overrides the default, but otherwise the default is used.  Alternatively, it could be an mutli-value such as "inherit" (new behavior), "default" (old behavior), or ".ext" (a specific extension).  With the default value being "default" so as to maintain backwards compatibility to the 2.0 branch.

  was:
Here is the basic issue.  I have an url that has no extension, eg. /Overview-Mustang-c1234

On that page, I have a form tag that I want to have submit to action "changeCar.action", and so the "action" attribute is set to "changeCar".  

This used to work.  However, task https://issues.apache.org/struts/browse/WW-2267 changed the behavior so that the form's action gets the parent mapping's extension [DefaultActionMapper.getUriFromActionMapping() called from ServletUrlRenderer.renderFormUrl()], in this case the empty string, so the generated action ends up as just "changeCar" rather than "changeCar.action"  Because we have some special handling for our mappings, this url ends up as a 404.  It just doesn't seem desirable in general however that the same form included on different pages with different extensions will generate posts to two differently named urls.

I understand the concept behind this change, but I wonder if it would be safer to revert it, and instead add support for an attribute on the form which is "extension" which if present overrides the default, but otherwise the default is used.  Alternatively, it could be an mutli-value such as "inherit" (new behavior), "default" (old behavior), or ".ext" (a specific extension).  With the default value being "default" so as to maintain backwards compatibility to the 2.0 branch.


> Form action always inherits parent extension
> --------------------------------------------
>
>                 Key: WW-3193
>                 URL: https://issues.apache.org/jira/browse/WW-3193
>             Project: Struts 2
>          Issue Type: Improvement
>    Affects Versions: 2.1.8
>            Reporter: Jasper Rosenberg
>            Priority: Minor
>             Fix For: 6.1.0
>
>         Attachments: WW-3193.patch
>
>
> Here is the basic issue.  I have an url that has no extension, eg. /Overview-Mustang-c1234
> On that page, I have a form tag that I want to have submit to action "changeCar.action", and so the "action" attribute is set to "changeCar".  
> This used to work.  However, task WW-2267 changed the behavior so that the form's action gets the parent mapping's extension [DefaultActionMapper.getUriFromActionMapping() called from ServletUrlRenderer.renderFormUrl()], in this case the empty string, so the generated action ends up as just "changeCar" rather than "changeCar.action"  Because we have some special handling for our mappings, this url ends up as a 404.  It just doesn't seem desirable in general however that the same form included on different pages with different extensions will generate posts to two differently named urls.
> I understand the concept behind this change, but I wonder if it would be safer to revert it, and instead add support for an attribute on the form which is "extension" which if present overrides the default, but otherwise the default is used.  Alternatively, it could be an mutli-value such as "inherit" (new behavior), "default" (old behavior), or ".ext" (a specific extension).  With the default value being "default" so as to maintain backwards compatibility to the 2.0 branch.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)