JSP、JavaScript 和 Java 物件
我有一個 JSP,其中我正在使用一個 JavaScript 框架來使用 Google Visualization API 建立圖表。
我的 servlet 正在返回一個銷售 hashmap 對象,其中年份作為鍵,整數(銷售數字)作為值。
我的 JavaScript 使用 sales 物件將資料新增到 Google 圖表 API,該 API 用於建立我的圖表。程式碼:
sales = '<%= session.getAttribute("sales") %>';
我在 JavaScript 中的 sales 對象獲取了 hashmap,但它是一個長字串。我是否必須在 JavaScript 中解析它,還是有辦法自動將 hashmap 對象正確放入 JavaScript 的 sales 對象中?
答案#1
你不需要使用外部的 json 函式庫(但你可以!)——你可以直接將 json 輸出到一個 JavaScript 變數中,如:
<%@ 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>
答案#2
Java 和 Javascript 是完全不同的語言。Javascript 不知道如何處理一個 Java HashMap 對象(實際上在你的例子中你會得到 HashMap.toString() 的輸出)。你必須將它序列化成 Javascript 能理解的某種形式,例如 JSON。
