public String addParameter(String url, String name, String value) { if (url == null) { return null; } String[] urlArray = PortalUtil.stripURLAnchor(url, StringPool.POUND); url = urlArray[0]; String anchor = urlArray[1]; StringBundler sb = new StringBundler(7); sb.append(url); if (url.indexOf(CharPool.QUESTION) == -1) { sb.append(StringPool.QUESTION); } else if (!url.endsWith(StringPool.QUESTION) && !url.endsWith(StringPool.AMPERSAND)) { sb.append(StringPool.AMPERSAND); } sb.append(name); sb.append(StringPool.EQUAL); sb.append(encodeURL(value)); sb.append(anchor); return sb.toString(); }
public String removeParameter(String url, String name) { int pos = url.indexOf(CharPool.QUESTION); if (pos == -1) { return url; } String[] array = PortalUtil.stripURLAnchor(url, StringPool.POUND); url = array[0]; String anchor = array[1]; StringBundler sb = new StringBundler(); sb.append(url.substring(0, pos + 1)); String[] parameters = StringUtil.split(url.substring(pos + 1, url.length()), CharPool.AMPERSAND); for (String parameter : parameters) { if (parameter.length() > 0) { String[] kvp = StringUtil.split(parameter, CharPool.EQUAL); String key = kvp[0]; String value = StringPool.BLANK; if (kvp.length > 1) { value = kvp[1]; } if (!key.equals(name)) { sb.append(key); sb.append(StringPool.EQUAL); sb.append(value); sb.append(StringPool.AMPERSAND); } } } url = StringUtil.replace( sb.toString(), StringPool.AMPERSAND + StringPool.AMPERSAND, StringPool.AMPERSAND); if (url.endsWith(StringPool.AMPERSAND)) { url = url.substring(0, url.length() - 1); } if (url.endsWith(StringPool.QUESTION)) { url = url.substring(0, url.length() - 1); } return url + anchor; }