将Java servlet中的字符串传递给jsp到js

时间:2013-01-29 18:14:00

标签: javascript jsp servlets

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

的servlet

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()返回正确的值。因此它必须在转发和init函数之间丢失。这样做的正确方法是什么?

3 个答案:

答案 0 :(得分:1)

您正在设置属性,但检索的参数为not the same thing。 我想你应该试试expression language

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

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

答案 1 :(得分:0)

看看你是否发现了差异,

  

了request.setAttribute( “jsonString”,json.toString());

     

的request.getParameter( “jsonString”)

应该是

  

request.getAttribute( “jsonString”)

答案 2 :(得分:0)

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