【问题标题】:Issue using session variable in an onload function在 onload 函数中使用会话变量的问题
【发布时间】:2016-02-10 18:48:59
【问题描述】:

我试图根据我的输入字段“UpdCMDStatus”之一中的值在 servlet 调用后创建一个警报框。看来我需要把它放在我的 JSP 程序的 onload 事件中(如果错了,请纠正我)。这是我在 HTML 末尾的脚本函数调用

           window.onload = confirmProcess;

           function confirmProcess()
              {

                var statusCheck = $('#UpdCMDStatus').val();
                alert("Status Check pulled is " + statusCheck );

                if (statusCheck === "CP" || statusCheck === "RP")
                {
                    var modifymode = $('#RecordFlag').val();
                    alert ("Modify Mode flag is " + modifymode) ;
                    if (modifymode === "Y")
                    {
                       alert("Schedule Numbers for Status 'VP' and 'CP' cannot " +
                                   " be Updated")    ;

                    }
                    else
                    {
                      var modifymode = $('#RecordFlag').val();
                      alert ("Modify Mode flag if status is not CP/RP is " + modifymode) ;  

                   }

               }


           }     ;

这是我在 EFTscreen servlet 中对此#RecordFlag 会话变量的处理:

   if (action.matches("searchMEFTS"))
    {
        System.out.println("Entering the process to go to MEFTS screen.  Continue");
        session.setAttribute("RecordFlag", " ");

        if (screenaccess.matches("mainEFT"))
        {
           String startStatus = "NP" ;
           session.setAttribute("UpdCMDStatus", startStatus);



           session.setAttribute("UpdCMDCreationDate", CMDcurrentdate);

           wkStatus = startStatus; 


        }
        else
        {    

           wkStatus = request.getParameter("UpdCMDStatus");
           session.setAttribute("UpdCMDStatus", wkStatus);

           wkCreation = request.getParameter("UpdCMDCreationDate");
           session.setAttribute("UpdCMDCreationDate", wkCreation);
           session.setAttribute("RecordFlag", "Y");

        }


       Sum_EFTBean meftsResults = new Sum_EFTBean() ;
       List<Sum_EFTBean> Updresults ; 
       Updresults = EFTQuery.selectDates(wkStatus, wkCreation) ;
       numberOfEntries = Updresults.size() ; 
       url = "/updatesched.jsp";

       if (numberOfEntries == 0) 
         {
           message = ("No open EFT Schedule Numbers found") ;
           session.setAttribute("messageMEFS",message) ;

         }
       else      
        {    
         session.setAttribute("Updresults", Updresults);


        } 

    } 

在检查 modifymode 字段的警报语句中,它显示为未定义。使用会话变量的问题是由于加载事件还是您看到任何其他问题?

谢谢

【问题讨论】:

    标签: jsp session servlets


    【解决方案1】:

    请注意,一旦您提交表单,您的所有输入字段都将被重置(清除)。当然,在您的 servlet 中,您可以创建一个属性 showAlert 并将其设置为请求属性。

    boolean showAlert = request.getParameter("updCMDStatus").equals("someValue") ?true:false;
    request.setAttribute("showAlert", showAlert)
    

    然后在您的 java 脚本中,您只需编写

    function confirmProcess(){
    
      if( ${showAlert} )//this EL expression will be replaced by either true or false
        //do something
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-17
      • 1970-01-01
      • 2016-02-23
      • 2014-10-10
      • 1970-01-01
      • 2021-12-30
      相关资源
      最近更新 更多