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 回答