0

jspファイル

<% 

               String stateforcookie=request.getParameter("stateforcookie");
               if(stateforcookie != null ) {
               Cookie cookies2 = new Cookie("statecookie",stateforcookie);

               cookies2.setMaxAge(365 * 24 * 60 * 60);
               response.addCookie(cookies2);
               }                  
               String state=request.getParameter("state");
               Cookie[] cookies2=null;
               cookies2 = request.getCookies();
               out.print(cookies2);

               if (state==null) { if(cookies2 != null)
                                    state=cookies2[0].getValue(); }
              if(cookies2[0].getValue() == null) {
               %>

<body onload="po(0);">
<% }else { %>
<body onload="po(1);">
<% } %>

<div id="popup">
<div id="contenttt">
<form method="post" action="home.jsp">
Choose Your State:<input id="popuptext" type="text" name="stateforcookie" />
 <input id="popupclose" type="submit" value="submit" />   
</form>
</div>      
</div>

javascript:

<script type="text/javascript">  
function po(i) {

 if(i==1){
 $('#popup').hide("slow");
    }
  else if(i==0){$('#popup').show("slow");}
}
$(function(){   
     $('#popupclose').click(function(){

        $('#popup').hide("slow");

    });

});   
</script>

1.ここでCookieに値を保存しようとしていますが、Cookieがnullの場合、テキストボックスのあるウィンドウがポップアップ表示されます。Cookieがnullでない場合、ポップアップウィンドウは表示されません。

しかし、私は次の行で問題に直面しています--out.print(cookies2); 印刷します:-

[Ljavax.servlet.http.Cookie; @ 1d6bff7

  1. if(cookies2 [0] .getValue()== null)はnullポインタ例外をスローします。すべてのブラウジングデータを削除した後でも、同じエラーが発生します
4

1 に答える 1

1

Cookieに値を割り当てないと、Cookieがnullの場合に比較できないため、ポップアップウィンドウが実行されません。初めてcookies2がnullになると、nullポインタ例外がスローされます

if(cookies2!= null){if(cookies2 [0] .getValue()!= null){}}

私はあなたを変更しました、これでポップアップを試してください。あなたは私が以下で行ったようにクッキーに保存された値を取得するためにforループを使用する必要があります

<% 

           String stateforcookie=request.getParameter("stateforcookie");
      out.println(stateforcookie);
      Cookie cookies2=null;
      Cookie[] cookies1=null;
           if(stateforcookie != null ) {
           cookies2 = new Cookie("statecookie",stateforcookie);

           cookies2.setMaxAge(365 * 24 * 60 * 60);
           response.addCookie(cookies2);

           }

           String state=request.getParameter("state");

           cookies1 = request.getCookies();

           if(cookies1 != null) 
           for (int i = 0; i < cookies1.length; i++) {
               if (cookies1[i].getName().equals("statecookie")) {
                out.println(cookies1[i].getValue());
                state=cookies1[i].getValue();
                session.setAttribute("statecookie",state);
                 break;
               }
             }

           %>
于 2013-03-23T19:28:46.823 に答える