当前位置: 首页 > 面试题库 >

在JavaScript中访问Java / Servlet / JSP / JSTL / EL变量

百里君博
2023-03-14
问题内容

我在JSP中有一个表格。我必须基于请求对象(来自servlet)填充它。如何使用Java
Script访问请求对象属性,或者可以建议我其他更好的方法来动态填充表单?


问题答案:

您需要认识到Java / JSP仅仅是HTML/CSS/JS代码生产者。因此,您要做的就是让JSP像打印JavaScript变量一样打印Java变量,并且所生成的HTML / JS代码输出在语法上是有效的。

假设EL范围内Java变量在EL范围内可用,以下${foo}是一些如何打印它的示例:

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



<script>someFunction('${foo}');</script>



<div onclick="someFunction('${foo}')">...</div>

假设Java变量具有value "bar",那么JSP最终将生成此HTML,您可以通过右键单击Webbrowser中的 View Source
来验证该HTML :

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



<script>someFunction('bar');</script>



<div onclick="someFunction('bar')">...</div>

请注意,这些单引号是强制性的,以便表示JS中的字符串类型的变量。如果您使用var foo = ${foo};它,则它将打印var foo =bar;,当您尝试在JS代码中进一步访问它时,它可能会导致“ bar is undefined”错误(您可以在浏览器的Webhtml" target="_blank">开发人员工具集的JS控制台中看到JS错误)。可以通过在Chrome / FireFox23 + / IE9+中按F12打开)。还要注意,如果变量代表数字或布尔值(不需要用引号引起来),那么它将正常工作。

如果变量恰好来自用户控制的输入,请记住要考虑XSS攻击漏洞和JS逃逸。在我们的ELWiki页面底部附近,您可以找到一个示例,该示例如何创建自定义EL函数,该函数转义Java变量以在JS中安全使用。

如果变量比较复杂,例如Javabean或其列表或映射,则可以使用许多可用的JSON库之一将Java对象转换为JSON字符串。这是假设Gson的示例。

String someObjectAsJson = new Gson().toJson(someObject);

请注意,通过这种方式,您不再需要将其打印为带引号的字符串。

<script>var foo = ${someObjectAsJson};</script>


 类似资料:
  • JSP/JSTL/Servlet 1. JSP/JSTL/Servlet Tips 现在的project一般选Servlet2.5, JSP 2.1 和 JSTL1.2. 1.1 尽量使用JSP2.0的EL而不是JSTL,使页面看起来更像普通html页面。 比如: <input type="text" id="loginName" name="loginName" size="25" value=

  • 问题内容: Java的PHP等效于什么?在网上搜索了一个小时之后,我仍然走得很近。 问题答案: 您的对象具有可用于获取参数值的方法。 http://java.sun.com/javaee/5/docs/api/javax/servlet/ServletRequest.html#getParameter(java.lang.String)

  • 嗨,我试图在会话中遍历对象列表,再次使用JSTL遍历会话中的每个对象。下面是jsp代码 下面是node类 在循环这些项时,我遇到以下异常 为什么它找不到nodes属性?

  • 这真的让我很惊讶!我的JSP中有以下代码。 这段代码一直有效,直到我重构了SlideShow类,并公开了所有属性,删除了getter/setter。所以在我看来,EL只与getter一起工作,而不是直接属性访问。这是真的吗?有没有办法让它使用直接属性而不是通过getter?

  • 问题内容: 可能重复: 如何在JavaScript或jQuery中访问PHP变量,而不是?php echo $variable? 有什么方法可以访问JavaScript中的PHP变量吗? 我在PHP中有一个变量,想要在JavaScript变量中获取其值。 问题答案: 您不能,您必须做类似的事情 您也可以使用AJAX加载 犀牛是对的,为简洁起见,摘要缺少一种类型。 另外,请注意,如果有引号,它将破坏

  • 问题内容: 我正在开发Node.js应用程序(这是一个游戏)。在这种情况下,我设置了一些代码,以便当一个人访问索引并选择一个房间时,他将被重定向到适当的房间。 现在,使用Express v2.5.8可以做到这一点: 在board.ejs中,我可以使用以下代码访问gameState方式: 有没有办法将其导入到JavaScript逻辑中?我希望能够做类似的事情,然后能够做我想做的任何事情-访问其变量,