将字符串从 Java servlet 传递给 jsp 再到 js

pass String from Java servlet to jsp to js

本文关键字:jsp 再到 js 字符串 Java servlet      更新时间:2023-09-26

我想将字符串从 Servlet 传递到 jsp 页面,在那里它必须传递给驻留在外部.js中的 init 函数。这就是我到目前为止得到的:

奴役

request.setAttribute("jsonString", json.toString());
RequestDispatcher dispatcher = request.getRequestDispatcher("graph.jsp");
dispatcher.forward(request, response);

.jsp

<body onload="init('<%= request.getParameter("jsonString") %>');">

.js

function init(jsonString){
    var json = jsonString;

不幸的是,我在 init 函数中收到的唯一内容是空。我确保json.toString()返回正确的值。因此,它必须在转发和初始化函数之间丢失。正确的方法是什么?

您正在设置一个属性,但检索一个参数,这不是一回事。我认为你应该尝试表达语言

<body onload="init('${jsonString}')">

你也可以使用 <%= request.getAttribute("jsonString") %> ,但对我来说,它的可读性较差,而 EL 更简洁。

看看你是否发现了差异,

request.setAttribute("jsonString",json.toString());

request.getParameter("jsonString")

它应该是

request.getAttribute("jsonString")

将 request.getParameter 更改为 request.getAttribute 将获得 jsonstring,但如果字符串中有新行或任何其他特殊字符(如单引号 ('),您可能会收到 javascript 错误。由于javascript错误,您将很难使用"警报()"或在页面上打印为html进行调试。我的建议是使用 Firefox 的 firebug 插件,您会在 firebug 控制台上看到错误。或者,您可以查看页面的源代码,并查看它如何打印出代码。