我想将一个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函数之间丢失。这样做的正确方法是什么?
答案 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控制台上看到错误。或者您可以查看页面的查看源,并查看它是如何打印出代码的。