无法执行if-else条件,会话值重叠

时间:2015-06-25 03:52:20

标签: javascript jsp

<script>
function gotoDetail(Request)
{   <%  HttpSession AtaSession =  request.getSession(true);%>
    if(Request=="DRY"){
        <%AtaSession.setAttribute("LoadPort","DRY");%>
        window.open("loadportbookingdetail.jsp");
    }else if(Request=="GAX"){
        <%AtaSession.setAttribute("LoadPort","GAX");%>
        window.open("loadportbookingdetail.jsp");
    }else if(Request=="GAZ"){
        <%AtaSession.setAttribute("LoadPort","GAZ");%>
        window.open("loadportbookingdetail.jsp");
    }else if(Request=="RD"){
        <%AtaSession.setAttribute("LoadPort","RD");%>
        window.open("loadportbookingdetail.jsp");
    }else if(Request=="RAG"){
        <%AtaSession.setAttribute("LoadPort","RAG");%>
        window.open("loadportbookingdetail.jsp");
    }else if(Request=="RFR"){
        <%AtaSession.setAttribute("LoadPort","RFR");%>
        window.open("loadportbookingdetail.jsp");
    }else if(Request=="TNK"){
        <%AtaSession.setAttribute("LoadPort","TNK");%>
        window.open("loadportbookingdetail.jsp");
    }else if(Request=="C_totalEUS"){
        <%AtaSession.setAttribute("LoadPort","C_totalEUS");%>
        window.open("loadportbookingdetail.jsp");
    }
}

嗨,上面的代码来自我的项目,我正在使用notepad ++来增强这个项目。我现在遇到的麻烦是当参数assign是(request ==“DRY”)时,会话应该等于DRY,但是对我的结果等于“C_totalEUS”。 是否有任何方法可以解决这个问题?请指导。感谢

2 个答案:

答案 0 :(得分:1)

问题是你正在使用jsp scriplets和javascript,请不要这样做。由于jsp scriplet在javascript之前被评估,因此每个最后一个语句都被执行为AtaSession.setAttribute("LoadPort","C_totalEUS")

<强> 被修改

您可以调用另一个servlet或jsp来设置会话属性。

function gotoDetail(Request) {
    var script = document.createElement('script');
    script.src = "put.jsp?LoadPort=" + Request;
    document.getElementsByTagName('head')[0].appendChild(script);
    window.open("loadportbookingdetail.jsp");
}

put.jsp:

<%session.setAttribute("LoadPort",request.getParameter("LoadPort"));%>

如果你可以编辑同一个jsp,即loadportbookingdetail.jsp

function gotoDetail(Request) {
    window.open("loadportbookingdetail.jsp?LoadPort=" + Request);
}

loadportbookingdetail.jsp:

在页面顶部

<%session.setAttribute("LoadPort",request.getParameter("LoadPort"));%>

答案 1 :(得分:0)

这里要检查的东西很少。 1.最后的其他 - 如果没有关闭。 2.你可以使用任何调试,例如:console.log(),看看你的控制在哪里进行干燥&#39;干条件。 3.使用小案例“请求”#39;只是为了更好的编码标准

例如:

function gotoDetail(request) {   
    <%  HttpSession session =  request.getSession(true);%>
    console.log('req='+request);
    if(request=="DRY") {
        console.log('DRY='+request);
        <%session.setAttribute("LoadPort","DRY");%>
        window.open("loadportbookingdetail.jsp");
    }
}

如果要将值传递给下一个jsp。

JSP1:

   <script>

        function gotoDetail(req)
        {
            window.open("loadportbookingdetail.jsp?LoadPort="+req);
        }
    </script>

loadportbookingdetail.jsp:

<%=request.getParameter("LoadPort")%>
<% session.setAttribute("LoadPort",request.getParameter("LoadPort")); %>

希望这有帮助。