[
https://issues.apache.org/jira/browse/WW-4259?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13875877#comment-13875877
]
Bruce Phillips commented on WW-4259:
------------------------------------
OK - I figured out why I was getting different form tag output whether or not
default-action-ref is included in the struts.xml.
First, as Luskaz mentions your action attribute in TestPage.jsp should not
include .acton
action="TestPage.action?field1=%{field1}&field2=%{field2}"
rather it should be: action="TestPage?field1=%{field1}&field2=%{field2}"
The problem you reported (the double amp) will still occur but including the
.action in the action attribute is the reason I could not initially duplicate
your problem. With the .action and default-action-ref in struts.xml Struts
will parse the query string but without the default-action-ref Struts will not
parse the query string (it is ignored and not included in the rendered form
tag).
As I mentioned I did verify that your code changes in the patch fixed the issue
and I'll get those committed.
Bruce
> Parameter is NULL when Submitting form with parameters using URL contains
> querystring consisted of some fields
> --------------------------------------------------------------------------------------------------------------
>
> Key: WW-4259
> URL: https://issues.apache.org/jira/browse/WW-4259
> Project: Struts 2
> Issue Type: Bug
> Environment: Struts: 2.3.16
> JRE: 7.0
> Tomcat: 7.0
> Reporter: Yorozuya Kazuyuki
> Assignee: Bruce Phillips
> Priority: Minor
> Fix For: 2.3.17
>
> Attachments: ServletUrlRenderer.java.patch,
> formtest-0.0.1-SNAPSHOT.war, formtest.zip
>
>
> h3. Phenomenon
> 1. Submitting form with parameters using URL contains querystring consisted
> of some fields.
> {noformat}
> <s:form id="testForm" action="Test.action?field1=%{field1}&field2=%{field2}">
> {noformat}
> Field1, field2 are member of Test class.
> Each setter is implemented in this class.
> \\
> 2. When form tag in struts is interpreted as in HTML, "action" atrribute is
> this.
> {noformat}
> action="Test.action?field1=value1&amp;field2=value2"
> {noformat}
> Due to duplication of "amp;", it causes field2 member to fail to recieve
> value.
> therefore, field2 member equals NULL always.
>
> \\
> Desired result 2. is this.
> {noformat}
> action="Test.action?field1=value1&field2=value2"
> {noformat}
> \\
> h3. Cause
> Character entity reference about "&" is executed twice.
> Executed points are as follow.
> --------------------------------------------------------------------------------
> ・/core/src/main/java/org/apache/struts2/views/util/DefaultUrlHelper.java
> {noformat}
> String buildUrl(
> String action, HttpServletRequest request, HttpServletResponse response,
> Map<String, Object> params, String scheme, boolean includeContext,
> boolean encodeResult, boolean forceAddSchemeHostAndPort, boolean escapeAmp
> )
> {noformat}
> ・/core/src/main/resources/template/simple/form-common.ftl
> {noformat}
> <#if parameters.action??>
> action="${parameters.action?html}"<#rt/>
> </#if>
> {noformat}
> --------------------------------------------------------------------------------
> h3. Solution
> "escapeAmp" in method "DefaultUrlHelper.buildUrl" is set false.
> My patch file is attached.
--
This message was sent by Atlassian JIRA
(v6.1.5#6160)