【问题标题】:checking whether the variable is true or not检查变量是否为真
【发布时间】:2010-10-25 14:24:51
【问题描述】:
 function add(){
        <%if(empRecNum != null && !(empRecNum.equals("")))
    {
       empSelected=true;
    }
    boolean canModify = UTIL.hasSecurity("PFTMODFY") && empSelected;

     %>
    df('ADD');        

    }

当我点击添加时,我需要检查 empSelected 是否为真并传递这个 canModify 值。这会被调用吗?

这是我在 JavaScript 中检查 Scriptlet 的正确方式吗

【问题讨论】:

    标签: java javascript jsp


    【解决方案1】:

    更优雅的方式来做到这一点

    var canModify = Boolean(${canModify});
    

    使用 jstl el,更清楚你打算做什么。 对 boolean 的调用会将给定的值转换为 javascript boolean。

    记住:

    Boolean(true); // returns true
    Boolean(false); // return false
    Boolean(); // returns false
    

    【讨论】:

    • 这仅在“canModify”是页面或请求范围内的属性时才有效。它在原始问题中的定义方式是行不通的。
    【解决方案2】:

    您需要正确理解以下概念:Java/JSP 在网络服务器上运行并产生 HTML/CSS/JS 输出。网络服务器将 HTML/CSS/JS 输出发送到网络浏览器。 Webbrowser 检索 HTML/CSS/JS 输出并显示 HTML、应用 CSS 并执行 JS。如果 Java/JSP 正确地完成了它的工作,您应该不会在 webbrowser 中看到任何 Java/JSP 代码行。在网络浏览器中右键单击页面并选择查看源代码。看到了吗?

    网络浏览器完全不知道服务器端的 Java/JSP 代码。它所知道和可以看到的只是它检索到的 HTML/CSS/JS 代码。 webbrowser 和 webserver 之间唯一的通信方式是使用 HTTP 请求。在网络浏览器中,可以通过在地址栏中输入 URL、单击(书签)链接、按下提交按钮或使用 JavaScript 执行 XMLHttpRequest 来触发 HTTP 请求。在网络服务器中,可以配置 Java/JSP(和 Servlet)代码,使其仅在某些 URL 上执行。例如。某个位置上的 JSP 页面,映射到某个 url-pattern 上的 Servlet,等等。

    简而言之,要让 JavaScript 访问 Java/JSP 变量,您只需要让 Java/JSP 它是一个 JavaScript 变量一样打印它们。要让 JavaScript 执行 Java/JSP 方法,您只需让 JavaScript 触发 HTTP 请求

    另请参阅:Communication between Java/JSP/JSF and JavaScript

    【讨论】:

      【解决方案3】:

      在 JSP 中定义的 canModify 值永远不会传递给 JavaScript。需要在 JavaScript 中重新定义变量,例如:

      <%
      if (canModify) {  // This is the JSP variable
      %>
        var canModify = true;  // This is the JavaScript variable
      <%
      } else {
      %>
        var canModify = false;
      <%
      }
      %>
      

      另一方面,您应该放弃 JSP scriptlet 并切换到 JSTL。

      【讨论】:

      • 如果canModify为真,那么我需要执行这个JSP语句UTIL.hasSecurity("PFTMODFY") && canModify;
      • @John:我错过了什么吗?您发布的代码与您在评论中提到的不同。
      • 是的...如果 canModify 为真,我可以执行任何 JSP 语句
      • @John:是的,你可以,但是它们将在服务器端执行并且只执行一次,所以如果你希望它在 JavaScript add 函数时执行被调用,它不会那样工作。
      猜你喜欢
      • 1970-01-01
      • 2017-10-06
      • 1970-01-01
      • 1970-01-01
      • 2012-02-05
      • 1970-01-01
      相关资源
      最近更新 更多