0

サーブレットから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()が正しい値を返すことを確認しました。したがって、転送とinit関数の間で失われる必要があります。これを行う正しい方法は何ですか?

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 に答える