是否可以使用 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<fmt />
来处理此类含义,并远离“Plain Old JSP”。
呃,fmt
标签库不关心 XSS。 c:out
和 fn: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】:你可以用这个 -
<input type="hidden" id="var1" value="<%=jspVar%>" />
然后在 jQuery 中使用 var1。
【讨论】:
假设变量是一个字符串并且不包含"字符。【参考方案4】:不直接。您必须将其设置到页面中的某个位置。
<script>
var fromJsp = '$theVar';
</script>
请注意,这对于复杂的对象可能会变得很棘手。也许 JSON 序列化可以成为你的朋友。
另请注意,这只是单向的。无法通过 JavaScript 设置 JSP 变量的值(因为 JavaScript 在 JSP 完成工作后运行客户端)。
【讨论】:
注意 XSS 的影响:String theVar = "hello'; alert(\"XSS\"); //"以上是关于是否可以使用 jsp 变量值来初始化 JQUERY 变量?的主要内容,如果未能解决你的问题,请参考以下文章