• 締切済み

JavaからJavascriptの配列を出力したい

JavaからJavascriptの配列を出力したいのですが、 appendした要素を区切り文字で区切って返す方法が わかりません。 <% StringBuffer js = new StringBuffer(); js.append("1"); js.append("2"); %> Javaで↑のように格納した後に、 下記のようにJavascriptの配列を出力したいです。 if(a = 1){ val=new Array("1,"2"); }

みんなの回答

  • ssr-y6
  • ベストアンサー率71% (5/7)
回答No.3

 下のJSPでは、文字列を区切り文字を入れつつ連結し、 それを再び区切り文字のところで別々の文字列に分解しています。 これは、画像を検索してそれを表示するJSPです。 <%@ page contentType="text/html; charset=UTF-8" %> <html> <head> <title>JSP to JavaScript</title> </head> <body> <% java.io.File RootDir = new java.io.File(pageContext.getServletContext().getRealPath("/")); java.io.File ImageFile[] = RootDir.listFiles(new java.io.FilenameFilter() { public boolean accept(java.io.File dir, String name) { if ((name.indexOf(".jpg") >= 0) || (name.indexOf(".jpeg") >= 0) || (name.indexOf(".png") >= 0)) return(true); else return(false); }; }); StringBuffer js = new StringBuffer(""); if (ImageFile != null) for (int i = 0; i < ImageFile.length; i ++) { js.append(ImageFile[i].getName()); js.append("|"); }; %> <script> var ImageFile = new Array('<% for (int j = 0, k; j < js.length(); j = k + 1) { if ((k = js.indexOf("|", j)) < 0) break; out.print(js.substring(j, k)); out.print("','"); }; %>'); for (var i = 0; ImageFile[i] != ""; i ++) { document.writeln("ImageFileName=" + ImageFile[i] + "<br>"); document.writeln("<img src='http://localhost:8080/minnaservlet/" + ImageFile[i] + "'><br>"); }; </script> </body> </html>

  • tyoufu
  • ベストアンサー率28% (19/67)
回答No.2

JavaScriptへ配列と考えずに、ブラウザでソースを見た時に val=new Array("1","2"); と表示されていればいいのですから <% String js = new String[2]; js[0] = "1"; js[1] = "2"; String strArray = "\"" + js[0] + "\",\"" +js[1] + "\""; %> if(a=1){ val=new Array(<%= strArray %>); } でもいいかと思いますけど。 けど、String[]の個数を固定としているのであまりいい例題ではないですね。 あと、出力する文字列への代入方法もいい方法ではないんでしょうね(^^; こんなこと書いてますけど、もしJavaの方がJSPでないんでしたら参考にならないかもしれませんね。

  • tyoufu
  • ベストアンサー率28% (19/67)
回答No.1

多分 StringBuffer の利用の方法を勘違いされていると思うんですが。 js.append("1"); js.append("2"); とするとつバッファの内容は 「 12 」となるとります... Java側で配列のように持たせた値をJavaScript側でも配列として利用出来るようにしようとされているのですか?

matchori
質問者

お礼

配列ではないのですね。ありがとうございます。 やりたいことは、Beanの内容を次々とgetして Jascriptの配列を作成したいです。 よろしくお願いします。

関連するQ&A

専門家に質問してみよう