请注意,为了在js中表示字符串类型的变量,这些单引号是必需的。如果你用过 var foo = ${foo}; 相反,它会打印出来 var foo = bar; ,当您尝试在js代码中进一步访问它时,可能会出现“bar is undefined”错误(您可以在浏览器的web开发人员工具集的js控制台中看到js错误,您可以在chrome/firefox23+/ie9+中按f12打开该工具集。还要注意的是,如果变量表示一个数字或布尔值,不需要加引号,那么它就可以正常工作。 如果变量恰好来自用户控制的输入,那么请记住要考虑xss攻击漏洞和js转义。在elwiki页面的底部,您可以找到一个示例,说明如何创建一个自定义el函数,该函数转义java变量,以便在js中安全使用。 如果变量稍微复杂一点,例如javabean、其列表或Map,那么可以使用许多可用的json库中的一个将java对象转换为json字符串。下面是一个假设gson的例子。
String someObjectAsJson = new Gson().toJson(someObject);
4条答案
按热度按时间2izufjch1#
如果您是基于http请求中的参数预填充表单字段,那么为什么不在jsp的服务器端执行此操作。。。而不是在客户端使用javascript?在jsp中,它看起来像这样:
在客户端,javascript实际上没有“请求对象”的概念。您几乎必须自己手动解析查询字符串才能获得cgi参数。我想那不是你真正想做的。
k2arahey2#
在jsp页面中:
在javascipt页中使用以下方法访问此值:
我在项目外部添加了javascript页面。
iqxoj9l93#
您需要认识到java/jsp仅仅是一个html/css/js代码生成器。因此,您只需让jsp打印java变量,就好像它是javascript变量一样,并且生成的html/js代码输出在语法上是有效的。
前提是java变量在el范围内可用
${foo}
,下面是几个如何打印的示例:假设java变量具有
"bar"
,然后jsp将最终生成此html,您可以通过右键单击在webbrowser中查看源代码进行验证:请注意,为了在js中表示字符串类型的变量,这些单引号是必需的。如果你用过
var foo = ${foo};
相反,它会打印出来var foo = bar;
,当您尝试在js代码中进一步访问它时,可能会出现“bar is undefined”错误(您可以在浏览器的web开发人员工具集的js控制台中看到js错误,您可以在chrome/firefox23+/ie9+中按f12打开该工具集。还要注意的是,如果变量表示一个数字或布尔值,不需要加引号,那么它就可以正常工作。如果变量恰好来自用户控制的输入,那么请记住要考虑xss攻击漏洞和js转义。在elwiki页面的底部,您可以找到一个示例,说明如何创建一个自定义el函数,该函数转义java变量,以便在js中安全使用。
如果变量稍微复杂一点,例如javabean、其列表或Map,那么可以使用许多可用的json库中的一个将java对象转换为json字符串。下面是一个假设gson的例子。
请注意,这样您就不需要再将其打印为带引号的字符串了。
另请参见:
我们的jspwiki页面-请参阅“javascript”一章。
如何在jsp中转义javascript?
调用servlet并从javascript调用java代码以及参数
如何使用servlet和ajax?
h9vpoimq4#
在jsp文件中:
然后,在上述代码之后声明的.js文件将可以使用此常量变量。
java是一个包含名为constant的静态常量的java文件。
我的场景是,我需要属性文件中的一个常量,所以我没有为javascript构建属性文件,而是这样做了。