- 締切済み
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"); }
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- ssr-y6
- ベストアンサー率71% (5/7)
下の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)
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)
多分 StringBuffer の利用の方法を勘違いされていると思うんですが。 js.append("1"); js.append("2"); とするとつバッファの内容は 「 12 」となるとります... Java側で配列のように持たせた値をJavaScript側でも配列として利用出来るようにしようとされているのですか?
お礼
配列ではないのですね。ありがとうございます。 やりたいことは、Beanの内容を次々とgetして Jascriptの配列を作成したいです。 よろしくお願いします。