1

私は2つのリンクを持っています。セッションでは、いくつかのデータを保存します。ユーザーが特定のリンクをクリックしてセッションを調べ、適切な値が含まれている場合は続行したいと思います。それ以外の場合は、AJAX ポップアップ ブロックが表示されます。

JAVASCRRIPT ポップアップ ブロック

 function displaymessage(title,message,close)
 {

        resultReturn= $.confirm({
        'title'     : title, 
        'message'   : message
        'buttons'   : {
        close/*'Yes'*/  : {
                'class' : 'blue',
                                    'caption': close,
                'action': function(){}
                        }           
                        }
                          });
   }

JSTL タグを含む JSP:

    <div class="header">
        <a href="<c:url value='/home'/>">
        <a href="<c:url value='/further'/>">
    </div>

     <c:if test="${not fn:containsIgnoreCase(data, 'mykey')}"> 
            <a id="get" class="right keepScrollPosition" 
               onclick="return displaymessage('<spring:message code="access.denied.title"/>'
                   ,'<spring:message code="access.denied.message"/>','<spring:message code="access.denied.close"/>');" 
               href="#"  /></a> 
        </c:if>

たとえば、セッションに値「mykey」が含まれている場合、リンク ホームに移動できます。そうでない場合、ポップアップが表示されます。セッションに値「mypassword」が含まれていて、さらにリンクを選択すると続行できますが、ホーム リンクを選択すると、ポップアップ ブロックが表示されます。 私は立ち往生しており、これを行う方法について助けが必要です。助けてください

アップデート

次のスクリプトを試していますが、うまくいきません。

  <li><a href="<c:url value='/home/'/>"<spring:message code="home_page"/>
        onclick="if(<c:if test="${not fn:containsIgnoreCase(data, 'mykey')}">){
                    return displaymessage('<spring:message code="access.denied.title"/>' 
               ,'<spring:message code="access.denied.message"/>','<spring:message code="access.denied.close"/>')" href="#" ;
       }
       </a>
   </li>
4

1 に答える 1

2

クライアント側の JS を使用して、セッションで保持されているサーバー側の値を確認することはできません。代わりに、JS を使用して、サーバー側のコードを実行してセッションをチェックするリクエスト マッピングへの GET 呼び出しを行う必要があります。フローは次のようになります。

  1. ユーザーがページ上のボタン/画像/何かをクリックする
  2. JS はクリックから起動し、AJAX 呼び出し (例: $.get) を作成してマッピングを要求します/check_session.do
  3. リクエスト マッピングはセッションの値をチェックし、JSON として true または false を返します
  4. クライアント側の JS は、返された JSON を処理し、返された値に基づいてブロックまたは続行します

または、JSTL を使用してセッションにアクセスし、セッション フィールドの値をページの非表示のフォーム フィールドに書き込みます。これをクライアント側の JS が読み取ります。例: http://www.steve-farmer.com/examples/el/ui/ses-attr-name.jsp

于 2012-07-08T14:33:48.217 に答える