使用Onclick方法的JSP和JSTL

时间:2012-07-08 12:04:42

标签: javascript spring jsp jstl

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

1 个答案:

答案 0 :(得分:2)

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

  1. 用户点击页面上的按钮/图片/内容
  2. JS从click触发,进行AJAX调用(例如$.get)以请求映射/check_session.do
  3. 请求映射检查会话的值,返回true或false为JSON
  4. 客户端JS进程根据返回值返回JSON,阻止或继续
  5. 或者,使用JSTL访问会话并将会话字段的值写入页面上的隐藏表单字段,客户端JS随后将其读取。示例:http://www.steve-farmer.com/examples/el/ui/ses-attr-name.jsp