gpt4 book ai didi

java - 在没有查询字符串参数的情况下重建 URL

转载 作者:行者123 更新时间:2023-11-29 04:52:12 26 4
gpt4 key购买 nike

假设我有一个页面,其中列出了一些内容,并在边栏中为该列表设置了各种过滤器。例如,考虑 this page on ebuyer.com ,看起来像这样:

Screenshot of filter on ebuyer.com

左侧的那些过滤器由查询字符串参数控制,删除其中一个过滤器的链接包含当前页面的 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<String, String[]> 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();
}

但是有没有更好的办法呢?

最佳答案

更好的方法是使用UrlEncodedQueryString .

UrlEncodedQueryString can be used to set, append or remove parameters from a query string:

 URI uri = new URI("/forum/article.jsp?id=2&para=4");
UrlEncodedQueryString queryString = UrlEncodedQueryString.parse(uri);
queryString.set("id", 3);
queryString.remove("para");
System.out.println(queryString);

关于java - 在没有查询字符串参数的情况下重建 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35021262/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com