Andreas Rozek Lesehinweise letzte Änderungen Gästebuch-Eintrag Mitteilungen an den Autor  English Version  zur Leitseite zum vorherigen Thema zum nächsten Thema  zur ersten Seite zur vorherigen Seite zur nächsten Seite

Rhino_13 - Aufruf von JavaScript-Funktionen

"Rhino_13" ruft von Java aus JavaScript-Funktionen und -Methoden auf.

Zu diesem Zweck werden im JavaScript-Teil des Beispieles eine Reihe von Funktionen definiert (je eine für die verschiedenen primitiven Java-Datentypen sowie Zeichenketten, Arrays und Objekte). Jede Funktion nimmt ein Argument entgegen und gibt dies nach einer Modifikation umgehend wieder zurück. Außerdem wird ein JavaScript-Objekt mit einer Reihe von Datenfeldern und einer Methode definiert, die von Java aus aufgerufen wird und die zugehörige Objekt-Instanz modifiziert.

Das Programm wird ohne weitere Parameter aufgerufen

  java Rhino_13

und liefert folgende Ausgabe:
 

  Rhino_13 - invokes JavaScript functions and methods from within Java

  returnBoolean: got true, returned (java.lang.Boolean) false
  returnByte:    got 1, returned (java.lang.Double) 2.0
  returnShort:   got 2, returned (java.lang.Double) 3.0
  returnInteger: got 3, returned (java.lang.Double) 4.0
  returnLong:    got 4, returned (java.lang.Double) 5.0
  returnFloat:   got 5, returned (java.lang.Double) 6.0
  returnDouble:  got 6, returned (java.lang.Double) 7.0
  returnString:  got "(anything)", returned (java.lang.String) "(ANYTHING)"
  returnArray:   got 0, 1, 2, 3, returned ([I) 1, 2, 3, 4
  returnObject:  got true, 1, 2, 3, 4, 5.0, 6.0, "(anything)"
    returned (Rhino_13$GossipObject) false, 2, 3, 4, 5, 6.0, 7.0, "(ANYTHING)"

  UserObject.update(false, 2, 3, 4, 5, 6, 7, "(another thing)", [0, 1, 2, 3],
    {aBoolean:true, aLong:4, aString:(anything), anInteger:3, aDouble:6, aFloat:5, aShort:2, aByte:1})
   - settings before update: (reported by JavaScript)
     aBoolean:  true
     aByte:     1
     aShort:    2
     anInteger: 3
     aLong:     4
     aFloat:    5
     aDouble:   6
     aString:   "(anything)"
     anArray:   true, 1, (anything)
     anObject:  a:true, b:1, c:(anything)
   - settings after update: (reported by Java)
     aBoolean:  false
     aByte:     2
     aShort:    3
     anInteger: 4
     aLong:     5
     aFloat:    6.0
     aDouble:   7.0
     aString:   "(another thing)"
     anArray:   [0, 1, 2, 3]
     anObject:  {true, 1, 2, 3, 4, 5.0, 6.0, "(anything)"}


Die Programmausgabe birgt freundlicherweise keine Überraschungen: der Aufruf der JavaScript-Funktionen von Java aus ist zwar etwas mühsam (zunächst muß das Funktionsobjekt aufgesucht, dann eine Argumentliste zusammengestellt und schließlich der Funktionsaufruf abgesetzt werden), doch Rhino sorgt selbst für evtl. erforderliche Typkonvertierungen und liefert die Ergebnisse in einem passenden Java-Datentyp zurück.

Quelltexte

Alle hier vorgestellten Programme und Skripte sind im Quelltext verfügbar:

Haftungsausschluß

Bitte beachten Sie auch den Haftungsausschluß des Autors!

http://www.Andreas-Rozek.de/Rhino/Acquainting/Rhino_13.html    (letzter Stand: 06.04.2002)