是否可以使用 jsp 变量值来初始化 JQUERY 变量?

Posted

技术标签:

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

我有一些问题如下:

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

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

【问题讨论】:

【参考方案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\"); //"

以上是关于是否可以使用 jsp 变量值来初始化 JQUERY 变量?的主要内容,如果未能解决你的问题,请参考以下文章

jQuery - 用变量值替换文本中的单词

将变量值从1 jsp页面传输到另一个jsp年龄

jQuery在数组中拆分变量值

在jsp页面中,如何显示长变量值?

在Jquery中使用局部变量值

在 Javascript / jQuery 中无法检索 Django 模板变量值