[ https://issues.apache.org/jira/browse/OFBIZ-5220?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Skip Dever updated OFBIZ-5220: ------------------------------ Attachment: RequestHandler.java Here is just the function formatted > 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 > Labels: patch > Attachments: RequestHandler.java > > Original Estimate: 0h > Remaining Estimate: 0h > > 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 non > 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("?"); > //Added by skipd > Map<String, Object> parameters = > UtilHttp.getParameterMap(request); > for (Map.Entry<String, String> entry: > requestResponse.redirectParameterMap.entrySet()) { > String name = entry.getKey(); > String from = entry.getValue(); > Object value = request.getAttribute(from); > if (value == null) { > //Modified by skipd > value = parameters.get(from); > //value = request.getParameter(from); > } > addNameValuePairToQueryString(queryString, name, (String) > value); > } > 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