[img]https://i. sstatic.net/FLVj3.png[/img]
Эти фильтры слева управляются параметрами строки запроса, а ссылка для удаления одного из этих фильтров содержит URL-адрес текущей страницы, но без этого одного параметра строки запроса.
Есть ли в JSP способ легко создать эту ссылку «удалить»? То есть, есть ли быстрый способ воспроизвести текущий URL-адрес, но с удаленным одним параметром строки запроса, или мне нужно вручную перестроить URL-адрес, прочитав параметры строки запроса, добавив их к базовому URL-адресу и пропустив тот, который Я хочу пропустить?
Мой текущий план — сделать что-то вроде следующего метода доступным в качестве пользовательской функции EL:
Код: Выделить всё
public String removeQueryStringParameter(
HttpServletRequest request,
String paramName,
String paramValue) throws UnsupportedEncodingException {
StringBuilder url = new StringBuilder(request.getRequestURI());
boolean first = true;
for (Map.Entry param : request.getParameterMap().entrySet()) {
String key = param.getKey();
String encodedKey = URLEncoder.encode(key, "UTF-8");
for (String value : param.getValue()) {
if (key.equals(paramName) && value.equals(paramValue)) {
continue;
}
if (first) {
url.append('?');
first = false;
} else {
url.append('&');
}
url.append(encodedKey);
url.append('=');
url.append(URLEncoder.encode(value, "UTF-8"));
}
}
return url.toString();
}
Подробнее здесь: https://stackoverflow.com/questions/350 ... -parameter
Мобильная версия