2012-01-25 7 views
0

私はスクリプトレットを使用しているjspを持っています。セッションが終了すると、警告メッセージPopUpが生成され、閉じます。次のように私のJSPは次のとおりです。警告を閉じることができませんJavaScriptを使用したPopUp

 <%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %> 


    <%@ page language="java" contentType="text/html"%> 
    <%@ session ="false" %> 
    <head> 
    <script type="text/javascript"> 
    function close() { 
     var userSessionExpire= "<%= request.getParameter("sessionExpire") %>"; 
     if(userSessionExpire !=null && userSessionExpire ="true"){ 
      open('', 'SessionWarning').close(); 
     } 
     } 
    </script> 
    </head> 

私はスクリプトレットを取り除き、JSTLELを使用した場合。警告ポップアップが生成しますが、以下の通りです。このウィンドウには、セッションExpiry.changesと近くなっていません:あなたはJavaScriptとJavaの/ JSPの性質を混合している

  function close(){ 
     <c:set var="sess" value="${param.sessionExpire}" /> 
     if(sess !=null && sess ="true"){ 
     open('', 'SessionWarning').close(); 
     } } 

答えて

0

。それらは同期して実行されません。 Java/JSPはWebサーバーで動作し、HTTPリクエストでHTML/CSS/JSコードを生成し、WebブラウザはHTMLを表示し、CSSを適用し、HTTP応答にJSを実行することを認識する必要があります。

有効な構文を持つように、Java/JSPにJSコードを生成させる必要があります。あなたのアプローチでは、

function close() { 
    <c:set var="sess" value="${param.sessionExpire}" /> 
    if (sess != null && sess = "true") { 
     open('', 'SessionWarning').close(); 
    } 
} 

生成されたJSコードは、この(右クリックし、ウェブブラウザでソースの表示)のようになります。

function close() { 

    if (sess != null && sess = "true") { 
     open('', 'SessionWarning').close(); 
    } 
} 

これは権利ではありません。あなたは次のようにそれが見えるようにしたい:

function close() { 
    var sess = true; // Or var sess = false; 
    if (sess) { 
     open('', 'SessionWarning').close(); 
    } 
} 

(!sess="true"は、あなたが何を考えて行っていない、私はあなたのif条件を固定していることに注意してください)

だから、あなたはあなたのJSPを書き換える必要があります次のように

function close() { 
    var sess = ${not empty param.sessionExpire and param.sessionExpire}; 
    if (sess) { 
     open('', 'SessionWarning').close(); 
    } 
} 

ELとスクリプトレット差がELがnullを印刷しないことである場合に値をnullですが、空の文字列です。したがって、追加のnot emptyがチェックされるので、EL式全体がブール値trueまたはfalseの完全な値を出力します。

次のように上記も簡素化することができます。

function close() { 
    if (${not empty param.sessionExpire and param.sessionExpire}) { 
     open('', 'SessionWarning').close(); 
    } 
} 
+0

おかげBalusCは、これらは非常にあなたが提案役立つヒントです。どうもありがとう!! – user1057697

関連する問題