網站搜尋

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。