6 Stimmen

JSP, JavaScript und Java-Objekte

Ich habe eine JSP, wo ich mit einem Javascript-Framework, um ein Diagramm mit der Google Visualization API zu erstellen.

Mein Servlet gibt ein Verkaufs-Hashmap-Objekt mit Jahr als Schlüssel und Ganzzahl (Verkaufsnummer) als Wert zurück.

Mein Javascript verwendet das Verkaufsobjekt, um Daten zur Google Chart API hinzuzufügen, die mein Diagramm erstellt. Code:

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

Das Verkaufsobjekt in meiner Js erhält die Hashmap, aber es ist eine lange Zeichenfolge. Muss ich es in meinem Javascript parsen oder gibt es eine Möglichkeit, es wird automatisch das Hashmap-Objekt richtig in das Javascript-Verkaufsobjekt?

4voto

Chii Punkte 14068

Sie brauchen keine externe json-Bibliothek zu verwenden (aber Sie könnten!) - Sie können das json direkt in eine Javascript-Variable ausdrucken wie:

<%@ 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>

2voto

Asaph Punkte 153684

Java und Javascript sind völlig unterschiedliche Sprachen. Javascript weiß nicht, was es mit einem Java-HashMap-Objekt anfangen soll (in Ihrem Beispiel erhalten Sie die Ausgabe von HashMap.toString()). Sie müssen es in eine Form serialisieren, die von Javascript verstanden wird, z.B. JSON.

1voto

OscarRyz Punkte 189898

Versuchen Sie es mit JSON die es Ihnen ermöglicht, Ihr Java-Objekt in json ( java script object notation ) zu beschreiben. Auf diese Weise können Sie das beschriebene Objekt direkt in javascript laden.

0voto

matt b Punkte 135206

Dieses ganze Stück Code

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

druckt den Wert von session.getAttribute("sales") für die HTML-Ausgabe. Ohne jegliche Logik Ihrerseits, wie die Ausgabe formatiert werden soll, ruft Java lediglich .toString() auf dieses Objekt - was bei der Standardimplementierung (sofern Sie sie nicht überschreiben) normalerweise zu einer Ausgabe führt, die wie folgt aussieht classname@1234abc12 .

Die kurze Antwort lautet also: Ja, Sie müssen auf der Java-Seite eine Logik einbauen, wie Ihr Objekt / Ihre Datenstruktur in das HTML-Dokument ausgegeben werden soll.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X