【问题标题】:JSP and JSTL with the Onclick method使用 Onclick 方法的 JSP 和 JSTL
【发布时间】:2012-07-08 12:04:41
【问题描述】:

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

【问题讨论】:

  • 我不知道该怎么做。我需要一些指导
  • 不知道具体怎么做?
  • 如何编写适当的脚本以检查会话中是否包含适当的值。可能我需要一个 if 语句与 onclick 方法相结合。我更新了我的代码,请看一下。

标签: javascript spring jsp jstl


【解决方案1】:

您不能使用客户端 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

【讨论】:

  • 感谢您的回复。 ){return displaymessage('title','message','close'); href ="#" }">。在这里,我使用这个标签来检查会话。如果这是 TRUE(即包含该值),那么它必须调用 displaymessage 方法。我在这里使用的这个特定标签我在网站的另一部分使用了它,并且工作得很好。但是我不知道为什么这不调用方法displaymessage。可能是语法错误?你能帮帮我吗?
猜你喜欢
  • 1970-01-01
  • 2015-01-26
  • 2015-09-11
  • 1970-01-01
  • 2013-02-14
  • 1970-01-01
  • 1970-01-01
  • 2012-09-01
  • 2010-09-18
相关资源
最近更新 更多