2016-11-26 2 views
0

私のarraylistのデータをjavaの配列にjsの配列に送信したいと思います。私はウェブ上で検索したが、私はまだそれを行う方法がわからない。私は誰かがjsとjavacodeを一緒に書くことによってそれをやろうとしたのを見ました。私はそれを別にどうすればいいですか?つまり、Javaコードとjsコードは別々です。下の画像をご覧ください。 私はjavaFxまたは何かをしたいはjspのようなインターネットを経由する必要はありません。 ありがとうございます。arraylistのデータをjavascriptの配列に送る

js and java code are seperate

import javafx.scene.Scene; 
import javafx.scene.control.Button; 
import javafx.scene.layout.VBox; 
import javafx.scene.web.WebEngine; 
import javafx.scene.web.WebView; 
import javafx.stage.Stage; 
import java.util.ArrayList; 
import javafx.application.Application; 
import javafx.event.ActionEvent; 
import javafx.event.EventHandler; 


public class SendData extends Application{ 
    Button send; 


    @Override 
    public void start(Stage stage) throws Exception { 
     WebView myWebView = new WebView(); 
     WebEngine engine = myWebView.getEngine(); 
     ArrayList<String> arr = new ArrayList<String>(); 
     arr.add("string1"); 
     arr.add("string2"); 
     arr.add("string3"); 
     arr.add("string4"); 
     arr.add("string5"); 


     send = new Button("send_to_js"); 
     send.setOnAction(new EventHandler<ActionEvent>() { 

      @Override 
      public void handle(ActionEvent event) { 
       /*?*/ 
      } 

     }); 
     VBox vb = new VBox(); 
     vb.getChildren().addAll(myWebView, send); 
     Scene scene = new Scene(vb, 500, 500); 
     stage.setScene(scene); 
     stage.show(); 
    } 

    public static void main(String[] args) { 
     launch(args); 

    } 
} 




$(document).ready(function() { 
    /* how do I put the data into the array*/ 
    var receiver = [...]; 
}); 

答えて

0

うん、JavaJavascriptは、2種類の言語であり、あなたが直接、両方の世界の間を自由に周りのJavaデータ構造を渡すためのではできません。

このような問題を解決するための通常の方法は、シリアル化によるものです。つまり、javaの世界のデータをいくつかのデータ形式にカプセル化します。 XMLまたはJSONを開き、javascriptプロセスからシリアル化されたデータを解析してJavascriptオブジェクトにします。

例えば、単純なJavaクラスで "color"と "Brand"というプロパティを持つCarを呼び出し、Carの配列を持っているとします。

Car[] cars = new Car[3]; 

JSONでこれを表すことができます。

{ 
    cars: [ 
     0: { brand: "Honda", color: "Red" }, 
     1: { brand: "BMW", color: "Black" }, 
     2: { brand: "Toyota", color: "Yellow" } 
    ] 
} 

このJSONドキュメントでは、オブジェクトを含むJavaScript配列に解析することができます。

JSONドキュメントを1つのプロセスから別のプロセスに、またはmacihneから機械に渡す方法については、あなたがそれを行う方法はあります。

JSONデータをフラットファイルとしてシリアル化し、別の側からコンテンツを読み取ることも、通常はウェブサービス技術を利用することもできます。

これが役立つかどうか教えてください。

1

私は少しツーナッシングのJavaFXについては知っているが、あなたはWebEngine.executeScriptを使用することができますか?

// JSON-ify the ArrayList 
String json = "["; 
for (int i = 0; i < arr.size(); i++) { 
    if (i != 0) json += ","; 
    json += "'"+arr[i]+"'"; // NOTE: this doesn't escape special characters in arr[i] 
} 
json += "]"; 

// pass it to some JS function? 
engine.executeScript("someFunction("+json+")"); 
関連する問題