0

我想将一个 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 函数中收到的唯一内容是 null。我确保 json.toString() 返回正确的值。所以它必须在转发和初始化函数之间丢失。这样做的正确方法是什么?

4

3 回答 3

1

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

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

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

于 2013-01-29T18:18:07.060 回答
0

看看有没有区别

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

request.getParameter("jsonString")

它应该是

request.getAttribute("jsonString")

于 2013-01-29T18:20:20.190 回答
0

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

于 2013-01-29T18:52:51.763 回答