Frage

Ich versuche, eine Excel-Datei zu erstellen und mit dem Java-Applet im lokalen Dateisystem zu speichern.Nach dem Signieren der Anwendung kann ich die Datei erfolgreich erstellen, indem ich das Applet direkt aufrufe.Wenn ich jedoch versuche, die Methode aus Javascript aufzurufen, schlug dies ohne Fehlermeldung fehl.Ich frage mich, ob es eine Richtliniensteuerung gibt, die verhindert, dass die Java-Methode aus Javascript aufgerufen wird.

 <html>
<script language="JavaScript">
function createExcel()
{
    document.excel.createExcel();

    document.excel.setMessage("hello world from js");
}
</script>
<body>
<input type="button" value="Generate Excel" onclick="createExcel()" />
<applet id='applet' name='excel' archive='Office.jar,poi-3.7-20101029.jar' code='com.broadridge.Office.class' width='100' height='100'></applet>
</body>
</html>

War es hilfreich?

Lösung

Methoden in einem vertrauenswürdigen Applet, die mit JavaScript aufgerufen werden, müssen in eine PrivilegedAction und wird mit einem der AccessController.doPrivileged(..) Varianten.

Sandbox-Dateisystemzugriff

Plug-In 2-JREs (z. B. Oracle 1.6.0_10 + JRE) bieten Sandbox-Zugriff auf das lokale Dateisystem über JNLP-API -Dateidienste (insbesondere die FileSaveService ). Ein Beispiel finden Sie in der Dateidienst-Demo .

Applet-Element

Ein von JS aufgerufenes Applet sollte deklarieren, dass es sich im HTML um scriptable handelt. Um dieses 'HTML' zu erhalten, schreiben Sie es am besten mit Oracle deployJava.js . Es wird nicht nur das Applet-Element so geschrieben, wie es derzeit für jeden Browser am besten bekannt ist, sondern auch die JRE-Präsenz (ist Java installiert?) Und die Mindestversion (ist die JRE die Mindestversion, die zum Ausführen dieses Applets erforderlich ist?) Überprüft.

Andere Tipps

Hier können mehrere Probleme auftreten.

1) Sie müssen die JavaScript-Bereitstellungsmethode für das Applet verwenden (siehe Link).

2) Wenn sich die Methode, die Sie aufrufen möchten, nicht im Applet-Kind selbst befindet, müssen Sie zuerst eine Instanz der betreffenden Klasse abrufen und dann deren Methode aufrufen, z.(für die Rechnerklasse):

var calculator = mathApplet.getCalculator();
calculator.setNums(numA, numB);

Moor info

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top