我有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>

最佳答案

您不能使用客户端JS来检查会话中保存的服务器端值。相反,您需要使用JS对请求映射进行GET调用,该请求映射运行服务器端代码以检查会话。流程如下:


用户单击页面上的按钮/图像/某物
JS从点击触发,进行AJAX调用(例如$.get)以请求映射/check_session.do
请求映射检查会话的值,以JSON形式返回true或false
客户端JS处理返回的JSON,基于返回值的阻止或收益


或者,使用JSTL访问会话并将会话字段的值写入页面上的隐藏表单字段,然后由客户端JS读取。示例:http://www.steve-farmer.com/examples/el/ui/ses-attr-name.jsp

10-06 05:28
查看更多