【问题标题】:Is it possible to use jsp variable value to initialize JQUERY variable?是否可以使用 jsp 变量值来初始化 JQUERY 变量?
【发布时间】:2011-01-26 17:28:56
【问题描述】:

我有一些问题如下:

  1. 如何在 JQUERY 代码中使用 JSP 变量/数组?在这里,我们拥有的 JQUERY 代码存储在单独的 .js 文件中,并且该文件包含在 JSP 文件中。

  2. 其实我想用JSP变量初始化JQUERY数组。 所以请指导我完成这个任务。

【问题讨论】:

    标签: java javascript jquery jsp servlets


    【解决方案1】:

    在普通的旧 JSP 中

    <script>
      var someText = "<%= myBean.getText() %>";
    </script>
    

    使用 EL(表达式语言)

    <script>
      var someText = "${myBean.text}";
    </script>
    

    使用 Struts

    <script>
      var someText = '<bean:write name="myBean" property="text" />';
    </script>
    

    使用 JSTL

    <script>
      var someText = '<c:out value="${myBean.text}" />';
    </script>
    

    本质上,可以从 JSP 填充 Javascript 对象。不要忘记,scriptlet 和标签只是被渲染为 HTML/XHTML,所以 JS 不能与标签对话,反之亦然。

    【讨论】:

    • 第二个例子根本没有使用 JSTL。它被称为 EL(表达语言)。
    • 但 EL 是 JSTL 的一部分 - jcp.org/aboutJava/communityprocess/first/jsr052(附录 A):)
    • 当这个答案浮到顶部时,我将从另一个答案重复我的评论,特别是对于“普通旧 JSP”解决方案:注意 XSS 影响:String theVar = "hello'; alert(\ "XSS\"); //"
    • True Olaf...因此最好使用 JSTL &lt;fmt /&gt; 来处理此类含义,并远离“Plain Old JSP”。
    • 呃,fmt 标签库不关心 XSS。 c:outfn:escapeXml 可以。
    【解决方案2】:

    Java/JSP 在服务器机器的 webserver 中运行并生成 HTML/CSS/JS 代码。服务器机器向客户端机器发送 HTML/CSS/JS 代码。 HTML/CSS/JS 在客户端机器的网络浏览器中运行。右键页面查看源码,看不到任何Java/JSP代码。

    JSP 是一种视图技术,它提供了用于编写 HTML/CSS/JS 的模板以及使用 taglibs/EL 与后端 Java 数据交互以控制页面流和访问数据的能力。

    每当您想让 JavaScript 访问 Java/JSP 变量时,您只需编写一个 Java 变量就好像它是一个 JavaScript 变量。

    <script>var foo = '${bean.foo}';</script>
    

    就是一个很好的例子。请注意,JavaScript 本身需要这些引号,而不是 JSP/EL。假设${bean.foo}返回bar,那么生成的到达客户端的HTML/CSS/JS页面最终会是这样的:

    <script>var foo = 'bar';</script>
    

    当您想让 Java/JSP 访问 JavaScript 变量时,您需要做的就是让 JavaScript 触发 (XML)HTTP 请求。更多背景信息和示例可以在this article找到。

    【讨论】:

      【解决方案3】:

      你可以用这个 -

      &lt;input type="hidden" id="var1" value="&lt;%=jspVar%&gt;" /&gt;

      然后在 jQuery 中使用 var1。

      【讨论】:

      • 假设变量是一个字符串并且不包含"字符。
      【解决方案4】:

      不直接。您必须将其设置到页面中的某个位置。

      <script>
         var fromJsp = '${theVar}';
      </script>
      

      请注意,这对于复杂的对象可能会变得很棘手。也许 JSON 序列化可以成为你的朋友。

      另请注意,这只是单向的。无法通过 JavaScript 设置 JSP 变量的值(因为 JavaScript 在 JSP 完成工作后运行客户端)。

      【讨论】:

      • 注意 XSS 的影响:String theVar = "hello'; alert(\"XSS\"); //"
      猜你喜欢
      • 2011-01-21
      • 1970-01-01
      • 2018-02-20
      • 1970-01-01
      • 1970-01-01
      • 2020-09-10
      • 2014-07-26
      • 2016-02-19
      • 1970-01-01
      相关资源
      最近更新 更多