2009-10-15 25 views
6

私はJSPの初心者です。 Google Visualization APIを使用してチャートを作成するためにJavaScriptフレームワークを使用しているJSPがあります。JSP、JavaScript、およびJavaオブジェクト

私のサーブレットはyearをキーとし、整数(売上番号)を値とする販売用hashmapオブジェクトを返しています。

私のjavascriptは、売上オブジェクトを使用してチャートを作成するGoogleチャートAPIにデータを追加します。 コード:

sales = '<%= session.getAttribute("sales") %>'; 

販売オブジェクト私のjsの中には、ハッシュマップを取得しますが、それは長い文字列です。私はjavascriptでそれを解析する必要がありますか?それともjavascriptの販売オブジェクトに自動的にhashmapオブジェクトを配置する方法ですか?

答えて

2

JavaとJavascriptは全く異なる言語です。 Javascriptは、Java HashMapオブジェクトと何が関係しているのかわかりません(実際はあなたの例ではHashMap.toString()の出力を得ます)。あなたはJavascriptが理解するいくつかの形式にシリアル化する必要があります。 JSON。コードの

+0

その優れた代わりに地図のJSON文字列を返すために、最初はそれが好き。 JavaScriptでやっても大丈夫です。 +1 –

0

すべてこの作品

sales = '<%= session.getAttribute("sales") %>'; 

んが、印刷は、HTML出力にsession.getAttribute("sales")の値です。出力をフォーマットする方法についてのロジックがなければ、Javaはそのオブジェクト上で.toString()を呼び出すだけです。デフォルトの実装(オーバーライドしない限り)は通常[email protected]のような出力になります。

これは、HTMLドキュメントにオブジェクト/データ構造をどのように出力するかについて、Java側でいくつかのロジックを記述する必要があるということです。

1

JSONを試してください.jsonでJavaオブジェクトを記述できるようになります(Javaスクリプトオブジェクト表記)。こうして、記述したオブジェクトをjavascriptに直接ロードできます。

+0

はい、私はそれも好きです。最初はMapの代わりにJSON文字列を返すほうがよいでしょう。 +1 –

4

あなたは文句を言わない外部のJSONライブラリを使用する必要があります(ただしでした!) - あなたは直接のようなjavascriptの変数にJSONをプリントアウトすることができます。

<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %> 
<script> 
(function(){ 
    var sales = { 
    <c:forEach var="entry" items="${requestScope['sales'].entrySet}" varStatus="counter"> 
     '${entry.key}' : ${entry.value} //outputs "2000" :1234 , 
     <c:if test="${!counter.last}">, </c:test> 
    </c:foreach> 
    }; 
    //js code that uses the sales object 
    doStuffWith(sales); 
})() 
</script> 
+0

最初にMapの代わりにJSON文字列を返すほうがよい。それが好き。これも大丈夫です。 +1 –

+0

JSON文字列を返す際の問題は、コントローラ内のデータの計算とデータの表示を結びつけていることです。 マップを返すことで、次のレイヤーがクライアントに適したものに変換できるという利点があります(マップは、コントローラレイヤーとビューレイヤーの間の通信に使用できる共通のデータ構造であると仮定します)。 – Chii

関連する問題