Author: sascharodekamp
Date: Mon Mar 5 12:35:08 2012 New Revision: 1297031 URL: http://svn.apache.org/viewvc?rev=1297031&view=rev Log: No Url encoding for get parameters (https://issues.apache.org/jira/browse/OFBIZ-2628) using the URLEncoder to encode and render URLs with special Chars. The encoding is always UTF-8 Modified: ofbiz/branches/release11.04/framework/webapp/src/org/ofbiz/webapp/control/RequestHandler.java ofbiz/branches/release11.04/framework/widget/src/org/ofbiz/widget/WidgetWorker.java Modified: ofbiz/branches/release11.04/framework/webapp/src/org/ofbiz/webapp/control/RequestHandler.java URL: http://svn.apache.org/viewvc/ofbiz/branches/release11.04/framework/webapp/src/org/ofbiz/webapp/control/RequestHandler.java?rev=1297031&r1=1297030&r2=1297031&view=diff ============================================================================== --- ofbiz/branches/release11.04/framework/webapp/src/org/ofbiz/webapp/control/RequestHandler.java (original) +++ ofbiz/branches/release11.04/framework/webapp/src/org/ofbiz/webapp/control/RequestHandler.java Mon Mar 5 12:35:08 2012 @@ -24,6 +24,8 @@ import java.io.IOException; import java.io.Serializable; import java.io.UnsupportedEncodingException; import java.net.URL; +import java.net.URLEncoder; +import java.nio.charset.Charset; import java.security.cert.X509Certificate; import java.util.Enumeration; import java.util.List; @@ -912,7 +914,7 @@ public class RequestHandler { * @return */ public String makeQueryString(HttpServletRequest request, ConfigXMLReader.RequestResponse requestResponse) { - if (requestResponse == null || + if (requestResponse == null || (requestResponse.redirectParameterMap.size() == 0 && requestResponse.redirectParameterValueMap.size() == 0)) { Map<String, Object> urlParams = UtilHttp.getUrlOnlyParameterMap(request); String queryString = UtilHttp.urlEncodeArgs(urlParams, false); @@ -1097,7 +1099,12 @@ public class RequestHandler { newURL.insert(questionIndex, sessionId); } } - encodedUrl = newURL.toString(); + try { + encodedUrl = URLEncoder.encode(newURL.toString(), Charset.forName("UTF-8").displayName()); + } catch (UnsupportedEncodingException e) { + Debug.logError(e, module); + encodedUrl = newURL.toString(); + } } } else { encodedUrl = newURL.toString(); Modified: ofbiz/branches/release11.04/framework/widget/src/org/ofbiz/widget/WidgetWorker.java URL: http://svn.apache.org/viewvc/ofbiz/branches/release11.04/framework/widget/src/org/ofbiz/widget/WidgetWorker.java?rev=1297031&r1=1297030&r2=1297031&view=diff ============================================================================== --- ofbiz/branches/release11.04/framework/widget/src/org/ofbiz/widget/WidgetWorker.java (original) +++ ofbiz/branches/release11.04/framework/widget/src/org/ofbiz/widget/WidgetWorker.java Mon Mar 5 12:35:08 2012 @@ -20,7 +20,10 @@ package org.ofbiz.widget; import java.io.IOException; import java.io.StringWriter; +import java.io.UnsupportedEncodingException; import java.math.BigDecimal; +import java.net.URLEncoder; +import java.nio.charset.Charset; import java.text.DateFormat; import java.util.Map; import java.util.TimeZone; @@ -104,10 +107,10 @@ public class WidgetWorker { parameterValue = parameter.getValue(); } else { Object parameterObject = parameter.getValue(); - + // skip null values if (parameterObject == null) continue; - + if (parameterObject instanceof String[]) { // it's probably a String[], just get the first value String[] parameterArray = (String[]) parameterObject; @@ -118,7 +121,7 @@ public class WidgetWorker { parameterValue = parameterObject.toString(); } } - + if (needsAmp) { externalWriter.append("&"); } else { @@ -337,9 +340,14 @@ public class WidgetWorker { public String getValue(Map<String, Object> context) { if (this.value != null) { - return this.value.expandString(context); + try { + return URLEncoder.encode(this.value.expandString(context), Charset.forName("UTF-8").displayName()); + } catch (UnsupportedEncodingException e) { + Debug.logError(e, module); + return this.value.expandString(context); + } } - + Object retVal = null; if (this.fromField != null && this.fromField.get(context) != null) { retVal = this.fromField.get(context); @@ -350,7 +358,7 @@ public class WidgetWorker { if (retVal != null) { TimeZone timeZone = (TimeZone) context.get("timeZone"); if (timeZone == null) timeZone = TimeZone.getDefault(); - + String returnValue = null; // format string based on the user's time zone (not locale because these are parameters) if (retVal instanceof Double || retVal instanceof Float || retVal instanceof BigDecimal) { @@ -368,7 +376,11 @@ public class WidgetWorker { DateFormat df = UtilDateTime.toDateTimeFormat("EEE MMM dd hh:mm:ss z yyyy", timeZone, null); returnValue = df.format((java.util.Date) retVal); } else { - returnValue = retVal.toString(); + try { + returnValue = URLEncoder.encode(retVal.toString(), Charset.forName("UTF-8").displayName()); + } catch (UnsupportedEncodingException e) { + Debug.logError(e, module); + } } return returnValue; } else { @@ -399,7 +411,7 @@ public class WidgetWorker { /** Returns the script location based on a script combined name: * <code>location#methodName</code>. - * + * * @param combinedName The combined location/method name * @return The script location */ @@ -414,7 +426,7 @@ public class WidgetWorker { /** Returns the script method name based on a script combined name: * <code>location#methodName</code>. Returns <code>null</code> if * no method name is found. - * + * * @param combinedName The combined location/method name * @return The method name or <code>null</code> */ |
Free forum by Nabble | Edit this page |