質問

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

 <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>
役に立ちましたか?

解決

JavaScriptを使用して呼び出される信頼されたアプレット内のメソッドは、次のようにラップする必要があります PrivilegedAction そして、のいずれかを使用して呼び出されます AccessController.doPrivileged(..) 亜種。

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

Plug-In2Jre(Oracleの1.6.0_10+JREなど)は、ローカルファイルシステムへのサンドボックス化されたアクセスを提供します。 JNLP API ファイルサービス(具体的には FileSaveService).を参照してください ファイルサービスのデモ。 例のために。

アプレット要素

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

他のヒント

ここにはいくつかの問題がある可能性があります。

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

2)呼び出そうとするメソッドがアプレットの子自体にない場合は、最初に問題のクラスのインスタンスを取得してから、そのメソッドを呼び出す必要があります。(電卓クラスの場合): ジェネラコディセタグプレ

ムーア情報

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top