将条件弹簧mvc参数传递给javascript url函数

时间:2014-03-10 21:09:59

标签: java javascript spring spring-mvc

我在spring mvc应用程序中有一个javascript日历控件。当用户点击日历控件中的date时,用户将被重定向到该日期的详细信息页面。问题是除了date之外,我还希望在网址中传递其他参数。如何在javascript功能中向url添加其他参数?

以下是用于创建仅包含date作为参数的网址的javascript:

        <script type="text/javascript">
                    $(document).ready(function() {
                        $("#dayPicker").datepicker({
                            firstDay: 1,
                            dateFormat: "yy-mm-dd",
                            defaultDate: new Date(${calendar.dayMillis}),
                            onSelect: function(dateText, instance) {
                                window.location = "${pageContext.request.contextPath}/calendar?day=" + encodeURIComponent(dateText);
                                }
                        });
                    });
        </script>  

为了说明,这里是生成URL的代码,其中包括JSP中其他两个可选参数(pideid):

            <c:url var="previousLink" value="/calendar">
                <c:param name="day" value="${calendar.previousDay}" />
                <c:choose>
                    <c:when test="${pid!=null}">
                        <c:param name="pid" value="${pid}" />
                    </c:when>
                    <c:otherwise></c:otherwise>
                </c:choose>
                <c:choose>
                    <c:when test="${eid!=null}">
                        <c:param name="eid" value="${eid}"></c:param>
                    </c:when>
                    <c:otherwise>
                    </c:otherwise>
                </c:choose>
            </c:url>
            <a href="${previousLink}">Previous</a>  

如何更改上面的javascript,以便为pideid 添加参数,当且仅当 pideid时是not null

2 个答案:

答案 0 :(得分:1)

这可以通过连接由&字符分隔的URL参数来完成:

var url = "${pageContext.request.contextPath}/calendar?day=" + encodeURIComponent(dateText);

if (pid) {
    url += "&pid=" + encodeURIComponent(pid);
}

if (eid) {
    url += "&eid=" + encodeURIComponent(eid);
}

window.location = url;

答案 1 :(得分:0)

注意到您对pid和eid不起作用的评论,您最有可能需要添加jquery括号来获取pid和eid。所以它会是这样的:

var url = "${pageContext.request.contextPath}/calendar?day=" + encodeURIComponent(dateText);

if (${pid!=null}) {
    url += "&pid=" + encodeURIComponent(${pid});
}

if (${eid!=null}) {
    url += "&eid=" + encodeURIComponent(${eid});
}

window.location = url;

另外,如果您实际上没有将eid或pid添加到模型中,当它为“null”时,它实际上不会为空,因此您可能也无法获得所需的功能。如果您实际上是将eid和pid添加到模型中,那么&#39; null&#39;那么上面应该没问题。但是,如果当eid和pid为空时,你只是将它们全部放在模型之外,你需要检查它:

 
var url = "${pageContext.request.contextPath}/calendar?day=" + encodeURIComponent(dateText);

if (${! empty pid}) {
    url += "&pid=" + encodeURIComponent(${pid});
}

if (${! empty eid}) {
    url += "&eid=" + encodeURIComponent(${eid});
}

window.location = url;