Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用JSTL向当前URL添加新参数_Java_Jsp_Spring Mvc_Url_Jstl - Fatal编程技术网

Java 使用JSTL向当前URL添加新参数

Java 使用JSTL向当前URL添加新参数,java,jsp,spring-mvc,url,jstl,Java,Jsp,Spring Mvc,Url,Jstl,我的应用程序允许用户在任何给定时刻更改语言,这给我带来了一些麻烦。例如,如果用户通过URL指定页面:/category/8?page=3,然后尝试通过?language=en更改语言,则会删除以前的参数,并将用户带到第一页 如何获取当前URL并向其添加另一个参数?我想实现这样的效果:/category/8?page=3&language=en当当前ULR为/category/8?page=3且用户试图更改语言时 我尝试使用${pageContext.request.requestURL},但这不

我的应用程序允许用户在任何给定时刻更改语言,这给我带来了一些麻烦。例如,如果用户通过URL指定页面:
/category/8?page=3
,然后尝试通过
?language=en
更改语言,则会删除以前的参数,并将用户带到第一页

如何获取当前URL并向其添加另一个参数?我想实现这样的效果:
/category/8?page=3&language=en
当当前ULR为
/category/8?page=3
且用户试图更改语言时


我尝试使用
${pageContext.request.requestURL}
,但这不是我想要的,因为它返回jsp页面。

我使用了一个标记文件。将其另存为
/WEB-INF/tags/replaceParam.tag

<%@ tag pageEncoding="UTF-8" trimDirectiveWhitespaces="true" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ attribute name="name" required="true" type="java.lang.String" %>
<%@ attribute name="value" required="true" type="java.lang.String" %>

<c:url value="">

    <%-- 
      replaces or adds a param to a URL
      if $name in query then replace its value with $value. 
      copies existing 
    --%>

    <c:forEach items="${paramValues}" var="p">
        <c:choose>
            <c:when test="${p.key == name}">
                <c:param name="${name}" value="${value}"/>
            </c:when>
            <c:otherwise>
                <c:forEach items="${p.value}" var="val">
                    <c:param name="${p.key}" value="${val}"/>
                </c:forEach>
            </c:otherwise>
        </c:choose>
    </c:forEach>

    <%-- if $name not in query, then add --%>
    <c:if test="${empty param[name] }">
        <c:param name="${name}" value="${value}"/>
    </c:if>

</c:url>

输出为
/category/8?page=3&language=en

到目前为止您尝试了什么?你的代码看起来像什么?答案将完全基于意见。如果不提供进一步的信息,你的问题很可能就结束了。我已经用我尝试过的东西更新了帖子,但不知道还能写些什么。问题很简单——点击一个链接后,我想向当前URL添加另一个参数,就像我写的那个样。
<%@ taglib prefix="my" tagdir="/WEB-INF/tags" %>

<my:replaceParam name='language' value='en' />