Обновить добавление дополнительного параметра

Мне нужно обновить веб-страницу, но в запросе на обновление я хочу добавить дополнительный параметр, поэтому у меня есть что-то вроде:

<c:url value="currentUrl" var="newUrl">
    <c:param name="newParam" value="newValue"/>
</c:url>
<a href="${newUrl}">Refresh</a>

Как получить currentUrl с параметрами (например, http://localhost:8080/mywebapp?param1=var1¶m2=var2) запроса от неявных объектов jsp. У меня есть что-то вроде ${pageContext.request.requestURL}, но это возвращает URL-адрес jsp, а не URL-адрес запроса.

Спасибо


person Javi    schedule 01.12.2010    source источник


Ответы (2)


Если JSP был перенаправлен, вы можете получить исходный URL-адрес запроса с помощью ${requestScope['javax.servlet.forward.request_uri']} и исходную строку запроса запроса с помощью ${requestScope['javax.servlet.forward.query_string']}.

Кстати, вы можете найти обзор всех этих «скрытых» атрибутов переадресации здесь и здесь.

person BalusC    schedule 01.12.2010
comment
@Спасибо, это позволило мне получить URL без параметров, но это полезно - person Javi; 01.12.2010
comment
Вы действительно знаете это в глубине души :) +1 - person Adeel Ansari; 01.12.2010
comment
@Javi: Попробуйте то же самое с этим, ${requestScope['javax.servlet.forward.query_string']} - person Adeel Ansari; 01.12.2010
comment
Действительно, используйте это, чтобы получить исходную строку запроса. - person BalusC; 01.12.2010

На основе ответа BalusC

Вы можете попробовать эти два,

${requestScope['javax.servlet.forward.request_uri']}
${requestScope['javax.servlet.forward.query_string']}

Подход JavaScript

Вы имеете в виду адрес в адресной строке? Если это так, вы можете написать функцию JavaScript, чтобы получить параметры, а затем изменить href, о котором идет речь.

Например,

<a id="refresh" href="${newUrl}">Refresh</a>
...

var url = window.location.href;
url += url.split("?").length > 1 ? "&newParam=value" : "?newParam=value";
document.getElementById("refresh").href = url;

Это было бы намного короче, если бы вы использовали jQuery или PrototypeJS, например фреймворк JavaScript.

person Adeel Ansari    schedule 01.12.2010
comment
да, я тоже уже думал об этом, спасибо, но я думал, что решение, основанное на jsp, будет чище. Проблема с изменением его в javascript заключается в том, что я не мог использовать тег ‹c:url/›, поэтому мне приходится вручную проверять наличие ? чтобы увидеть, есть ли в URL-адресе параметры для добавления ?newParam=value или &newParam=value. Есть ли что-то в javascript, которое бы добавляло параметры в URL? - person Javi; 01.12.2010
comment
@Хави: window.location.href += window.location.href.split("?").length > 1 ? "?newParam=value" : "?newParam=value" - person Adeel Ansari; 01.12.2010
comment
это сработает, хотя мне все еще любопытно, можно ли это сделать без javascript, но все равно спасибо. - person Javi; 01.12.2010
comment
@Javi: я обновил свой пост, используя ответ BalusC. Попробуйте, если это решит вашу проблему лучше. - person Adeel Ansari; 01.12.2010