[
https://issues.apache.org/jira/browse/WW-4628?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15401767#comment-15401767
]
Christoph Nenning commented on WW-4628:
---------------------------------------
Recently I had an issue with {{<s:url includeParams="get" encode="false" />}},
too. In my case it was also a parameter with spaces. That parameter is already
encoded and gets encoded a 2nd time. That causes problems when generated URL is
used.
Creation of URL happens in class {{DefaultUrlHelper}}. The method
{{buildParameterSubstring(String name, String value)}} always encodes name and
value, without checking {{encode}} parameter (in this class it is called
{{encodeResult}}).
IMHO the issue is that {{DefaultUrlHelper}} has two use cases:
* Invoked with {{buildUrl()}}. In that case the parameter {{encodeResult}} is
present and taken into account for the whole url. But parameters might have
been already encoded.
* Invoked with {{buildParametersString()}}. In that case no encoding parameter
is present and it gets always encoded.
I'm going to add another version of {{buildParametersString()}} which has an
encoding parameter. The default will still be to encode.
> Space character and includeParams
> ---------------------------------
>
> Key: WW-4628
> URL: https://issues.apache.org/jira/browse/WW-4628
> Project: Struts 2
> Issue Type: Bug
> Affects Versions: 2.3.28
> Reporter: Pierre-Yves Soblet
> Fix For: 2.3.31
>
> Attachments: Struts2UrlTest.zip
>
>
> With this JSP snippet using Struts 2 taglib:
> {code}
> myParameter=[<s:property value="%{#parameters['myParameter']}"/>]
> <br/>
> <s:url action="url" includeParams="get"/>
> <br/>
> <s:url action="url">
> <s:param name="myParameter" value="%{#parameters['myParameter']}"/>
> </s:url>
> {code}
> When the action is called with a parameter containing a space (which is
> escaped in the URL) :
> {code}
> localhost:8080/url?myParameter=with+space
> {code}
> The output is as follows :
> {code}
> myParameter=[with space]
> /url.action?myParameter=with%2Bspace
> /url.action?myParameter=with+space
> {code}
> The *includeParams* attribute of the “url” tag seems to transform the "space"
> character into the "plus" character (both in their url-encoded forms).
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)