首页 > 解决方案 > 如何在 Spring Boot 的所有 JSP 页面中显示相同的城市名称?

问题描述

我正在使用 Spring Boot 开发电子商务 Web 应用程序。我有需要在所有 JSP 页面中显示的城市名称。例如,如果我选择城市名称为孟买,那么无论有多少 JSP 页面(不包括结帐页面)都应该显示相同的城市名称(即孟买应该显示在结帐页面之外的所有页面中)。所以,我试图通过使用查询参数来完成这件事。但是无法在其他页面中显示相同的城市名称(如果我单击其他一些链接以重定向到另一个页面)。

从下面的脚本中,我从 index.jsp 的查询参数中获取城市名称并将其显示在 webheader.jsp 中。

    function getcities(){
                var city = document.getElementById('cityname').value;
                var url = "api/getcities";
                $.post(url, {
                    city : city,
                }, function(data, status) {
                    if (data.status == "OK") {
                        if (data.statusCode == 1) {
                            var citylist = data.response;
                            var citylistlen = citylist.length;
                            var city = ""; 
                            if(citylistlen > 0){
                                for(var i = 0; i < citylistlen; i++){
                                    var pincode = citylist[i].pincode;
                                    var cityname = citylist[i].delivercityid.city;
                                    if(null != pincode && null != cityname){
                                        city = city + "<div style='border: 1px solid; padding: 5px; display: block; z-index: 100;  position: inherit; font-style: oblique; color: blueviolet;' onclick=\"getcitydata('"+citylist[i].delivercityid.delivercityid+"','"+cityname+"')\">"
                                        +"<div><div style='padding: 5px;'><a href=\"..<%=WebUrl.index%>?city="+cityname+"\"><strong style=\"color: indigo;\">"+cityname+"</strong>&nbsp;("+pincode+")</a></div></div></div>";
                                    }
                                }
                            }
                            document.getElementById('showcity').innerHTML = city;
                        } else {
                            var error = data.responseMessage;
                            swal(error, "", "error");
                        }
                    } else {
                        var error = data.responseMessage;
                        swal(error, "", "error");
                    }
                });
            } 

在 webheader.jsp 中:

    <div class="city-popup">
            <div id="user-selected-city-input">
                <h6>Delivery In</h6>
                    <%
                        String cityname = request.getParameter("city"); 
                        if(cityname == null){
                         out.print("<h6 style=\"color: #330000;\">Choose City</h6>");
                        }else{
                         out.print("<h5 style=\"color: #330000;\">"+cityname+"</h5>");
                        }
                    %>
            </div>
        </div>

它应该怎么做?我需要使用 cookie 或其他方法吗?

选择了一些城市名称

显示其他 JSP 页面的屏幕截图

标签: javascriptjqueryajaxspring-bootjsp

解决方案


你可以使用session.setAttribute("city",cname)然后你可以通过 session.getAttribute() 访问


推荐阅读