in web/src/main/java/org/apache/shiro/web/util/RedirectView.java [218:255]
protected void appendQueryProperties(StringBuilder targetUrl, Map model, String encodingScheme)
throws UnsupportedEncodingException {
// Extract anchor fragment, if any.
// The following code does not use JDK 1.4's StringBuffer.indexOf(String)
// method to retain JDK 1.3 compatibility.
String fragment = null;
int anchorIndex = targetUrl.toString().indexOf('#');
if (anchorIndex > -1) {
fragment = targetUrl.substring(anchorIndex);
targetUrl.delete(anchorIndex, targetUrl.length());
}
// If there aren't already some parameters, we need a "?".
boolean first = (getUrl().indexOf('?') < 0);
Map queryProps = queryProperties(model);
if (queryProps != null) {
for (Object o : queryProps.entrySet()) {
if (first) {
targetUrl.append('?');
first = false;
} else {
targetUrl.append('&');
}
Map.Entry entry = (Map.Entry) o;
String encodedKey = urlEncode(entry.getKey().toString(), encodingScheme);
String encodedValue =
(entry.getValue() != null ? urlEncode(entry.getValue().toString(), encodingScheme) : "");
targetUrl.append(encodedKey).append('=').append(encodedValue);
}
}
// Append anchor fragment, if any, to end of URL.
if (fragment != null) {
targetUrl.append(fragment);
}
}