Skip Dever created OFBIZ-5220:
---------------------------------
Summary: request-redirect does not pass all parameters if none are
specified with response-parameter
Key: OFBIZ-5220
URL: https://issues.apache.org/jira/browse/OFBIZ-5220
Project: OFBiz
Issue Type: Bug
Components: ALL APPLICATIONS
Affects Versions: Release Branch 12.04
Environment: All
Reporter: Skip Dever
The xsd documentation says "Automatically redirect all current request
parameters to the new request or only redirected ..."
This is broken. If you specify a request-redirect from a form (where the
parameters are not in the url), these parameters are not passed on to the
redirected url.
Included here is a re-written function in RequestHandler.java is a solution
that fixes things (Note that I did not modify the javadoc which describes how
this new function actually works). I commented out the old code and added
there new stuff under the comment:
/**
* Creates a query string based on the redirect parameters for a request
response, if specified, or for all request parameters if no redirect parameters
are specified.
*
* @param request the Http request
* @param requestResponse the RequestResponse Object
* @return return the query string
*/
public String makeQueryString(HttpServletRequest request,
ConfigXMLReader.RequestResponse requestResponse) {
if (requestResponse == null ||
(requestResponse.redirectParameterMap.size() == 0 &&
requestResponse.redirectParameterValueMap.size() == 0)) {
/* Modified by skipd to include all parameters if none
are specified with redirect-parameter
Map<String, Object> urlParams =
UtilHttp.getUrlOnlyParameterMap(request);
String queryString = UtilHttp.urlEncodeArgs(urlParams, false);
if(UtilValidate.isEmpty(queryString)) {
return queryString;
}
*/
StringBuilder queryString = new StringBuilder();
Map<String, Object> parameters = UtilHttp.getParameterMap(request);
for (String parameterName: parameters.keySet()) {
Object value = parameters.get(parameterName);
addNameValuePairToQueryString(queryString, parameterName,
(String) value);
}
return "?" + queryString;
} else {
StringBuilder queryString = new StringBuilder();
queryString.append("?");
for (Map.Entry<String, String> entry:
requestResponse.redirectParameterValueMap.entrySet()) {
String name = entry.getKey();
String value = entry.getValue();
addNameValuePairToQueryString(queryString, name, (String)
value);
}
return queryString.toString();
}
}
--
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