1

Excel ファイルを作成し、Java アプレットを使用してローカル ファイル システムに保存しようとしています。アプリケーションに署名した後、アプレットを直接呼び出すことでファイルを正常に作成できます。ただし、javascript からメソッドを呼び出そうとすると、エラー メッセージが表示されずに失敗しました。Javaメソッドがjavascriptから呼び出されるのを防ぐためのポリシー制御があるかどうか疑問に思っていますか?

 <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>
4

2 に答える 2

4

JavaScript を使用して呼び出される信頼できるアプレットのメソッドは、バリアントPrivilegedActionの 1 つを使用して でラップし、呼び出す必要があります。AccessController.doPrivileged(..)

サンドボックス化されたファイル システム アクセス

Plug-In 2 JRE (たとえば、Oracle の 1.6.0_10+ JRE) は、JNLP APIファイル サービス (具体的にはFileSaveService) を使用して、ローカル ファイル システムへのサンドボックス アクセスを提供します。ファイル サービスのデモをご覧ください。たとえば。

アプレット要素

JS によって呼び出されるアプレットは、それがscriptableHTML 内にあることを宣言する必要があります。その「HTML」の取得に関しては、それを記述する最良の方法は、Oracle のdeployJava.jsを使用することです。各ブラウザで現在知られている最善の方法でアプレット要素を記述するだけでなく、JRE の存在 (Java がインストールされているか?) と最小バージョン (JRE がこのアプレットを実行するために必要な最小バージョンか?) をチェックします。

于 2011-10-20T21:49:57.770 に答える
1

ここにはいくつかの問題があるかもしれません。

1) アプレットには JavaScript デプロイ方法を使用する必要があります (リンクを参照)。

2) 呼び出そうとするメソッドがアプレットの子自体にない場合は、まず問題のクラスのインスタンスを取得してから、そのメソッドを呼び出す必要があります。たとえば、(Calculator クラスの場合):

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

モール情報

于 2011-10-20T06:41:40.333 に答える