- PR -

Javascriptからアプレットへ、配列の受け渡し

1
投稿者投稿内容
いわ
会議室デビュー日: 2003/09/22
投稿数: 18
投稿日時: 2005-03-06 19:47
こんにちは、岩本と申します。

現在、HTML上にあるJavascriptから、同HTML上にあるアプレットへの受け渡しで困っています。
配列でなければ、問題なく渡すことが出来るのですが、配列を渡すにはどうすればいいのでしょうか。
[javascript]
コード:
<script language="javascript">
<!--
function dataSend(){
  var args = new Array(2);
  args[0] = "param1";
  args[1] = "param2";
  ap.testMethod(args);
}
//-->
</script>


[アプレット]
コード:
public void testMethod(Object[] args){
  System.out.println(args);
  outputString = args[0] + ":" + args[1];
  repaint();
}



なお、コンソールには
java.lang.Exception: testMethod{0} :no such method exists
が出ていますので、シグネチャの書き方が悪いのだとは思うのですが・・・。
takamaro
大ベテラン
会議室デビュー日: 2004/10/12
投稿数: 100
投稿日時: 2005-03-06 21:23
JavaScriptとAppletの連携ってのはやっかいですね。。。
特に問題が無いなら配列をひとつの文字列として扱うのが簡単です。
要するに、

JavaScript側
コード:

<script language="javascript">
<!--
function dataSend(){
  var args = new Array(2);
  args[0] = "param1";
  args[1] = "param2";
  var message = args[0] + "," + args[1];
  ap.testMethod(message);
}
//-->
</script>


Applet側
コード:

public void testMethod(String message){
  System.out.println(message);
  StringTokenizer st = new StringTokenizer(message,",");
  int count = st.countTokens();
  args = new String[count];
  for(int i=0; i<args.length ; i++) {
    args[i] = st.nextToken();
  }
  outputString = args[0] + ":" + args[1];
  repaint();
}


用途がわからないので既存のコードに生め込む形にしました。
無駄な処理になっているかもしれませんが、その辺は目的に合わせて修正して下さい。
いわ
会議室デビュー日: 2003/09/22
投稿数: 18
投稿日時: 2005-03-07 03:54
この方法を使う場合、キャラクタのエスケープが必要になりますが、
デリミタに\tを使ってみました。
(入力はFormからでした)

頂いた方法で、とりあえずクリアしました。
ありがとうございました。

1

スキルアップ/キャリアアップ(JOB@IT)